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

fn67 9年前發布 | 70K 次閱讀 Grafana 系統監控

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

采集數據(collectd)-> 存儲數據(InfluxDB) -> 顯示數據(Grafana)。

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

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

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo reboot

安裝 InfluxDB

InfluxDB 是 Go 寫的,不依賴任何其他包或庫,很干凈。安裝很容易:

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

啟動 InfluxDB:

$ sudo /etc/init.d/influxdb start
Setting ulimit -n 65536
Starting the process influxdb [ OK ]
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 就可以了。

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


在剛安裝好的 InfluxDB 上創建一個名為 collectd 的數據庫,可以用命令行創建,也可以用 Web 管理界面操作:

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

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


安裝 collectd

安裝 collectd:

$ sudo apt-get install collectd

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

$ sudo vi /etc/collectd/collectd.conf
...
LoadPlugin network
...
<Plugin network>
        Server "192.168.2.183" "25826"
</Plugin>
...

重啟 collectd:

$ sudo /etc/init.d/collectd restart

InfluxDB 現在自帶一個 collectd 插件來獲取 collectd 客戶端發來的數據,以前可沒這么方便哦,0.8.4 版本以前只能通過 influxdb-collectd-proxy 這樣的第三方程序來連接 collectd 和 InfluxDB.

InfluxDB 自帶的 collectd 插件默認是關閉的,需要手動配置打開 enabled = true,并填上 database = “collectd” 這一行,這里的 “collectd” 就是我們上面創建的那個數據庫,更改配置后記得重啟 InfluxDB:

$ sudo vi /opt/influxdb/shared/config.toml
...
  # Configure the collectd api
  [input_plugins.collectd]
  enabled = true
  address = "0.0.0.0" # If not set, is actually set to bind-address.
  port = 25826
  database = "collectd"
  # types.db can be found in a collectd installation or on github:
  # https://github.com/collectd/collectd/blob/master/src/types.db
  typesdb = "/usr/share/collectd/types.db" # The path to the collectd types.db file
...

$ sudo /etc/init.d/influxdb restart
Setting ulimit -n 65536
Setting ulimit -n 65536
influxdb process was stopped [ OK ]
Setting ulimit -n 65536
Starting the process influxdb [ OK ]
influxdb process was started [ OK ]

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

$ curl -G 'http://192.168.2.183:8086/db/collectd/series?u=root&p=root&q=list+series&pretty=true'
[
    {
        "name": "list_series_result",
        "columns": [
            "time",
            "name"
        ],
        "points": [
            [
                0,
                "192.168.2.183/cpu-0/cpu-idle"
            ],
...
        ]
    }
]

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


安裝 Grafana

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

$ wget http://grafanarel.s3.amazonaws.com/grafana-1.9.1.tar.gz
$ tar xzvf grafana-1.9.1.tar.gz
$ cd grafana-1.9.1.tar.gz
$ cp config.sample.js config.js

$ vi config.js
...
      // InfluxDB example setup (the InfluxDB databases specified need to exist)
      datasources: {
        influxdb: {
          type: 'influxdb',
          url: "http://192.168.2.183:8086/db/collectd",
          username: 'root',
          password: 'root',
        },
        ...
      },
...

$ sudo python -m SimpleHTTPServer

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

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

來自:http://www.vpsee.com/2015/03/a-modern-monitoring-system-built-with-grafana-collected-influxdb/

 本文由用戶 fn67 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!