collectd+influxdb+grafana打造圖形化監控系統
想打造 New Relic 那樣漂亮的實時監控系統我們只需要 InfluxDB/collectd/Grafana 這三個工具,這三個工具的關係是這樣的:
採集資料(collectd)-> 儲存資料(InfluxDB) -> 顯示資料(Grafana)。
InfluxDB
是 Go 語言開發的一個開源分散式時序資料庫,非常適合儲存指標、事件、分析等資料,看版本號(v0.8.8)就知道這個專案還很年輕;collectd
就不用介紹了吧,C 語言寫的一個系統效能採集工具;Grafana
是純 Javascript 開發的前端工具,用於訪問 InfluxDB,自定義報表、顯示圖表等。
collectd
- 安裝
sudo apt-get update
sudo apt-get upgrade
sudo reboot
- 配置
配置 collectd 為客戶端,收集到資料後直接發給 InfluxDB:
sudo vi /etc/collectd/collectd.conf
...
LoadPlugin network
...
<Plugin network>
Server "192.168.2.183" "25826"
</Plugin>
...
inluxdb
安裝
sudo apt-get install influxdb
# 0.9.2版本 目前grafana只支援0.9版本
wget http://influxdb.s3.amazonaws.com/influxdb_0.9.2_amd64.deb
0.9版本無法在ubuntu16.04上直接安裝,只能安裝在14.04上,所以我們只能用docker映象來執行influxdb
docker run -d -p 8083:8083 -p 8086:8086 -p 25826:25826/udp\
-e ADMIN_USER="root" -e INFLUXDB_INIT_PWD="root"\
-e PRE_CREATE_DB=collectd -e COLLECTD_DB="collectd" -e COLLECTD_BINDING=':25826'\
-e COLLECTD_RETENTION_POLICY="" tutum/influxdb:0.9
配置
預設的配置檔案儲存在:/etc/opt/influxdb/influxdb.conf
修改配置後要重啟
重啟
/etc/init.d/influxdb restart
預設埠: http://localhost:8083/
- 身份認證
身份認證 預設情況下,身份認證是關閉的。也就是說,不使用賬號和密碼就可以訪問資料庫。需要使用配置檔案才能進行配置
Grafana
安裝
wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana_4.3.2_amd64.deb
sudo dpkg -i grafana_4.3.2_amd64.deb
預設埠3000
,預設賬號admin/admin
注意:不要使用apt-get install grafana來安裝,可能版本問題,圖示顯示不出來,版本也比較老。
配置
網路流量統計
-- 傳輸
SELECT derivative("value") AS "value" FROM "interface_rx" WHERE "host" = 'localhost' AND "type" = 'if_octets' AND "instance" = 'eno1'
函式 derivative
意為導數, 微積分中的概念. value 為傳輸總量(位元組), derivative("value") 為 value 在時間上的增量.
其中
host = localhost
type = if_octets
instance = eno1
cpu
-- 系統負載
SELECT mean("value") FROM "load_longterm" WHERE "host" = 'localhost' AND $timeFilter GROUP BY time($interval) fill(null)
SELECT mean("value") FROM "load_midterm" WHERE "host" = 'localhost' AND $timeFilter GROUP BY time($interval) fill(null)
SELECT mean("value") FROM "load_shortterm" WHERE "host" = 'localhost' AND $timeFilter GROUP BY time($interval) fill(null)
-- 記憶體用量
SELECT mean("value") FROM "memory_value" WHERE "type_instance" = 'used' AND $timeFilter GROUP BY time($interval) fill(null)
參考資料
相關文章
- 打造前端監控系統前端
- Nginx狀態圖形化監控工具Nginx
- 神荼之眼——打造現代化監控系統
- 分散式監控系統Zabbix-批量新增聚合圖形分散式
- 分散式監控系統Zabbix--使用Grafana進行圖形展示分散式Grafana
- 打造立體化監控體系的最佳實踐
- ClassIn:如何打造更穩定的Zabbix監控系統
- 教你打造一套移動端 APM 監控系統
- 使用 Grafana、collectd 和 InfluxDB 打造現代監控系統GrafanaUX
- 運維自動化之使用PHP+MYSQL+SHELL打造私有監控系統(七)運維PHPMySql
- 分散式監控系統Zabbix-圖形集中展示外掛Graphtree安裝筆記分散式筆記
- Mysql 監控系統MySql
- 監控系統元件元件
- 實時監控系統,統一監控企業APIAPI
- 打造雲原生大型分散式監控系統(四): Kvass+Thanos 監控超大規模容器叢集分散式
- 監控系統網路視覺化傳輸視覺化
- 物聯網閘道器助力打造煤礦安全監控系統
- Mac系統監控工具Mac
- 手刃前端監控系統前端
- JavaWeb的監控系統JavaWeb
- Cacti 監控 AIX 系統AI
- 智慧工地監控系統
- 智慧影片監控系統
- 基於Web的Dashboard來完成Kubernetes的圖形化監控和Web
- 打造雲原生大型分散式監控系統 (三): Thanos 部署與實踐分散式
- 用深度學習DIY自動化監控系統深度學習
- 系統監控&JVM監控指標資料查詢JVM指標
- 運維監控系統 PIGOSS BSM的監控策略運維Go
- 打造雲原生大型分散式監控系統 (一): 大規模場景下 Prometheus 的優化手段分散式Prometheus優化
- 駕駛員監控系統(DMS)
- python搭建系統監控Python
- sysstat——系統效能監控神器
- Docker 容器監控系統初探Docker
- Prometheus監控報警系統Prometheus
- 直播間截留監控系統
- zabbix系統監控部署(上)
- fanotify 監控檔案系統
- Nagios監控系統搭建iOS