Grafana使用語法之ES/Luence篇
最近的專案主要使用grafana作為大盤,其中資料來源的種類多樣,有es,mysql,Prometheus等各類的,不同的資料來源,在實際使用時,各有差別,因此特意小結梳理一下,做個備份,方便以後自查,有興趣的小夥伴也可以瞅一瞅 (純乾貨。。。)
1。 查詢成員欄位
語法:
find:表示查什麼東西 type:表示檢索條件
如查詢型別的欄位,可以如下處理
什麼時候用這個呢?
比如我想知道這個es中定義了哪些欄位 比如在配置Grafana的變數時,可以使用它來做一些限定
2。 查詢成員值
語法:
find:後面跟上的是 terms, 表示查詢具體的值 field: 用於限定需要查的成員 size:數量限制,可以不填
舉例如下,查詢所有的伺服器ip
使用範圍:
常見於配置Grafana變數,配置一個伺服器ip選擇的變數,用於檢視不同伺服器的表現情況
3。 條件查詢成員值
在前面的基礎上加一下限定,比如一個es為多個應用使用,此時我只關注其中app1的大盤,此時配置伺服器時,想加一個條件限定
語法: `{“find”: “terms”, “field”: “成員名”, “query”: “k:v”}
query:lucence查詢語法,要求成員k的值為v
舉例,查詢server_name = app的伺服器ip
4。 Lucene 查詢語法
配置大盤的查詢條件,主要就是藉助lucene語法來處理,接下來看一下常見的使用姿勢
4。1 條件等於查詢
語法:
filed_name: 欄位名 field_value: 需要檢索的值
注意:
中間使用英文冒號分隔,表示條件命中
4。2 不等於查詢
如果希望不等於查詢,主要使用下面這種方式
4。3 欄位本身存在與否 : 查詢包含field成員的記錄 : 查詢不包含field成員的記錄4。4 萬用字元查詢
在查詢條件中,包含下面兩個的表示使用通配查詢
匹配打個字元 匹配0或多個字元
比如我有個應用,部署多個環境,分別名為 app-cn, app-usa,現在想統計整個應用的情況,就可以使用下面這種正則方式
除了上面的示例,在實際的工作中,更常見的是url的統計,比如統計 這個域名開頭的請求
4。5 模糊搜尋
在單次後面新增劑上 來實現模糊搜尋,這種更適用於搜尋業務場景,通常對於grafana的大盤配置,個人感覺不太實用
實用方式
4。6 範圍搜尋
除了前面的精確搜尋,我們還可以進行範圍搜尋
語法: ,
:閉包區間,包含左邊的值 :開區間,不包含兩邊值 如果為 表示某一側不限制範圍
例項演示,查詢http狀態碼為 4xx 的case
除了上面這種寫法,也可以使用 的方式,比如上面的寫法等價
4。7 邏輯操作
多條件組合,使用AND/OR來處理,這裡的組合即可以表明多個field,也可以是一個field的多個value組合
如多欄位匹配:找出app-cn應用中狀態碼為500的記錄
如多value匹配:找出狀態碼為500, 503的記錄
4。8 轉移字元
當查詢條件中,包含下面字元中的一個時,需要使用注意
特殊字元: 轉義修飾:
如url的查詢時,通常會用到轉義
5。 小結
本文主要介紹Grafana中使用es資料來源時,常見的語法操作,當然其中Lucence的部分,在kibana中也同樣適用;
通常來講,在Grafana中,有下面幾個地方會使用到上面的知識點
變數配置時,使用第1,2,3節中的方式,過濾出下拉選項
在大盤配置的Query輸入框中,使用 Lucene 語法
在Explore中使用Lucene語法