prometheus簡單查詢語法(PromQL)


prometheus查詢語法(PromQL)

Prometheus底層監控數據存儲是時序數據庫,它 提供了一種名為 PromQL(Prometheus Query Language)的函數式查詢語言,可以讓用戶實時查詢和聚合時序數據庫的數據。他是一組組的鍵值對+標簽的組合。

prometheus常見的查詢語法

  1. 字符串

    PromQL遵循與Go語言相同的轉義規則,單引號和雙引號一樣,里面有反斜杠\就是轉義。反引號`里面的內容全部是字符串,不會做任何轉義。

    "this is a string"
    'these are unescaped: \n \\ \t'
    `these are not unescaped: \n ' " \t`
    
  2. 浮點數

    23
    -2.43
    3.4e-9
    0x8f
    -Inf
    NaN
    
  3. 查詢某個指標的所用時序數據

    http_requests_total #指標名
    #可以通過{}號篩選里面的標簽。
    http_requests_otal{job="prometheus",group="canary"}
    
    • =:選擇與提供的字符串完全相同的標簽。
    • !=:選擇不等於提供的字符串的標簽。
    • =~:選擇與提供的字符串正則表達式匹配的標簽。
    • !~:選擇與提供的字符串不匹配的標簽。

    匹配正則,多組數據

    http_requests_total{environment=~"staging|testing|development",method!="GET"}
    

    指標名字也可以另外一種方式__name__=,后面也可以跟=,!=,=~,!~

    {__name__=~"job:.*"} #查詢名稱以job開頭的所有指標:
    {__name__="http_requests_total"}
    
  4. 某個指標的范圍查詢

    http_requests_total{job="prometheus"}[5m]  #查詢最近5分鍾的所用時序數據
    
    • ms - 毫秒
    • s - 秒
    • m - 分鍾
    • h - 小時
    • d - days - 假設一天總是 24 小時
    • w - 周 - 假設一周總是 7d
    • y - 年 - 假設一年總是 365d
    • 1h30m - 也可以是組合模式,代表最近1小時30分
  5. 查詢某個指標的時許偏移量

    此功能需要在prometheus server啟動時候加上--enable-feature=promql-negative-offset標志啟用。

    很多監控指標,在繪制圖像過程中,需要同步或者環比,所以需要偏移量。

    http_requests_total offset 5m  #偏移量為5分鍾
    http_requests_total offset 1d  #偏移量為1天
    sum(http_requests_total{method="GET"} offset 5m) #
    rate(http_requests_total[5m] offset -1d) #還可以指定負偏移量
    
  6. 修飾符

    返回特定時間點的指標監控值,可以通過設置--enable-feature=promql-at-modifier標志來啟用。

    http_requests_total @ 160974600   #160974600是一個時間戳
    sum(http_requests_total{method="GET"} @ 1609746000) 
    rate(http_requests_total[5m] @ 1609746000)
    
  7. 子查詢

    子查詢一般用不到。子查詢允許您對給定的范圍和分辨率運行即時查詢。子查詢的結果是一個范圍向量。

    句法: <instant_query> '[' <range> ':' [<resolution>] ']' [ @ <float_literal> ] [ offset <duration> ]

    • <resolution>是可選的。默認為全局評估區間。

參考鏈接

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM