簡介
-
監控是運維工作中的一個重要組成部分,今天介紹一套新的監控工具,方便好用,擴展性強,這套工具有三個組件,Grafana & Graphite & Collectd;
-
Grafana 是一個開源的強有力的數據展示、量化分析工具,數據源包括 graphite、prometheus、mysql、influxdb 等等,可以直接在頁面上組裝語句,另外還可以對資源實現可用性和性能監控報警,同時還支持集成OpenLDAP;
-
Graphite 是一個用Python寫的開源的監控繪圖工具,由三個組建組成,分別是
carbon(基於 Twisted 的進程,用來接收數據)
、whisper(專門存儲時間序列類型數據的小型數據庫)
、graphite-web(基於 Django 的網頁應用程序)
,我們這里使用其存儲監控數據; -
Collectd 是一個用C語言開發的守護進程,能夠周期性的收集系統和應用程序的性能指標,同時給各種存儲方式提供不同的存儲機制,我們這里使用其收集數據並將數據推送到 graphite 中存儲;
-
目前雲平台使用普遍且方便,大多數雲平台有完善詳盡的監控預警系統,但對於業務需要使用多種雲平台或混合雲的情況卻較難應對;這套監控體系可綜合各種系統監控、業務監控、業務數據展示等功能,統一入口,可謂運維必備利器;現將該系統的創建分享方向給大家,希望對需要的小伙伴有所幫助;
-
邏輯結構圖如下:
-
下圖為grafana 可以接收的數據源列表
graphite 部署
- 數據做持久存儲
docker run -d \
--name ops-graphite \
--restart=always \
-p 8880:80 \
-p 2003-2004:2003-2004 \
-p 2023-2024:2023-2024 \
-p 8125:8125/udp \
-p 8126:8126 \
-v /opt/graphite_data/whisper:/opt/graphite/storage/whisper:rw \
-v /opt/graphite_data/redis:/var/lib/redis:rw \
-v /opt/graphite_data/log:/var/log:rw \
graphiteapp/graphite-statsd
- 可通過瀏覽器訪問 graphite 頁面,
http://10.0.0.1:8880
,默認用戶名:root,密碼:root,后續要將其加入到grafana的數據源
collectd 部署
- 替換
GRAPHITE_HOST
為你graphite的主機地址,我這里使用域名,方便管理
docker run -d \
--name ops-collectd \
--net=host \
--privileged \
--restart always \
-v /:/hostfs:ro \
-e GRAPHITE_HOST=collectd.ops.glinux.top \
williamguozi/collectd:latest
grafana 部署
- 數據做持久存儲,可通過
-v /opt/grafana/grafana.ini:/etc/grafana/grafana.ini
,-v /opt/grafana/ldap.toml:/etc/grafana/ldap.toml
將配置放置外部管理(可選)
docker run -d \
--name ops-grafana \
-p 3000:3000 \
-v /opt/grafana:/var/lib/grafana \
grafana/grafana
grafana 配置
-
經過上訴配置,就可以打開grafana的管理界面了,
http://10.0.0.1:3000
,默認用戶名:admin,密碼:admin -
添加
graphite
數據源,配置用戶名密碼,測試連接狀態
-
設置告警通知方式,這里使用slack方式通知到頻道,也可嘗試其他通知方式
-
左側列表添加 Dashboard -> Panel,編輯Panel,添加數據,比如cpu利用率
-
調整單位
-
修改 Panel 名稱,添加報警規則
效果展示
-
當資源指標達到閾值就會報警到Slack相應的頻道
-
另外,可以通過安裝 dashboards 模版使數據展示更漂亮
總結
- 本文主要就操作系統的基礎監控做例子,展示整個部署過程及展示和報警;
- 當然其也能夠對時下比較流行的kubernetes進行詳細的監控,后面會寫文介紹;
- 另外,grafana可以直接將mysql作為數據源,將業務數據圖標展示,體現DevOps價值;
參考文檔
- Installing Graphite: https://graphite.readthedocs.io/en/latest/install.html
- Graphite簡介: https://my.oschina.net/u/1263964/blog/701664
- Graphite 和 Grafana 簡介: https://yumminhuang.github.io/post/graphiteandgrafana
- 創建一個slack api: https://api.slack.com/start