久久国产乱子伦精品免费M,亚洲一区二区三区91,欧美国产在线视频,国产精品视频久久

Prometheus語法初探

概述
Prometheus是一套使用Go語言進行編寫的監(jiān)控工具,專注于基礎(chǔ)監(jiān)控,默認僅保留15天的監(jiān)控數(shù)據(jù),15天的監(jiān)控數(shù)據(jù),已經(jīng)足夠運維人員去排查和分析運維故障。Prometheus有專門的PQL語言,可以對采集上來的指標進行多維度、函數(shù)分析,具有高度的指標定制化能力。本文將同大家一起學習Prometheus的PQL語法,驗證并記錄下過程。
PQL重要概念
即時向量
一個時間點某指標的值,如:
Prometheus語法初探
Prometheus語法初探
區(qū)間向量
指的是在某段時間內(nèi)metric的取值,每個時間點都包含一系列的值,如:Prometheus語法初探
Prometheus語法初探
指標類型
  • Gauge,度量值,這個值是有變化的,如CPU使用率,有高有低
  • Counter,累計值,從程序開始,只增不減,如開機運行時長
標簽
一個指標,可以包括多個標簽(label),用來指示這個指標的具體表示信息,起到對一個指標的修飾作用,標簽可使用正則表達式進行匹配。
如node_cpu_seconds_total指標,直接查詢該指標,會打印出該指標的全部標簽數(shù)據(jù)。
Prometheus語法初探
拿關(guān)系型數(shù)據(jù)比較,可以這么類似比喻,node_cpu_seconds_total為表,cpu,instance,job,mode,value為其字段,表數(shù)據(jù)總為最新的數(shù)據(jù),數(shù)據(jù)量總數(shù)等于各個字段的枚舉值相乘。
當我們給這個Metric指標做了標簽過濾時,相當于執(zhí)行了where限制性語句,如node_cpu_seconds_total{mode="idle"},只過濾出包含mode字段,并且其值為idle,類似于SQL語句。
Prometheus語法初探
標簽支持正則表達式,使用=~(Rexp),如node_cpu_seconds_total{mode=\~"idle|iowait"},類似于SQL語句。
Prometheus語法初探
標簽過濾器可以有多個,用逗號進行隔開,相當于執(zhí)行了where … and … 語句,如node_cpu_seconds_total{mode="idle",cpu='0'},類似于SQL語句。Prometheus語法初探
配合標簽,我們可以精確的找到我們需要用于展示或者計算的指標值。
偏移量offset
指標通過偏移量offset關(guān)鍵字,可以查詢相對于當前時間點之前的數(shù)據(jù),默認獲取當前最新數(shù)據(jù),如node_cpu_seconds_total offset 5m,獲取5分鐘前該指標的數(shù)據(jù)。
注釋
PQL使用"#"對語法進行注釋。
函數(shù)
sum
  • 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
  • min函數(shù)可以對瞬時向量進行求最小值,min(node_cpu_seconds_total)。類似于select min(value) from node_cpu_seconds_total
  • 同樣,也支持by關(guān)鍵字,進行某個維度的求最小值
max
  • max函數(shù)可以對瞬時向量進行求最大值,max(node_cpu_seconds_total)。類似于select max(value) from node_cpu_seconds_total
  • 同樣,也支持by關(guān)鍵字,進行某個維度的求最大值
avg
  • avg函數(shù)可以對瞬時向量進行求平均avg(node_cpu_seconds_total)。類似于select avg(value) from node_cpu_seconds_total
  • 同樣,也支持by關(guān)鍵字,進行某個維度的求最均值
count
  • count函數(shù)可以對瞬時向量個數(shù)求總數(shù),如count(node_cpu_seconds_total)類似于select count(*) from node_cpu_seconds_total
  • 同樣,也支持by關(guān)鍵字,進行某個維度的求最總個數(shù)
topk
  • 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)鍵字,進行某個維度進行計算
bottomk
  • 同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ù)集操作
