1. 程式人生 > >Grafana教程(prometheus 基本查詢語法)

Grafana教程(prometheus 基本查詢語法)

prometheus原理可以參考:https://blog.csdn.net/luanpeng825485697/article/details/82318204

k8s上的部署可以參考: https://blog.csdn.net/luanpeng825485697/article/details/83755430

一、Data Source — 資料來源

Grafana支援多種不同的時序資料庫資料來源,Grafana對每種資料來源提供不同的查詢方法,而且能很好的支援每種資料來源的特性。

Grafana預設支援的資料來源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch

Grafana支援同時繫結多套資料來源,根據自己需求管理即可。

資料來源新增入口:

http://<ip>:3000/datasources/new

新增InfluxDB資料來源
在這裡插入圖片描述

其中主要需要關注的是Name、Type、HTTP Settings,以及InfluxDB Details

配置項 ken.io 的解釋
Name 資料來源名稱,建議以資料來源型別+用途命名
Type 資料來源型別,選擇對應的InfluxDB即可
URL 填寫InfluxDB對應的API地址即可,如果Grafana跟InfluxDB不在同一臺機器,將localhost換成IP即可
Access API訪問方式,一共有Direct和Proxy兩個選項。建議選擇Proxy
Access-Direct 瀏覽器直連資料來源API,然後由Grafana解析返回的資料
Access-Proxy Grafana後端通過API訪問資料來源,然後返回給瀏覽器展示
Database InfluxDB資料來源對應資料庫名稱
User InfluxDB資料來源賬號密碼

資料來源新增/更新成功後會有如下提示:
在這裡插入圖片描述

新增elasticsearch資料來源

預設Grafana是安裝了ES外掛的,如果沒裝需要安裝相應data source外掛。

點選Data Sources–>+ Add data source–> Type–>elasticsearch

在這裡插入圖片描述

Metric查詢編輯器

Elasticsearch查詢編輯器允許選擇多個指標和組由多個條款或過濾器。在右邊使用加號和減號圖示來新增/刪除索引或按子句分組。有些度量值和組子句都有選項,單擊選項文字以展開檢視並按選項編輯公制或組。
在這裡插入圖片描述

Query:Lucence查詢語法,跟kibana的查詢一樣,詳情請查閱ES的官方文件。

Metric:計量的標準,可以取最大、最小、平均值或者count條目數等,Options可以進行指令碼的計算,這裡我把value的值乘以8,來進行網路Byte和bite的換算。

Group by:排序標準。可以以時間軸進行排序,也可以以自定義的term進行排序。需要這裡需要注意一點,ES裡如果需要以自定義的字串term進行排序,會報錯:“Fielddata is disabled on text fields by default.”; 解決辦法是用"keyword"進行排序,需要手動加入字尾’.keyword’,參考文件如下:https://www.elastic.co/guide/en/elasticsearch/reference/current/fielddata.html

Query裡也可以用變數來代替,變數是在templating裡預先定義好的。後面再詳細介紹templating的概念。

二、Organization — 組織

Grafana為了支援多種部署模式支援多組織,包括使用一個單一的Grafana例項為多個潛在的不受信任的組織提供的服務。

在許多情況下,Grafana將部署一個單一的組織。

每個組織可以有一個或多個數據源。

所有的儀表板是由一個特定的組織擁有的。

三、User — 使用者

使用者在Grafana與賬戶是一個概念。

一個使用者可以屬於一個或多個組織,可以通過角色來分配不同的許可權。

Grafana支援多種使用者認證的方式。

更多的使用者管理詳情,可以看 文件的User Auth 部分。

四、Row — 行

行是Grafana在儀表盤介面的邏輯分割槽器,用於將多個面板連線在一起。

行一般是12個單位寬度。

單位寬度是Grafana為了支援不同解析度的螢幕所採取的一種策略,這樣Grafana可以在不同解析度的顯示器上擁有良好的展示效果。

五、Panel — 面板

面板是Grafana最基本的展示單位。

每個面板提供一個查詢編輯器(依賴於面板中選擇的資料來源),允許您利用查詢編輯器來編輯出一個完美的展示影象。

面板提供各種各樣的樣式和格式選項,而且支援拖拽來在儀表盤上重排,並且可以調整大小。

目前有四個面板型別:影象,狀態,面板列表,表格 等型別,而且也支援文字型別。

面板(或整個儀表板)可以以多種方式輕鬆共享,既可以通過連結分享,也可以匯出JSON等文字檔案。

六、Query Editor — 語句管理

