Grafana是一個開源的指標量監測和可視化工具。官方網站爲:https://grafana.com/, 經常使用於展現基礎設施的時序數據和應用程序運行分析。Grafana的dashboard展現很是炫酷,絕對是運維提高逼格的一大利器。php
官方在線的demo能夠在這裏找到: http://play.grafana.org/node
Grafana是一個通用的可視化工具。這意味着Grafana不只僅適用於展現zabbix下的監控數據,也一樣適用於一些其餘的數據可視化需求。在開始使用Grafana以前,咱們首先須要明確一些Grafana下的基本概念,以幫助用戶可以快速理解Grafana。mysql
一、數據源(datasource )web
數據的存儲源,它定義了將用什麼方式來查詢數據展現在grafana上面,不一樣的datasource擁有不一樣的查詢語法,grafana支持多種數據源,官方支持如下數據源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch。正則表達式
每一個數據源的查詢語言和能力各不一樣,咱們能夠未來自多個數據源的數據組合到一個儀表盤中,可是每一個面板都綁定到屬於特定組織的特定數據源。sql
二、儀表盤(Dashboard )docker
經過數據源定義好可視化的數據來源以後,對於用戶而言最重要的事情就是實現數據的可視化。在Grafana中,咱們經過Dashboard來組織和管理咱們的數據可視化圖表,以下圖所示:shell
在一個Dashboard中一個最基本的可視化單元爲一個Panel(面板),Panel經過如趨勢圖,熱力圖的形式展現可視化數據。 而且在Dashboard中每個Panel是一個徹底獨立的部分,經過Panel的Query Editor(查詢編輯器)咱們能夠爲每個Panel本身查詢的數據源以及數據查詢方式,例如,若是以Prometheus做爲數據源,那在Query Editor中,咱們實際上使用的是PromQL,而Panel則會負責從特定的Prometheus中查詢出相應的數據,而且將其可視化。因爲每一個Panel是徹底獨立的,所以在一個Dashboard中,每每可能會包含來自多個Data Source的數據。數據庫
Grafana經過插件的形式提供了多種Panel的實現,經常使用的如:Graph Panel,Heatmap Panel,SingleStat Panel以及Table Panel等。用戶還可經過插件安裝更多類型的Panel面板。json
除了Panel之外,在Dashboard頁面中,咱們還能夠定義一個Row(行),來組織和管理一組相關的Panel。
除了Panel, Row這些對象之外,Grafana還容許用戶爲Dashboard定義Templating variables(模板參數),從而實現能夠與用戶動態交互的Dashboard頁面。同時Grafana經過JSON數據結構管理了整個Dasboard的定義,所以這些Dashboard也是很是方便進行共享的。Grafana還專門爲Dashboard提供了一個共享服務。
https://grafana.com/dashboards
經過該服務用戶能夠輕鬆實現Dashboard的共享,同時咱們也能快速的從中找到咱們但願的Dashboard實現,並導入到本身的Grafana中。
Grafana的安裝很是簡單,官方就有軟件倉庫能夠直接使用,也能夠經過docker鏡像等方式直接本地啓動。還能夠直接下載rpm包、二進制包進行安裝。
你們能夠從 https://grafana.com/get 下載Grafana安裝包,而後根據須要的系統平臺及性能下載便可,官方給出了很是詳細的安裝方法,例如,要經過rpm包安裝在Redhat & Centos平臺,可直接執行以下命令:
[root@localhost ~]# wget https://dl.grafana.com/oss/release/grafana-5.4.3-1.x86_64.rpm [root@localhost ~]# sudo yum localinstall grafana-5.4.3-1.x86_64.rpm
安裝完畢後,使用「service grafana-server start」就能夠啓動grafana,訪問 http://your-host:3000 就能夠看到登陸界面了。默認的用戶名和密碼都是admin。
默認狀況下,grafana的配置存儲於sqlite3中,若是你想使用其餘存儲後端,如mysql,postgresql等,請參考官方文檔配置: http://docs.grafana.org/installation/configuration/
本文是在centos7.x版本下進行的安裝,安裝方法與上面相同,安裝完畢後,設置一些服務器啓動便可,操做以下:
[root@localhost ~]# systemctl enable grafana-server #開啓自啓動 [root@localhost ~]# systemctl start grafana-server #啓動服務 [root@localhost ~]# systemctl status grafana-server #查看服務是否正常啓動
Grafana的配置文件位於/etc/grafana/grafana.ini,通常狀況下無需修改配置文件。這樣,安裝就完成了。很是簡單。
zabbix的UI作的中規中矩,逼格不是很高,因此咱們能夠結合Grafana的炫酷界面來補充zabbix這方面的不足,Grafana有着漂亮的圖表及佈局展現,功能上絕對可以知足咱們的須要,是運維裝B的必備運維利器之一。
一、安裝grafana-zabbix 插件
grafana和zabbix的集成是經過插件方式實現的,所以,須要先安裝grafana-zabbix插件,grafana官方已經包含了這個插件,直接使用便可。
安裝以前能夠經過grafana-cli plugins list-remote 命令來查看都有什麼插件能夠安裝。操做以下:
[root@localhost ~]# grafana-cli plugins list-remote|grep zabbix id: alexanderzobnin-zabbix-app version: 3.9.1
能夠看到,有一個名爲alexanderzobnin-zabbix-app的zabbix 插件,接着直接在grafana上安裝zabbix插件便可,執行以下命令:
[root@localhost ~]# grafana-cli plugins install alexanderzobnin-zabbix-app
執行這個命令須要grafana服務器可以上網,由於它會從外網下載插件包,安裝成功以後會提示咱們須要重啓grafana 服務,以使插件生效。
接着,再安裝一個clock-panel插件,這個插件是個時鐘插件,能夠在dashboard上顯示時間用。命令以下:
[root@localhost ~]# grafana-cli plugins install grafana-clock-panel
全部須要的插件安裝完成後,執行以下命令重啓grafana服務:
[root@localhost ~]# systemctl restart grafana-server
二、配置zabbix數據源
全部準備工做完成後,下面就能夠進入Grafana的web界面了,登錄Grafana Protal,在瀏覽器中輸入: http://Grafana_IP:3000 , 默認用戶和密碼:admin/admin ,首先會看到以下界面:
這是第一步,配置數據源,點擊這個「Add data source」,進入以下界面:
能夠看到,這是默認Grafana自帶的數據源,咱們要添加zabbix,那麼zabbix默認是以插件形式存在的,因此點擊上圖Plugins標籤,而後搜索zabbix,以下圖所示:
能夠看到,這個顯示的zabbix插件,就是咱們剛剛安裝好的。點擊這個插件,進入以下界面:
這裏點擊「Enable」,啓用這個插件。啓用zabbix插件以後,再次選擇「Data Source」標籤,以下圖所示:
能夠看到,基於zabbix的數據源已經出來了,點擊這個數據源,進入以下界面:
這就是配置zabbix數據源的界面,具體配置的參數有以下幾個:
URL填寫的是zabbix server 的api 地址,注意這個地址,我這裏是:
http://172.16.213.140/zabbix/api_jsonrpc.php , 注意後面的uri,前面IP換成你的便可,後面uri保持不變。
Zabbix API details 的配置的用戶名和密碼就是zabbix web的登陸用戶名和密碼,默認是Admin/zabbix。
配置完成以後,點擊最下面的「Save &Test」,若是配置有問題會報錯提示,若是沒有問題會提示成功。這樣zabbix數據源就配置完成了。最後,點擊左側導航中的zabbix圖標,選擇「Zabbix Server Dashboard」,以下圖所示:
這樣,就進入了「Zabbix Server Dashboard」,這個Dashboard是zabbix插件自帶的,是一個簡單的對zabbix server狀態監控的Dashboard,以下圖所示:
能夠看到,默認Dashboard已經有數據了,這個數據就是經過上面配置的數據源而來。這只是一個初步配置,後續還有不少能夠細化的東西。
若是沒有數據,能夠修改相關配置,例如對上面CPU這個Panel進行修改,能夠這樣操做,以下圖所示:
點擊「Edit」後,進入下圖所示界面:
此界面是調試出圖是否正常的方法,很是重要,首先,圖中「$datasource」用來指定數據源,「Query Mode」指定查詢模式,有「Metrics、text」等可選項,還有四個選項「Group」、 「Host」、「 Application」、「 Item」,分別對應zabbix中的主機組、主機、應用集和監控項。正常狀況下選擇「Group」後,會在「Host」中看到此「Group」下的全部主機,「 Application」和「 Item」也是相似的。
三、自定義Dashboard
除了zabbix插件自帶的Dashboard,咱們還能夠自定義須要的Dashboard,點擊Grafana左側導航,選擇建立一個Dashboard,以下圖所示:
而後出現以下界面:
今後圖能夠看出,默認已經存在一些Panel,能夠選擇添加,可是在添加以前,須要先作幾個變量配置,點擊右上角的齒輪按鈕,以下圖所示:
此界面是對Dashboard進行配置,這裏咱們修改Dashboard名稱爲「 Zabbix Template Linux Server」,其它保存不變,接着,點擊上圖左側的「Variables」,而後添加一個Variables,以下圖所示:
下面解釋一下各個參數的做用:
首先是General部分:
name:變量的名字,好比我這裏取名爲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:在一個時間範圍內更新。可根據狀況進行選項。
Query:查詢表達式,不一樣的數據源查詢表達式都不一樣(這些能夠到官網上查詢),這裏因爲是要查詢zabbix的groups信息,因此表達式爲「*」,表明全部。
Regex:正則表達式,用來對抓取到的數據進行過濾,這裏默認不過濾。
Sort:排序,對下拉框中的變量值作排序,排序的方式挺多的,默認是disable,表示查詢結果是怎樣下拉框就怎樣顯示。此處選disable。
最後是Selection Options部分:
Multi-value:啓用這個功能,變量的值就能夠選擇多個,具體表如今變量對應的下拉框中能夠選多個值的組合。
Include All option:啓用這個功能,變量下拉框中就多了一個all選項。
這裏咱們添加了一個group變量,類型爲「Query」,對應的標籤爲主機組,到時候要使用這個變量名就用$group來調用便可。 接着在「Query Options」中的Query方法,這裏是一個星號,表明全部組。就設置這麼多,最後,點擊add,group這個變量就建立好了。
按照這個方式能夠建立多個變量(host,application,item、Network)。建立方法和group基本同樣,除了name,query不同以外其它都同樣。例如:
建立變量host:
Name:host
Query:$group.* 建立變量application: Name:application Query:$group.$host.* 建立變量item: Name:item Query:$group.$host.$application.*
這裏咱們再建立一個host變量和netif便可,下圖是netif變量的建立方法:
全部變量建立完成後,截圖以下:
變量建立完成後,接着就要增長panel了,返回剛剛建立好的「Zabbix Template Linux Server」,以下圖所示:
點擊右上角的添加panel按鈕,選擇左邊的「Graph」,以下圖所示:
點擊編輯這個panel,進入下圖:
這裏選擇數據源爲zabbix,而後選擇Query Mode爲Metrics,因爲Grafana已經能夠鏈接到zabbix數據庫,因此,Group一項會列出zabbix因此的主機組,這裏選擇Linux servers,接着在Host一項中會列出對應主機組下的全部主機,同理,Application和Item項都會自動列出全部的對應內容,選擇一個須要圖形展現的監控項便可,這裏選擇的是CPU,而監控項能夠選擇全部,經過「/.*/」會展現全部關於CPU應用集的監控項。
由於上面咱們定義了多個變量,爲了查詢和展現方便,上面的這個panel也可這麼設置,以下圖所示:
從上圖能夠看出,咱們以前定義的變量都展現出來了,通在左上角選擇主機組、主機等條件,這個CPU展現的圖形會隨着條件不一樣,而展現不一樣的主機狀態, 要實現這樣的功能,須要將此panel中的group和host設置成變量,如上圖所示。
經過這種方法,依次添加多個不一樣類型的panel,便可構建一個自定義的Dashboard,Dashboard中能夠對每一個panel進行拖、拉等佈局操做,下圖是一個自定義好的Dashboard:
好了,掌握這些,基本就能夠自由的在Grafana上玩耍了。
Prometheus UI提供了快速驗證PromQL以及臨時可視化支持的能力,而在大多數場景下引入監控系統一般還須要構建能夠長期使用的監控數據可視化面板(Dashboard)。這時用戶能夠考慮使用第三方的可視化工具如Grafana,Grafana是一個開源的可視化平臺,而且提供了對Prometheus的完整支持。
有了前面的基礎,對Prometheus與Grafana整合的實現,就變得更加簡單,由於Grafana已經默認自帶了Prometheus數據源,因此無需安裝插件,直接使用便可。
這裏將添加Prometheus做爲數據源,以下圖所示,指定數據源類型爲Prometheus而且設置Prometheus的訪問地址便可,在配置正確的狀況下點擊「Add」按鈕,會提示鏈接成功的信息:
在完成數據源的添加以後就能夠在Grafana中建立咱們可視化Dashboard了。
Grafana提供了對PromQL的完整支持,以下所示,經過Grafana添加Dashboard而且爲該Dashboard添加一個類型爲「Graph」的面板。 並在該面板的「Metrics」選項下經過PromQL查詢須要可視化的數據:
點擊界面中的保存選項,就建立了咱們的第一個可視化Dashboard了。
固然做爲開源軟件,Grafana社區用戶分享了大量的Dashboard,能夠經過訪問 https://grafana.com/dashboards 網站,找到大量可直接使用的Dashboard,這裏咱們推薦一個Dashboard,下載地址以下:
http://www.ixdba.net/grafana/1-node-exporter-0-16-0-17-for-prometheus_rev7.zip
此Dashboard須要餅圖插件的支持,所以須要先在grafana上安裝餅圖的插件:
[root@localhost ~]#grafana-cli plugins install grafana-piechart-panel
安裝完插件後,記得重啓grafana服務。
Grafana中全部的Dashboard能夠經過JSON進行共享,下載而且導入這些JSON文件,就能夠直接使用這些已經定義好的Dashboard,要導入JSON文件,首先打開下面界面:
這裏打開Grafana左側的Manage選項後,進入以下界面:
選擇上圖右上角的「import」,而後進入下圖界面:
在此圖中,點擊右上角的upload按鈕,導入對應的json文件便可。
最後,打開剛剛導入的json文件對應的Dashboard,便可出現炫酷的展現效果,以下圖所示:
Prometheus與Grafana整合很是簡單,難點在於出圖中每一個panel的展現內容,這須要經過PromQL語句進行實現。而PromQL語句是學習Prometheus的一個難點。