and
  • 對多個指標的數(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
or
  • 對多個指標集數(shù)據(jù)進行展示,如果有標簽重復,則僅顯示其中一個標簽的值。
unless
  • 對多個指標的數(shù)據(jù)集進行標簽判斷,獲取兩個指標集不具有共同的標簽的值,結(jié)果集以最左邊為準,如node_memory_Active_bytes unless node_cpu_seconds_total和node_cpu_seconds_total unless node_memory_Active_bytes結(jié)果是不一樣的。
函數(shù)
用于即時向量的函數(shù)
abs
  • abs返回即時向量的絕對值
absent
  • absent用于檢測即時向量中,某個標簽是否存在,如果不存在,則value為1,如檢查標簽為node_arp_entries{instance=“l(fā)ocalhost:9100”}是否存在有元素,如果存在則返回nodata,如果不存在value則為1
  • 常用于檢測指標是否丟失。
ceil
  • 用于將浮點數(shù)向上化為最接近的一個整數(shù),如值為0.1,則為向上取整,成為1。
floor
  • 用于將浮點數(shù)向下化為最接近的一個整數(shù),如值為0.1,則為向下取整,成為0。
clamp_max
  • 該函數(shù)需要兩個參數(shù),一個是向量,另外一個是封頂值,如果一個向量的值超過該封頂值,該向量的值則為封頂值。
clamp_min
該函數(shù)需要兩個參數(shù),一個是向量,另外一個是觸底值,如果一個向量的值超過該觸底值,該向量的值則為觸底值。
用于區(qū)間向量的函數(shù)
區(qū)間向量的函數(shù)執(zhí)行完成后,便成為了即時向量。
absent_over_time
  • absent_over_time用于檢測在給定的區(qū)間向量中,是否存在有元素,如果沒有則value為1。
changes
  • 返回給定的區(qū)間向量中,對比于當前值,發(fā)生變化的元素的數(shù)量。
delta
  • 返回區(qū)間向量中,第一個元素和最后一個元素之間的變化值,時間區(qū)間也參與算法計算,所以即時第一個元素和最后一個元素均為整數(shù),該值也未必是整數(shù)。
  • 須作用在gauge類型的指標
deriv
  • 返回區(qū)間向量中,滿足線性規(guī)律的每秒變化值
  • 須作用在gauge類型的指標
idelta
  • 該函數(shù)計算區(qū)間向量間,最后兩個元素的差值,如果區(qū)間內(nèi)沒有兩個元素,則返回nodata
  • 須作用在gauge類型的指標
irate
  • 該函數(shù)計算區(qū)間向量間,最后兩個元素的差值,并且除以區(qū)間的秒數(shù),如果區(qū)間內(nèi)沒有兩個元素,則返回nodata。
<aggregation>_over_time
  • 該函數(shù)技術(shù)按區(qū)間向量的最大(max)、最小(min)、平均(avg)、求和(sum)、求總數(shù)()等匯聚值。
原文鏈接:https://blog.csdn.net/xiaojinran/article/details/112398797

文章轉(zhuǎn)載:?分布式實驗室
(版權(quán)歸原作者所有,侵刪)

相關(guān)新聞

歷經(jīng)多年發(fā)展,已成為國內(nèi)好評如潮的Linux云計算運維、SRE、Devops、網(wǎng)絡(luò)安全、云原生、Go、Python開發(fā)專業(yè)人才培訓機構(gòu)!

    1. 主站蜘蛛池模板: 博客| 凉城县| 萍乡市| 随州市| 滨海县| 西乌珠穆沁旗| 广河县| 无极县| 琼结县| 滁州市| 泗阳县| 通城县| 岚皋县| 汶上县| 新营市| 甘孜县| 乌兰察布市| 潼南县| 同江市| 黄梅县| 城口县| 昭平县| 乌苏市| 崇文区| 五寨县| 承德市| 平安县| 墨脱县| 康马县| 田东县| 马龙县| 绵阳市| 平舆县| 大冶市| 凌源市| 保靖县| 天水市| 周宁县| 荥经县| 秦皇岛市| 浙江省|