Prometheus語(yǔ)法初探




- Gauge,度量值,這個(gè)值是有變化的,如CPU使用率,有高有低
- Counter,累計(jì)值,從程序開始,只增不減,如開機(jī)運(yùn)行時(shí)長(zhǎng)




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