【云原生】Grafana 介紹與實(shí)戰(zhàn)操作
一、概述
grafana是用于可視化大型測(cè)量數(shù)據(jù)的開源程序,他提供了強(qiáng)大和優(yōu)雅的方式去創(chuàng)建、共享、瀏覽數(shù)據(jù)。dashboard中顯示了你不同metric數(shù)據(jù)源中的數(shù)據(jù)。
- grafana最常用于因特網(wǎng)基礎(chǔ)設(shè)施和應(yīng)用分析,但在其他領(lǐng)域也有機(jī)會(huì)用到,比如:工業(yè)傳感器、家庭自動(dòng)化、過程控制等等。
- grafana有熱插拔控制面板和可擴(kuò)展的數(shù)據(jù)源,目前已經(jīng)支持Graphite、InfluxDB、OpenTSDB、Elasticsearch。
- grafana 高版本也支持告警功能,支持各種告警通道:webhook,alertmanager、mail、釘釘?shù)鹊取?/li>
- 每一個(gè)數(shù)據(jù)源的查詢語言和能力都是不一樣的。你能夠把來自多個(gè)數(shù)據(jù)源的數(shù)據(jù)組合到一個(gè)儀表板,但每個(gè)面板被綁定到一個(gè)特定的數(shù)據(jù)源,它就屬于一個(gè)特定的組織。
一般是Prometheus與Grafana配套使用,有些公司直接使用Grafana告警,而棄用alertmanager。相關(guān)參考文檔如下:
- Grafana官方文檔:https://grafana.com/docs/grafana/latest/
- Grafana GitHub地址:https://github.com/grafana/grafana
- Prometheus原理詳解
- 【云原生】Prometheus Pushgetway講解與實(shí)戰(zhàn)操作
- 【云原生】Prometheus AlertManager講解與實(shí)戰(zhàn)操作
- 【云原生】Prometheus PromQL講解與實(shí)戰(zhàn)操作
- 【云原生】Prometheus 自定義告警規(guī)則
二、Grafana 安裝
1)下載安裝
下載地址:https://grafana.com/grafana/download?platform=linux
2)安裝包信息
- 二進(jìn)制文件: /usr/sbin/grafana-server
- init.d 腳本: /etc/init.d/grafana-server
- 環(huán)境變量文件: /etc/sysconfig/grafana-server
- 配置文件: /etc/grafana/grafana.ini
- 啟動(dòng)項(xiàng): /usr/lib/systemd/system/grafana-server.service
- 日志文件:/var/log/grafana/grafana.log
- 默認(rèn)配置的sqlite3數(shù)據(jù)庫:/var/lib/grafana/grafana.db
- grafana 默認(rèn)插件的存放位置:/var/lib/grafana/plugins
3)啟動(dòng)服務(wù)
4)Grafana 訪問
默認(rèn)端口是3000?,訪問地址:http://IP:3000?默認(rèn)賬號(hào)/密碼:admin/admin
三、Grafana 功能介紹
- Data Source(數(shù)據(jù)源):Grafana支持多種不同的時(shí)序數(shù)據(jù)庫數(shù)據(jù)源,Grafana對(duì)每種數(shù)據(jù)源提供不同的查詢方法,而且能很好的支持每種數(shù)據(jù)源的特性。官方地址:https://grafana.com/docs/grafana/latest/datasources/
- DashBoard:儀表盤,就像汽車儀表盤同樣能夠展現(xiàn)不少信息,包括車速,水箱溫度等。Grafana的DashBoard就是以各類圖形的方式來展現(xiàn)從Datasource拿到的數(shù)據(jù)。https://grafana.com/grafana/dashboards/
- Row:行,DashBoard的基本組成單元,一個(gè)DashBoard能夠包含不少個(gè)row。一個(gè)row能夠展現(xiàn)一種信息或者多種信息的組合,好比系統(tǒng)內(nèi)存使用率,CPU五分鐘及十分鐘平均負(fù)載等。因此在一個(gè)DashBoard上能夠集中展現(xiàn)不少內(nèi)容。
- Panel:面板,實(shí)際上就是row展現(xiàn)信息的方式,支持表格(table),列表(alert list),熱圖(Heatmap)等多種方式,具體能夠去官網(wǎng)上查閱。
- Query Editor?:查詢編輯器,用來指定獲取哪一部分?jǐn)?shù)據(jù)。相似于sql查詢語句,好比你要在某個(gè)row里面展現(xiàn)test這張表的數(shù)據(jù),那么Query Editor里面就能夠?qū)懗蓅elect *from test。這只是一種比方,實(shí)際上每一個(gè)DataSource獲取數(shù)據(jù)的方式都不同,因此寫法也不同(https://grafana.com/docs/grafana/latest/datasources/),好比像zabbix,數(shù)據(jù)是以指定某個(gè)監(jiān)控項(xiàng)的方式來獲取的。
- Organization:組織,org是一個(gè)很大的概念,每一個(gè)用戶能夠擁有多個(gè)org,grafana有一個(gè)默認(rèn)的main org。用戶登陸后能夠在不一樣的org之間切換,前提是該用戶擁有多個(gè)org。不一樣的org之間徹底不同,包括datasource,dashboard等都不同。建立一個(gè)org就至關(guān)于開了一個(gè)全新的視圖,全部的datasource,dashboard等都要再從新開始建立。
- User:用戶,這個(gè)概念應(yīng)該很簡單,不用多說。Grafana里面用戶有三種角色admin,editor,viewer。admin權(quán)限最高,能夠執(zhí)行任何操做,包括建立用戶,新增Datasource,建立DashBoard。editor角色不能夠建立用戶,不能夠新增Datasource,能夠建立DashBoard。viewer角色僅能夠查看DashBoard。在2.1版本及以后新增了一種角色read only editor(只讀編輯模式),這種模式容許用戶修改DashBoard,可是不容許保存。每一個(gè)user能夠擁有多個(gè)organization。
四、使用mysql存儲(chǔ)
1)安裝mysql
mysql安裝可以參考我下面這篇文章,這里就不再重復(fù)講解了:MySQL高可用實(shí)戰(zhàn)( MHA)
2)修改grafana配置
1、創(chuàng)建grafana用戶和grafana庫
2、修改grafana配置
配置文件: /etc/grafana/grafana.ini
重啟grafana
五、配置數(shù)據(jù)源(Data sources)
1)配置prometheus 數(shù)據(jù)源
前面我們已經(jīng)部署了prometheus了,所以可以把prometheus數(shù)據(jù)源加進(jìn)來。
2)配置mysql 數(shù)據(jù)源
六、配置監(jiān)控面板(Dashboard)
地址:https://grafana.com/grafana/dashboards/
1)node_exporter 監(jiān)控面板
1、安裝node_exporter
下載地址:https://github.com/prometheus/node_exporter/releases/
【1】下載
【2】配置node_exporter.service啟動(dòng)
【3】啟動(dòng)服務(wù)
【4】檢查
2、配置Prometheus加載node_exporter
添加或修改配置 prometheus.yml
重新加載
3、配置監(jiān)控面板
地址:https://grafana.com/grafana/dashboards/?search=node_exporter
加載有兩種方式:離線(json文件)和在線(通過ID遠(yuǎn)程下載json)
導(dǎo)入之后就可以看到數(shù)據(jù)了。
2)mysql_exporter 監(jiān)控面板
下載地址:https://github.com/prometheus/mysqld_exporter
1、安裝node_exporter
【1】下載
【2】配置數(shù)據(jù)庫憑證創(chuàng)建數(shù)據(jù)庫憑證文件,為用戶創(chuàng)建添加正確的用戶名和密碼并設(shè)置所有權(quán)限:
【3】配置mysql_exporter.service啟動(dòng)
【4】啟動(dòng)服務(wù)
【5】檢查
2、配置Prometheus加載mysql_exporter
添加或修改配置 prometheus.yml
重新加載
3、配置監(jiān)控面板
地址:https://grafana.com/grafana/dashboards/7362-mysql-overview/
3)Grafana Query語法
4)自定義監(jiān)控面板
上面兩個(gè)是網(wǎng)上提供的面板,其實(shí)在生產(chǎn)環(huán)境中,很多時(shí)候是需要自定義監(jiān)控項(xiàng)的。
1、Prometheus數(shù)據(jù)源
【1】新建一個(gè)空面板
- Panel:面板,實(shí)際上就是row展現(xiàn)信息的方式,支持表格(table),列表(alert list),熱圖(Heatmap)等多種方式,具體能夠去官網(wǎng)上查閱。
- Row:行,DashBoard的基本組成單元,一個(gè)DashBoard能夠包含不少個(gè)row。一個(gè)row能夠展現(xiàn)一種信息或者多種信息的組合,好比系統(tǒng)內(nèi)存使用率,CPU五分鐘及十分鐘平均負(fù)載等。因此在一個(gè)DashBoard上能夠集中展現(xiàn)不少內(nèi)容。
【2】編寫PromQL表達(dá)式
選擇Prometheus數(shù)據(jù)源并且選擇Query? 就可以直接寫 PromQL。先在Prometheus上調(diào)試promql,在粘貼過來就行了。
上面只顯示一個(gè)機(jī)器的內(nèi)存,顯然還不完善,如果想顯示多個(gè),可以這樣表達(dá):
【3】變量使用
顯然上面的方式不太好,這里使用變量的方式動(dòng)態(tài)獲取實(shí)例個(gè)數(shù)。先來了解Grafana的幾個(gè)函數(shù):
函數(shù) | 作用 |
label_values(label) | 返回Promthues所有監(jiān)控指標(biāo)中,標(biāo)簽名為label的所有可選值。 |
label_values(metric, label) | 返回Promthues所有監(jiān)控指標(biāo)metric中,標(biāo)簽名為label的所有可選值。 |
metrics(metric) | 返回所有指標(biāo)名稱滿足metric定義正則表達(dá)式的指標(biāo)名稱 |
query_result(query) | 返回prometheus查詢語句的查詢結(jié)果 |
參數(shù)解釋:1、instance
- type?:變量類型,變量類型有多種,其中Query表示這個(gè)變量是一個(gè)查詢語句,type可以是Custom自定義,type也可以是Data source,Data source就表示該變量代表一個(gè)數(shù)據(jù)源,如果是datasource你可以用該變量修改整個(gè)DashBoard的數(shù)據(jù)源,變量類型還可以是時(shí)間間隔Interval等等。這里我們選擇Query。
2、General
- Name:變量名,比如我這里取名為ip,到時(shí)候要使用這個(gè)變量名就用$ip來調(diào)用。
- Label:是對(duì)應(yīng)下拉框的名稱,默認(rèn)就是變量名,選擇默認(rèn)即可。
- Description:描述。
3、Query options
- Data source:數(shù)據(jù)源,不用多說。
- Query:查詢表達(dá)式,不同的數(shù)據(jù)源查詢表達(dá)式都不同。
- Regex:正則表達(dá)式,用來對(duì)抓取到的數(shù)據(jù)進(jìn)行過濾,這里默認(rèn)不過濾。
- Sort:排序,對(duì)下拉框中的變量值做排序,排序的方式挺多的,默認(rèn)是disable,表示查詢結(jié)果是怎樣下拉框就怎樣顯示。此處選disable。
- Refresh?: 何時(shí)去更新變量的值,變量的值是通過查詢數(shù)據(jù)源獲取到的,但是數(shù)據(jù)源本身也會(huì)發(fā)生變化,所以要時(shí)不時(shí)的去更新變量的值,這樣數(shù)據(jù)源的改變才會(huì)在變量對(duì)應(yīng)的下拉框中顯示出來。Refresh有兩個(gè)值可以選擇。On Dashboard Load:在DashBoard加載時(shí)更新。On Time Range Change:在時(shí)間范圍變化時(shí)更新。此處,選擇On Dashboard Load,當(dāng)數(shù)據(jù)源發(fā)生更新是,刷新一下當(dāng)前DashBoard,變量的值也會(huì)跟著發(fā)生更新。
4、Selection Options
- Multi-value:啟用這個(gè)功能,變量的值就可以選擇多個(gè),具體表現(xiàn)在變量對(duì)應(yīng)的下拉框中可以選多個(gè)值的組合。
- Include All option:啟用這個(gè)功能,變量下拉框中就多了一個(gè)all選項(xiàng)。
- Custom all value:啟用Include All option這個(gè)功能,才會(huì)出現(xiàn)Custom all value這個(gè)輸入框,表示給all這個(gè)選項(xiàng)自定義一個(gè)值,all這個(gè)選項(xiàng)默認(rèn)是所有值的組合,你也可以自定義。
【溫馨提示】雖然選擇組合值可以在一個(gè)panel里面查看多種監(jiān)控?cái)?shù)據(jù),但是由于不同監(jiān)控?cái)?shù)據(jù)的數(shù)值大小格式都可能不一樣,在一個(gè)圖形里面格式很難兼容,這樣就會(huì)出現(xiàn)問題,所以此處建議默認(rèn)都不選。
修改表達(dá)如下:
2、MySQL數(shù)據(jù)源
可以直接寫sql,直接以表格的形式展現(xiàn),非常的方便的,像在大數(shù)據(jù)領(lǐng)域sql是使用最頻繁的,所以使用這種直接sql的方式顯示圖表監(jiān)控情況還是非常方便的。