一、Grafana介紹
Grafana是一個跨平台的開源的度量分析和可視化工具,可以通過將采集的數據查詢然后可視化的展示,並及時通知。它主要有以下六大特點:
1、展示方式:快速靈活的客戶端圖表,面板插件有許多不同方式的可視化指標和日志,官方庫中具有豐富的儀表盤插件,比如熱圖、折線圖、圖表等多種展示方式;
2、數據源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB等;
3、通知提醒:以可視方式定義最重要指標的警報規則,Grafana將不斷計算並發送通知,在數據達到閾值時通過Slack、PagerDuty等獲得通知;
4、混合展示:在同一圖表中混合使用不同的數據源,可以基於每個查詢指定數據源,甚至自定義數據源;
5、注釋:使用來自不同數據源的豐富事件注釋圖表,將鼠標懸停在事件上會顯示完整的事件元數據和標記;
6、過濾器:Ad-hoc過濾器允許動態創建新的鍵/值過濾器,這些過濾器會自動應用於使用該數據源的所有查詢。
二、docker安裝Grafana
[](javascript:void(0)😉
#docker pull grafana/grafana 默認下載的是最新的Grafana版本
#docker run -d --name=grafana --restart=always -p 3000:3000 grafana/grafana進入到docker容器,安裝zabbix的插件#docker exec -it grafana bash獲取可用插件列表
root@8cd54f1c4c17:/# grafana-cli plugins list-remote
root@8cd54f1c4c17:/# grafana-cli plugins install alexanderzobnin-zabbix-app
[](javascript:void(0)😉
打開瀏覽器,輸入IP+端口,3000為Grafana的默認偵聽端口。系統默認用戶名和密碼為admin/admin,第一次登陸系統會要求修改密碼,修改密碼后登陸。
三、Grafana的使用
(1)配置數據源:
解釋:
HTTP這一項下面的URL填寫zabbix的api,如果是docker安裝的zabbix:http://IP/api_jsonrpc.php;如果不是使用docker安裝的zabbix,這里應該這么寫:http://IP/zabbix/api_jsonrpc.php
Username: 登錄zabbix的用戶名
Password:登錄zabbix的密碼
配置完成以后,測試是否可以連接zabbix
(2)創建Dashboards(儀表板)
設置儀表板
給這個儀表板起一個名字
(3)添加變量
用過zabbix的人應該知道,一個zabbix服務器可能存在多個group(組),一個group下又可能存在多個host(主機),每個host下又可能有多個application(應用),每個application下有可能有多個item(監控項)。假設你要在grafana上看某個監控項的實時數據,就需要在grafana上配置該監控項的panel,那么這樣一來可能會存在很多個監控項,比如我管的一台zabbix server上光一個host下監控項就有幾百個,如果這幾百個監控項每個都在grafana上配置一個panel,這絕對是一個非常折磨人的工作。還好grafana提供了一個Variables的功能,允許動態的修改panel中的參數,這樣panel顯示的內容也會隨着參數的變化而變化。
要說明一點,這個Variables提供了參數功能,就相當於一個宏變量,這個宏變量的值是和datasource級聯的(參數背后其實就是一個查詢語句,數據源內容發生變化,利用該參數獲取到的數據就會級聯發生變化)。
下面解釋一下各個參數的作用
Variable
name: 變量名,template的名字,比如我這里取名為group,到時候要使用這個變量名就用$group來調用。
type: 變量類型,變量類型有多種,其中query表示這個變量是一個查詢語句,type也可以是datasource,datasource就表示該變量代表一個數據源,如果是datasource你可以用該變量修改整個DashBoard的數據源,變量類型還可以是時間間隔Interval等等。這里我們選擇query。
label: 是對應下拉框的名稱,默認就是變了名,選擇默認即可。
hide: 有三個值,分別為空,label,variable。選擇label,表示不顯示下拉框的名字。選擇variable表示隱藏該變量,該變量不會在DashBoard上方顯示出來。默認選擇為空,這里也選默認。
Query options
Data source: 數據源,不用多說。
Refresh: 何時去更新變量的值,變量的值是通過查詢數據源獲取到的,但是數據源本身也會發生變化,所以要時不時的去更新變量的值,這樣數據源的改變才會在變量對應的下拉框中顯示出來。Refresh有三個值可以選擇,Never:永不更新。On Dashboard Load:在DashBoard加載時更新。On Time Range Change:這個還沒弄明白怎么用。。此處,選擇On Dashboard Load,當數據源發生更新是,刷新一下當前DashBoard,變量的值也會跟着發生更新。
Query:查詢表達式,不同的數據源查詢表達式都不同(這些可以到官網上查詢),這里由於是要查詢zabbix的groups信息,所以表達式為*。
Regex:正則表達式,用來對抓取到的數據進行過濾,這里默認不過濾。
Sort:排序,對下拉框中的變量值做排序,排序的方式挺多的,默認是disable,表示查詢結果是怎樣下拉框就怎樣顯示。此處選disable。
Selection Options
Multi-value:啟用這個功能,變量的值就可以選擇多個,具體表現在變量對應的下拉框中可以選多個值的組合。
Include All option:啟用這個功能,變量下拉框中就多了一個all選項。
Custom all value:啟用Include All option這個功能,才會出現Custom all value這個輸入框,表示給all這個選項自定義一個值,all這個選項默認是所有值的組合,你也可以自定義,比如我自定義all為cpu五分鍾平均負載,則選擇all就代表cpu五分鍾平均負載。
雖然選擇組合值可以在一個panel里面查看多種監控數據,但是由於不同監控數據的數值大小格式都可能不一樣,在一個圖形里面格式很難兼容,這樣就會出現問題,所以此處建議默認都不選。
Value groups/tags
組合標簽,可以選擇多個值組合在一起設置一個標簽,這個功能還沒弄明白,按照官網上的操作沒效果,暫且忽略吧,反正沒多大影響。
Preview of values (shows max 20)
前面都設置好之后,下方會顯示前二十,由於我的groups只有一個zabbix agents,所以只顯示了一個。
點擊add,group這個template就創建好了。
按照這個方式再創建另外三個template(host,application,item)。另外三個的創建和group除了name,query不一樣之外其它都一樣。
[](javascript:void(0)😉
其他三個的創建host的創建: name: host query:{$group}{*}application的創建: name: application query: {$group}{$host}{*}item的創建: name: item query:{$group}{$host}{$application}{*}
[](javascript:void(0)😉
(4)創建panel
解釋:
Queries to:從哪里獲取數據,默認是zabbix
Group:zabbix里面定義的主機組,上面使用了變量$group,表示所有的主機組
Host:zabbix里面的主機
Application:zabbix里面的應用,
Item:zabbix里面定義的監控項
比如,我這里想查詢CPU一分鍾內的平均負載:
這里定義標題,可以使用定義的變量
最終效果如下:
Grafana的基本使用:
https://grafana.com/docs/tutorials/api_org_token_howto/
https://www.aikaiyuan.com/10263.html
參考官方教程:
http://docs.grafana-zabbix.org/installation/
樣例:
http://play.grafana-zabbix.org/dashboard/db/grafana-zabbix-demo?orgId=2