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