Prometheus語法初探
- Gauge,度量值,這個值是有變化的,如CPU使用率,有高有低
- Counter,累計值,從程序開始,只增不減,如開機運行時長
- sum函數(shù)可以對瞬時向量進行求和,如sum(node_cpu_seconds_total),將統(tǒng)計所有值的總和。類似于select sum(value) from node_cpu_seconds_total
- sum后面可以加 by 關(guān)鍵字,表示通過那個維度進行數(shù)據(jù)統(tǒng)計求和,如sum by (mode) (node_cpu_seconds_total) 類似于 select sum(vaule) from node_cpu_seconds_total group by mode
- min函數(shù)可以對瞬時向量進行求最小值,min(node_cpu_seconds_total)。類似于select min(value) from node_cpu_seconds_total
- 同樣,也支持by關(guān)鍵字,進行某個維度的求最小值
- max函數(shù)可以對瞬時向量進行求最大值,max(node_cpu_seconds_total)。類似于select max(value) from node_cpu_seconds_total
- 同樣,也支持by關(guān)鍵字,進行某個維度的求最大值
- avg函數(shù)可以對瞬時向量進行求平均avg(node_cpu_seconds_total)。類似于select avg(value) from node_cpu_seconds_total
- 同樣,也支持by關(guān)鍵字,進行某個維度的求最均值
- count函數(shù)可以對瞬時向量個數(shù)求總數(shù),如count(node_cpu_seconds_total)類似于select count(*) from node_cpu_seconds_total
- 同樣,也支持by關(guān)鍵字,進行某個維度的求最總個數(shù)
- topk函數(shù)可以對瞬時向量的值從大到小進行排列,并獲取前N個值,需要傳入兩個參數(shù),一個是N,一個是指標,如topk(5,node_cpu_seconds_total),類似于select * from (select * from node_cpu_seconds_total order by value desc) where rownum<=5
- 同樣,也支持by關(guān)鍵字,進行某個維度進行計算
- 同topk相反,這里不再贅述。
- 指標支持加法運算,一個即時向量,由于標簽值不一致,所以會有多個值,這些值可以跟另外一個即時向量進行相加,這里的相加要保持一個原則,那就是需要具有同一個標簽值的才會相加。node_cpu_seconds_total + node_cpu_seconds_total,這相當于所有值都多加一個原來的值,總體的值的數(shù)量是保持不變的。
- 相加的兩個瞬時向量個數(shù)不一致情況:node_cpu_seconds_total和node_cpu_seconds_total{mode="idle"},后者經(jīng)過過濾后,數(shù)量上明顯比第一個少,此時輸出的結(jié)果個數(shù)同過濾后數(shù)量少的個數(shù)一致。
- 兩個即時向量都不具備有同樣的標簽值情況:如node_cpu_seconds_total + node_memory_Active_bytes,此時由于沒有任何一個值具有相同的標簽值,所以結(jié)果為nodata,此時我們可以用ignoring關(guān)鍵字,對標簽值進行忽略,使他們可以進行相加。由于node_cpu_seconds_total比node_memory_Active_bytes多了cpu和mode標簽,所以node_cpu_seconds_total數(shù)量個數(shù)一般大于node_memory_Active_bytes個數(shù),所以需要使用group_left,node_cpu_seconds_total + ignoring(cpu,mode) group_left node_memory_Active_bytes,結(jié)果集以左邊的node_cpu_seconds_total個數(shù)為準,如果加號兩個即時向量位置相反,則可以使用group_right,如node_memory_Active_bytes + ignoring(cpu,mode) group_right node_cpu_seconds_total
- 類似加法運算
- 類似加法運算
- 類似加法運算
- ==用于判斷左右兩邊的值是否相等,如果相等則為1(true),如果不等則為0(false),如node_cpu_seconds_total ==BOOL 0 判斷是否有存在0值
- 類似==
- >=用于判斷左邊的值是否大于或等于右邊的值,如果滿足,則為1(true),如果不滿足則為0(false)
- 類似大于等于
- 類似大于等于
- 類似大于等于
- 對多個指標的數(shù)據(jù)集進行標簽判斷,獲取兩個指標集具有共同的標簽的值node_cpu_seconds_total and node_cpu_guest_seconds_total,類似sql select * from node_cpu_seconds_total a,node_cpu_guest_seconds_total b where a.cpu = b.cpu and a.instance = b.instance and a.job=b.job and a.mode = b.mode
- 對多個指標集數(shù)據(jù)進行展示,如果有標簽重復,則僅顯示其中一個標簽的值。
- 對多個指標的數(shù)據(jù)集進行標簽判斷,獲取兩個指標集不具有共同的標簽的值,結(jié)果集以最左邊為準,如node_memory_Active_bytes unless node_cpu_seconds_total和node_cpu_seconds_total unless node_memory_Active_bytes結(jié)果是不一樣的。
- abs返回即時向量的絕對值
- absent用于檢測即時向量中,某個標簽是否存在,如果不存在,則value為1,如檢查標簽為node_arp_entries{instance=“l(fā)ocalhost:9100”}是否存在有元素,如果存在則返回nodata,如果不存在value則為1
- 常用于檢測指標是否丟失。
- 用于將浮點數(shù)向上化為最接近的一個整數(shù),如值為0.1,則為向上取整,成為1。
- 用于將浮點數(shù)向下化為最接近的一個整數(shù),如值為0.1,則為向下取整,成為0。
- 該函數(shù)需要兩個參數(shù),一個是向量,另外一個是封頂值,如果一個向量的值超過該封頂值,該向量的值則為封頂值。
- absent_over_time用于檢測在給定的區(qū)間向量中,是否存在有元素,如果沒有則value為1。
- 返回給定的區(qū)間向量中,對比于當前值,發(fā)生變化的元素的數(shù)量。
- 返回區(qū)間向量中,第一個元素和最后一個元素之間的變化值,時間區(qū)間也參與算法計算,所以即時第一個元素和最后一個元素均為整數(shù),該值也未必是整數(shù)。
- 須作用在gauge類型的指標
- 返回區(qū)間向量中,滿足線性規(guī)律的每秒變化值
- 須作用在gauge類型的指標
- 該函數(shù)計算區(qū)間向量間,最后兩個元素的差值,如果區(qū)間內(nèi)沒有兩個元素,則返回nodata
- 須作用在gauge類型的指標
- 該函數(shù)計算區(qū)間向量間,最后兩個元素的差值,并且除以區(qū)間的秒數(shù),如果區(qū)間內(nèi)沒有兩個元素,則返回nodata。
- 該函數(shù)技術(shù)按區(qū)間向量的最大(max)、最小(min)、平均(avg)、求和(sum)、求總數(shù)()等匯聚值。
文章轉(zhuǎn)載:?分布式實驗室
(版權(quán)歸原作者所有,侵刪)