Grafana基礎


一、Grafana基礎

Grafana是一個開源的指標量監測和可視化工具。官方網站為:https://grafana.com/, 常用於展示基礎設施的時序數據和應用程序運行分析。Grafana的dashboard展示非常炫酷,絕對是運維提升逼格的一大利器。

官方在線的demo可以在這里找到: http://play.grafana.org/

Grafana是一個通用的可視化工具。這意味着Grafana不僅僅適用於展示zabbix下的監控數據,也同樣適用於一些其他的數據可視化需求。在開始使用Grafana之前,我們首先需要明確一些Grafana下的基本概念,以幫助用戶能夠快速理解Grafana。

1、數據源(datasource )

數據的存儲源,它定義了將用什么方式來查詢數據展示在grafana上面,不同的datasource擁有不同的查詢語法,grafana支持多種數據源,官方支持以下數據源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch。

每個數據源的查詢語言和能力各不同,我們可以將來自多個數據源的數據組合到一個儀表盤中,但是每個面板都綁定到屬於特定組織的特定數據源。

2、儀表盤(Dashboard )

通過數據源定義好可視化的數據來源之后,對於用戶而言最重要的事情就是實現數據的可視化。在Grafana中,我們通過Dashboard來組織和管理我們的數據可視化圖表,如下圖所示:

在一個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面板。

除了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的安裝與配置

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,一般情況下無需修改配置文件。這樣,安裝就完成了。非常簡單。

三、Grafana與zabbix整合提升運維監控逼格

zabbix的UI做的中規中矩,逼格不是很高,所以我們可以結合Grafana的炫酷界面來補充zabbix這方面的不足,Grafana有着漂亮的圖表及布局展示,功能上絕對能夠滿足我們的需要,是運維裝B的必備運維利器之一。

1、安裝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

2、配置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”也是類似的。

3、自定義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與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的一個難點。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM