1. 程式人生 > 實用技巧 >第十二 講:Grafana 超實⽤用企業級監控繪圖⼯工具的結合

第十二 講:Grafana 超實⽤用企業級監控繪圖⼯工具的結合

  本講內容

  •   Grafana 這款軟體的介紹
  •   Grafana 下載/安裝/配置/運⾏
  •   Grafana 設定資料來源 連線prometheus_server
  •   Grafana 建⽴ Dashboard
  •   Grafana 建立 graph 成圖
  •   Grafana graph進階內容
  •   Grafana Dashboard 全域性部署優化
  •   Grafana json備份 和 還原
  •   Grafana 實現報警功能 連線(4.0新功能 重要!)

  Grafana介紹

  Grafana是⼀款近⼏年新興的 開源資料繪圖⼯具平臺,預設⽀持如下這麼多鍾 資料來源作為輸⼊  

  Grafana 下載/安裝/配置/運⾏

  官網地址:https://grafana.com/

  下載安裝執行

#下載
wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.6.3-1.x86_64.rpm
#安裝
rpm -ivh grafana-4.6.3-1.x86_64.rpm 
#執行
rpm -ivh grafana-4.6.3-1.x86_64.rpm 
systemctl daemon-reload
systemctl enable grafana-server.service
systemctl start grafana-server.service

  訪問預設使用3000埠

  預設使用者名稱和密碼為admin

  新增資料來源

  新增後檢視

  建立圖形

  建立Graph圖形

  點選編輯edit

count_netstat_wait_connections

  可以設定 整個graph的解析度 如果希望圖形更清晰 可以設定 Height的部分 到200-400px

  接下來我們看 Metrics選項卡的部分
  預設影象下⽅的輸出資訊 是輸出全部的標籤 看著很亂 我們可以定製⾃⼰的 標籤別名

  接下來 我們來到 Legend選項卡

  在這⾥ 我們可以進⼀步 對輸出值 進⾏規劃 可以講顯⽰數值 額外設定 最⼩ 最⼤ 平均 當前 數值進⾏顯⽰ 最終可以做成這種樣⼦的顯⽰

  最終效果

  Grafana json備份 和 還原

  SAVE as 當我們的dashboard設定的graph越來越多時 我們除了即時儲存 還要掌握 匯出的⽅法 以便永久儲存

  在最上⾯ 設定的部分 選擇 View Json

  將全部的json copy出來 儲存到第⼀個地⽅ 以備不時之需 Grafana⽀持將 json導⼊ 還原成 dashboard

  刪除監控圖

  Grafana 實現報警功能 連線(4.0新功能 重要!)

  Grafana 4.0之後 ⽀持報警功能

  所有的graph圖形都可以 設定連線上多個報警平臺 並設定閾 值並報警

  這個是⼀個⾮常重要的新功能 有了這個 新功能後 prometheus_server(alertmanager外掛)-Pagerduty 僅僅作為資料 源即可(沒有必要再使⽤prometheus做報警設定了)

  整個的流程如下

  接下來我們來看下 如何設定grafana的報警功能

  1) 新建⼀個報警平臺 連線渠道(Alerting channel) 我們先去Pagerduty 獲取⼀個Integration Key 這個Integration Key 實際上是⼀串數字,作為讓其他軟體連線到⾃⼰的 認證碼 xxxxxxxxxxxxxxxx

  2) 回到我們的 Dashboard => Graph 我們來設定 報警閾值

  可以是 avg() 也可以是 max() min() 等等 對⼀段資料的數值 進⾏估算 ,可以⾛ 平均 也可以取最⼤值 最⼩值 然後 OF 之後 選擇我們的 之前的查詢公式 Query(A,1m,now) 其中的 A 就是我們在建立 Graph Metrics選項卡的 設定的第⼀ 個查詢公式 1m 代表的是 取1分鐘內的資料 IS ABOVE 後 就是報警的觸發閾值了 當⼤於110的時候 就會發出報警到 Pagerduty 儲存之後 我們的Graph圖 如下

  3) 繼續設定 我們的 notification

  設定一個CPU使用率的監控圖

  查詢語句是

(1-sum(increase(node_cpu{mode="idle"}[1m])) by(instance) / sum(increase(node_cpu[1m])) by(instance))*100

  有達到閾值返回true

  報錯報警規則