使用 Grafana、collectd 和 InfluxDB 打造現代監控系統

想打造 New Relic 那樣漂亮的實時監控系統咱們只須要 InfluxDB/collectd/Grafana 這三個工具,這三個工具的關係是這樣的:html

採集數據(collectd)-> 存儲數據(InfluxDB) -> 顯示數據(Grafana)。前端

  • InfluxDB 是 Go 語言開發的一個開源分佈式時序數據庫,很是適合存儲指標、事件、分析等數據,看版本號(v0.8.8)就知道這個項目還很年輕;
  • collectd 就不用介紹了吧,C 語言寫的一個系統性能採集工具;
  • Grafana 是純 Javascript 開發的前端工具,用於訪問 InfluxDB,自定義報表、顯示圖表等。

下面的安裝和配置步驟在 Ubuntu 14.04 Server 64bit 版上完成。升級整個系統後重啓:python

  1. $ sudo apt-get update
  2. $ sudo apt-get upgrade
  3. $ sudo reboot

安裝 InfluxDB

InfluxDB 是 Go 寫的,不依賴任何其餘包或庫,很乾淨。安裝很容易:linux

  1. $ wget https://s3.amazonaws.com/influxdb/influxdb_latest_amd64.deb
  2. $ sudo dpkg -i influxdb_latest_amd64.deb

啓動 InfluxDB:git

  1. $ sudo /etc/init.d/influxdb start
  2. Setting ulimit -n 65536
  3. Starting the process influxdb [ OK ]
  4. influxdb process was started [ OK ]

啓動後打開 web 管理界面 http://192.168.2.183:8083/ 默認用戶名和密碼是 root 和 root. InfluxDB 的 Web 管理界面端口是 8083,HTTP API 監聽端口是 8086,若是須要更改這些默認設定,修改 InfluxDB 的配置文件 /opt/influxdb/current/config.toml 後重啓 InfluxDB 就能夠了。github

InfluxDB 

InfluxDBweb

在剛安裝好的 InfluxDB 上建立一個名爲 collectd 的數據庫,能夠用命令行建立,也能夠用 Web 管理界面操做:數據庫

  1. $ curl "http://192.168.2.183:8086/db?u=root&p=root" -d "{\"name\": \"collectd\"}"

InfluxDB

InfluxDBapi

安裝 collectd

安裝 collectd:瀏覽器

  1. $ sudo apt-get install collectd

配置 collectd 爲客戶端,收集到數據後直接發給 InfluxDB:

  1. $ sudo vi /etc/collectd/collectd.conf
  2. ...
  3. LoadPlugin network
  4. ...
  5. <Plugin network>
  6. Server "192.168.2.183" "25826"
  7. </Plugin>
  8. ...

重啓 collectd:

  1. $ sudo /etc/init.d/collectd restart

InfluxDB 如今自帶一個 collectd 插件來獲取 collectd 客戶端發來的數據,之前可沒這麼方便哦,0.8.4 版本之前只能經過 influxdb-collectd-proxy 這樣的第三方程序來鏈接 collectd 和 InfluxDB. 若是你檢查一下服務器上打開的端口就會發現 influxdb 插件啓動了一個 25826 端口,若是發現 InfluxDB 數據庫裏沒有(收集到)數據,務必檢查這個 25826 端口是否正常啓動了:

  1. $ sudo netstat -tupln
  2. Active Internet connections (only servers)
  3. Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
  4. tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 622/sshd
  5. tcp6 0 0 :::8086 :::* LISTEN 668/influxdb
  6. tcp6 0 0 :::22 :::* LISTEN 622/sshd
  7. tcp6 0 0 :::8090 :::* LISTEN 668/influxdb
  8. tcp6 0 0 :::8099 :::* LISTEN 668/influxdb
  9. tcp6 0 0 :::8083 :::* LISTEN 668/influxdb
  10. udp6 0 0 :::25826 :::* 668/influxdb

InfluxDB 自帶的 collectd 插件默認是關閉的,須要手動配置打開 enabled = true,並填上 database = 「collectd」 這一行,這裏的 「collectd」 就是咱們上面建立的那個數據庫,更改配置後記得重啓 InfluxDB:

  1. $ sudo vi /opt/influxdb/current/config.toml
  2. $ sudo vi /opt/influxdb/shared/config.toml
  3. ...
  4. # Configure the collectd api
  5. [input_plugins.collectd]
  6. enabled = true
  7. # address = "0.0.0.0" # If not set, is actually set to bind-address.
  8. # port = 25826
  9. database = "collectd"
  10. # types.db can be found in a collectd installation or on github:
  11. # https://github.com/collectd/collectd/blob/master/src/types.db
  12. # typesdb = "/usr/share/collectd/types.db" # The path to the collectd types.db file
  13. ...
  14. $ sudo /etc/init.d/influxdb restart
  15. Setting ulimit -n 65536
  16. Setting ulimit -n 65536
  17. influxdb process was stopped [ OK ]
  18. Setting ulimit -n 65536
  19. Starting the process influxdb [ OK ]
  20. influxdb process was started [ OK ]

如今 InfluxDB 已經準備好接受和處理 collectd 傳來的數據了。用命令行或者 Web 管理界面驗證一下數據庫裏是否有數據:

  1. $ curl -G 'http://192.168.2.183:8086/db/collectd/series?u=root&p=root&q=list+series&pretty=true'
  2. [
  3. {
  4. "name": "list_series_result",
  5. "columns": [
  6. "time",
  7. "name"
  8. ],
  9. "points": [
  10. [
  11. 0,
  12. "192.168.2.183/cpu-0/cpu-idle"
  13. ],
  14. ...
  15. ]
  16. }
  17. ]

InfluxDB

InfluxDB

安裝 Grafana

下載 grafana 後解壓放到 web 服務器上就可用。這裏省去配置 Nginx/Apache 之類的麻煩,直接用最簡單的 Web 服務器 python -m SimpleHTTPServer 驅動:

  1. $ wget http://grafanarel.s3.amazonaws.com/grafana-1.9.1.tar.gz
  2. $ tar xzvf grafana-1.9.1.tar.gz
  3. $ cd grafana-1.9.1.tar.gz
  4. $ cp config.sample.js config.js
  5. $ vi config.js
  6. ...
  7. // InfluxDB example setup (the InfluxDB databases specified need to exist)
  8. datasources: {
  9. influxdb: {
  10. type: 'influxdb',
  11. url: "http://192.168.2.183:8086/db/collectd",
  12. username: 'root',
  13. password: 'root',
  14. },
  15. ...
  16. },
  17. ...
  18. $ sudo python -m SimpleHTTPServer

用瀏覽器訪問 Grafana,這裏的默認端口是 8000:

Grafana

 

https://linux.cn/article-5252-1.html

相關文章
相關標籤/搜索