1. 程式人生 > 實用技巧 >使用 Grafana+collectd+InfluxDB 打造現代監控系統

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

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

採集資料(collectd)-> 儲存資料(InfluxDB) -> 顯示資料(Grafana)。

  • InfluxDB是 Go 語言開發的一個開源分散式時序資料庫,非常適合儲存指標、事件、分析等資料,看版本號(v0.8.8)就知道這個專案還很年輕;

  • collectd就不用介紹了吧,C 語言寫的一個系統性能採集工具;

  • Grafana是純 Javascript 開發的前端工具,用於訪問 InfluxDB,自定義報表、顯示圖表等。

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


$sudoapt-getupdate
$sudoapt-getupgrade
$sudoreboot


安裝 InfluxDB

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

$wgethttps://s3.amazonaws.com/influxdb/influxdb_latest_amd64.deb
$sudodpkg-iinfluxdb_latest_amd64.deb

啟動 InfluxDB:

$sudo/etc/init.d/influxdbstart
Settingulimit-n65536
Startingtheprocessinfluxdb[OK]
influxdbprocesswasstarted[OK]

啟動後開啟 web 管理介面 http://192.168.2.183:8083/ 預設使用者名稱和密碼是 root 和 root. InfluxDB 的 Web 管理介面埠是 8083,HTTP API 監聽埠是 8086,如果需要更改這些預設設定,修改 InfluxDB 的配置檔案重啟就可以了。

InfluxDB


在剛安裝好的 InfluxDB 上建立一個名為 collectd 的資料庫,可以用命令列建立,也可以用 Web 管理介面操作:

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

InfluxDB



安裝 collectd

安裝 collectd:

$sudoapt-getinstallcollectd

配置 collectd 為客戶端,收集到資料後直接發給 InfluxDB:

$sudovi/etc/collectd/collectd.conf
...
LoadPluginnetwork
...
<Pluginnetwork>
Server"192.168.2.183""25826"
</Plugin>
...

重啟 collectd:

$sudo/etc/init.d/collectdrestart

InfluxDB 現在自帶一個 collectd 外掛來獲取 collectd 客戶端發來的資料,以前可沒這麼方便哦,0.8.4 版本以前只能通過 influxdb-collectd-proxy 這樣的第三方程式來連線 collectd 和 InfluxDB. 如果你檢查一下伺服器上開啟的埠就會發現 influxdb 外掛啟動了一個 25826 埠,如果發現 InfluxDB 資料庫裡沒有(收集到)資料,務必檢查這個 25826 埠是否正常啟動了:

$sudonetstat-tupln
ActiveInternetconnections(onlyservers)
ProtoRecv-QSend-QLocalAddressForeignAddressStatePID/Programname
tcp000.0.0.0:220.0.0.0:*LISTEN622/sshd
tcp600:::8086:::*LISTEN668/influxdb
tcp600:::22:::*LISTEN622/sshd
tcp600:::8090:::*LISTEN668/influxdb
tcp600:::8099:::*LISTEN668/influxdb
tcp600:::8083:::*LISTEN668/influxdb
udp600:::25826:::*668/influxdb

InfluxDB 自帶的 collectd 外掛預設是關閉的,需要手動配置開啟 enabled = true,並填上 database = “collectd” 這一行,這裡的 “collectd” 就是我們上面建立的那個資料庫,更改配置後記得重啟 InfluxDB:

$sudovi/opt/influxdb/current/config.toml
$sudovi/opt/influxdb/shared/config.toml
...
#Configurethecollectdapi
[input_plugins.collectd]
enabled=true
#address="0.0.0.0"#Ifnotset,isactuallysettobind-address.
#port=25826
database="collectd"
#types.dbcanbefoundinacollectdinstallationorongithub:
#https://github.com/collectd/collectd/blob/master/src/types.db
#typesdb="/usr/share/collectd/types.db"#Thepathtothecollectdtypes.dbfile
...

$sudo/etc/init.d/influxdbrestart
Settingulimit-n65536
Settingulimit-n65536
influxdbprocesswasstopped[OK]
Settingulimit-n65536
Startingtheprocessinfluxdb[OK]
influxdbprocesswasstarted[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"
],
...
]
}
]

InfluxDB


安裝 Grafana

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

$wgethttp://grafanarel.s3.amazonaws.com/grafana-1.9.1.tar.gz
$tarxzvfgrafana-1.9.1.tar.gz
$cdgrafana-1.9.1.tar.gz
$cpconfig.sample.jsconfig.js

$viconfig.js
...
//InfluxDBexamplesetup(theInfluxDBdatabasesspecifiedneedtoexist)
datasources:{
influxdb:{
type:'influxdb',
url:"http://192.168.2.183:8086/db/collectd",
username:'root',
password:'root',
},
...
},
...

$sudopython-mSimpleHTTPServer

用瀏覽器訪問 Grafana,這裡的預設埠是 8000:

Grafana


Troubleshooting

下面有多個網友評論提到修改配置檔案後端口 25826 也無法起來的問題,和 influxdb 啟動時候使用的是哪個配置檔案有關,用 ps aux | grep influxdb 可以看到當前 influxdb 使用的是哪個配置檔案:

$sudovi/opt/influxdb/current/config.toml
$sudovi/opt/influxdb/shared/config.toml

$psaux|grepinfluxdb
influxdb66819.18.1265596482336?SlMar316375:52/usr/bin/influxdb-pidfile/opt/influxdb/shared/influxdb.pid-config/opt/influxdb/shared/config.toml
...

文章出處:http://www.vpsee.com/tag/grafana/

轉載於:https://blog.51cto.com/enlighten/1956958