Query Editor 顧名思義,就是語句管理,每個面板都提供一個Query Editor,我們可以通過編寫語句來控制面板展示不同的圖表。

七、Dashboard — 儀表盤

儀表盤是Grafana裡面最重要的展示部分。

儀表盤可以視為一組一個或多個面板組成的一個集合,來展示各種各樣的面板。

儀表盤也可以通過 註釋 來標記出各種各樣的事件。

儀表盤也支援通過多種不同的方式來共享,支援通過連結的方式共享或者匯出JSON等格式的檔案。

儀表盤還可以使用 模板 來允許使用者互動式的選擇資料來展示。

儀表盤由行(Row)+圖表面板(Panel)組成。

Panel主要支援:Graph,Singlestat,Dashlist,Table和Text。

儀表盤(Dashboard)新增入口:

http://<ip>:3000/dashboard/new

新增儀表盤(Dashboard)
在這裡插入圖片描述

點選設定(齒輪圖示)對儀表盤(Dashboard)進行設定
在這裡插入圖片描述

通常只需要關注Name這個選項即可,填寫完畢後,點選儲存按鈕儲存
或者使用快捷鍵(Ctrl+S)儲存設定/完成建立

新增面板(Panel)

儀表盤(Dashboard)建立完成後,只有一個空行
在這裡插入圖片描述

將滑鼠移動到行左上角的選單圖示,就會顯示行操作選單
在這裡插入圖片描述

這裡我們選擇Add Panel即可
在這裡插入圖片描述

這裡我們以曲線圖(Graph)為例

在這裡插入圖片描述

圖表面板配置
滑鼠單擊圖表標題可以撥出圖表選單
在這裡插入圖片描述

點選Edit進入編輯檢視,預設是Metric設定
在這裡插入圖片描述

主要配置項說明

配置項 ken.io 的說明
DataSource 選擇Grafana已配置的資料來源
FROM-Default 預設Schema,保持不變即可
FROM-measurement 對應的InfluxDB的表名
WHERE WHERE條件,根據自己需求選擇
SELECT-Field 對應選的欄位,可根據需求增減
SELECT-mean() 選擇的欄位對應的InfluxDB的函式
GroupBY-time() 根據時間分組
GROUPBY-fill() 當不存在資料時,以null為預設值填充

以下是配置示例:
在這裡插入圖片描述

所有的配置項都會被解析生API請求的語法,具體解析的內容可以通過查詢檢查器(Query Inspector)檢視

接下來配置通用配置項(General)

在這裡插入圖片描述

ken.io 這裡只將Title設定為CPU-Load不做其他調整

圖表面板的配置完成後,不要忘記儲存儀表盤(Dashboard)

在這裡插入圖片描述

grafana映象重新封裝

由於官方grafana映象支援的資料來源或者展示面板不夠豐富,所以我們需要重新封裝映象

Dockerfile檔案內容如下

FROM grafana/grafana:latest

# 時鐘圖
Run grafana-cli plugins install grafana-clock-panel
# 餅圖
Run grafana-cli plugins install grafana-piechart-panel   
# 氣泡圖
Run grafana-cli plugins install digrich-bubblechart-panel
#
Run grafana-cli plugins install raintank-worldping-app
# json資料
Run grafana-cli plugins install grafana-simple-json-datasource
#zabbix報警
Run grafana-cli plugins install alexanderzobnin-zabbix-app

prometheus 基本查詢語法

1,檢視指標

直接輸入指標名字就行了,grafana會自動補全

在這裡插入圖片描述

2,檢視某個指標的使用率,比如cpu使用率

用到rate函式,rate用來計算兩個間隔時間內發生的變化率。如

rate(指標名{篩選條件}[時間間隔])

比如檢視1分鐘內非idle的cpu使用率

rate(node_cpu_seconds_total{mode!=“idle”}[1m])

在這裡插入圖片描述

3,求和演算法

函式為sum,比如上面得到各個指標的cpu使用率,如果我想計算總的cpu使用率怎麼辦?

sum(rate(node_cpu_seconds_total{mode!=“idle”}[1m])) by (instance_name)
在這裡插入圖片描述

by的含義表示將結果根據instance_name來進行區分。跟mysql語句中 group by差不多。

參考官網:https://prometheus.io/docs/prometheus/latest/querying/basics/

八、總結

以上只是對Grafana裡的基本概念做了一個簡單的介紹,主要目的是幫助大家建立起對Grafana的基本印象,在以後的使用中,能做到心中有數。

參考:https://ken.io/note/grafana-quickstart-influxdb-datasource-graph
https://www.kancloud.cn/huyipow/prometheus/525003