1、Grafana介紹php
Grafana是一個跨平臺的開源的度量分析和可視化工具,能夠經過將採集的數據查詢而後可視化的展現,並及時通知。它主要有如下六大特色:正則表達式
一、展現方式:快速靈活的客戶端圖表,面板插件有許多不一樣方式的可視化指標和日誌,官方庫中具備豐富的儀表盤插件,好比熱圖、折線圖、圖表等多種展現方式;docker
二、數據源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB等;json
三、通知提醒:以可視方式定義最重要指標的警報規則,Grafana將不斷計算併發送通知,在數據達到閾值時經過Slack、PagerDuty等得到通知;api
四、混合展現:在同一圖表中混合使用不一樣的數據源,能夠基於每一個查詢指定數據源,甚至自定義數據源;瀏覽器
五、註釋:使用來自不一樣數據源的豐富事件註釋圖表,將鼠標懸停在事件上會顯示完整的事件元數據和標記;bash
六、過濾器:Ad-hoc過濾器容許動態建立新的鍵/值過濾器,這些過濾器會自動應用於使用該數據源的全部查詢。服務器
2、docker安裝Grafana併發
#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-remoteapp
root@8cd54f1c4c17:/# grafana-cli plugins install alexanderzobnin-zabbix-app
打開瀏覽器,輸入IP+端口,3000爲Grafana的默認偵聽端口。系統默認用戶名和密碼爲admin/admin,第一次登錄系統會要求修改密碼,修改密碼後登錄。
3、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不同以外其它都同樣。
其餘三個的建立
host的建立:
name: host query:{$group}{*}
application的建立:
name: application query: {$group}{$host}{*}
item的建立:
name: item query:{$group}{$host}{$application}{*}
(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/