色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

PromQL查詢剖析

馬哥Linux運維 ? 來源:馬哥Linux運維 ? 2023-03-31 11:39 ? 次閱讀

本文讓我們一起來看看PromQL查詢解析。雖然PromQL有操作符、函數、選擇器等,但我們無需被本篇文章中的這些細節所困擾。讓我們來看看查詢的總體性質:PromQL查詢是如何結構化和類型化的?隨著時間的推移它們是如何評估的?

讓我們來看一下PromQL的查詢結構。PromQL有操作符、函數、選擇器等等,但是我們不要被本篇文章中的細節所困擾。相反,讓我們看看查詢的整體:PromQL查詢是如何構造和輸入的,以及隨著時間的推移它們是如何被評估的?

這篇文章將假設您對PromQL查詢和Prometheus數據模型有大概粗略的了解。

讓我們開始吧!

1.PromQL是一種嵌套的函數式語言

不像SQL或其他一些更傾向于命令式的查詢語言(SELECT * FROM...),PromQL是一種嵌套的函數式語言。這意味著您將所尋找的數據描述為一組嵌套表達式,每個表達式都計算出一個中間值(沒有副作用)。每個中間值都用作它周圍表達式的參數或操作數,而查詢的最外層表達式表示您在表、圖或類似用例中看到的最終返回值。

查詢示例如下所示:

#Rootofthequery,finalresult,approximatesaquantile.
histogram_quantile(
#1stargumenttohistogram_quantile(),thetargetquantile.
0.9,
#2ndargumenttohistogram_quantile(),anaggregatedhistogram.
sumby(le,method,path)(
#Argumenttosum(),theper-secondincreaseofahistogramover5m.
rate(
#Argumenttorate(),therawhistogramseriesoverthelast5m.
demo_api_request_duration_seconds_bucket{job="demo"}[5m]
)
)
)

PromQL表達式不僅是整個查詢,而且是查詢的任何嵌套部分(如上面的rate(…)部分),可以單獨作為查詢運行。在上面的例子中,每個注釋行代表一個表達式。

當你在PromLabs的PromLens查詢可視化工具中分析相同的查詢時,包含子表達式的嵌套表達式結構會變得特別清晰:

039e0516-cf11-11ed-bfe3-dac502259ad0.png

在PromLens中,您可以單擊每個樹節點來分別評估其子表達式,以了解您在嵌套表達式樹的每個部分中處理的數據。

2.輸入的表達式,可能不像你想的那樣

Prometheus中有兩個“類型”的概念:

  • 由抓取目標所報告的度量類型:計數器、儀表、直方圖、摘要或無類型。
  • PromQL表達式的類型:字符串、標量、瞬時向量或范圍向量。

PromQL完全忽略度量類型,只關心表達式類型:每個表達式都有一個類型,每個函數、操作符或其他類型的操作都要求其參數是某種表達式類型。例如,rate()函數要求其參數是一個范圍向量,但rate()本身的計算結果是一個瞬時向量。因此,rate()的結果只能用于期望瞬時向量的地方。

PromQL中可能的表達式類型有:

  • 字符串:類似 "I am a string!". 這些只作為某些函數(如label_join())的參數出現,在PromQL中并不常用。
  • 標量:沒有標注尺寸的單個數值,如 1.234。您將看到這些函數的數值參數,如histogram_quantile(0.9,…)或topk(3,…),以及算術運算。
  • 瞬時向量:一組帶標簽的時間序列,每個序列有一個樣本,所有樣本都有相同的時間戳。瞬時向量可以直接來自TSDB時間序列選擇器,如node_cpu_seconds_total,也可以來自返回它們的任何函數或其他轉換。
node_cpu_seconds_total{cpu="0",mode="idle"}→19165078.75@timestamp_1
node_cpu_seconds_total{cpu="0",mode="system"}→381598.72@timestamp_1
node_cpu_seconds_total{cpu="0",mode="user"}→23211630.97@timestamp_1
  • 范圍向量:一組帶標簽的時間序列,每個序列都有一段時間的樣本范圍。在PromQL中只有兩種方法產生范圍向量:在查詢中使用文字范圍向量選擇器(如node_cpu_seconds_total[5m]),或者使用子查詢(如[5m:10s])。當您想要聚合指定時間窗口內的一系列行為時,范圍向量非常有用,就像您使用rate(node_cpu_seconds_total[5m])計算node_cpu_seconds_total在過去5分鐘內的平均每秒增長率一樣。
node_cpu_seconds_total{cpu="0",mode="idle"}→19165078.75@timestamp_1,19165136.3@timestamp_2,19165167.72@timestamp_3
node_cpu_seconds_total{cpu="0",mode="system"}→381598.72@timestamp_1,381599.98@timestamp_2,381600.58@timestamp_3
node_cpu_seconds_total{cpu="0",mode="user"}→23211630.97@timestamp_1,23211711.34@timestamp_2,23211748.64@timestamp_3

但是指標類型呢?如果您已經使用過PromQL,您可能知道某些函數只適用于特定類型的指標!例如,histogram_quantile()函數只適用于直方圖指標,rate()只適用于計數器指標,而deriv()只適用于儀表。但是PromQL實際上并不檢查您是否傳入了正確類型的指標——這些函數通常會順利地運行,并為錯誤類型的輸入指標返回一些無意義的東西,并且由用戶決定是否傳入符合某些假設的時間序列(比如在直方圖的情況下有一個敏感的le標簽,或者在計數器的情況下單調增加)。然而,將來我們很可能會看到像PromLens這樣的用戶界面試圖警告你,如果你把一個不兼容的指標類型傳遞給一個函數。

3.時間是怎么進來的?范圍和即時查詢!

您可能已經注意到,PromQL查詢中對時間的唯一引用是相對引用(例如[5m],向后看5分鐘)。那么,如何指定絕對圖形時間范圍,或者在表中顯示查詢結果的時間戳呢?在PromQL中,這樣的時間參數與表達式分開發送給Prometheus查詢API,確切的時間參數取決于您發送的查詢類型。Prometheus有兩種類型的PromQL查詢:即時查詢和范圍查詢。

3.1即時查詢

即時查詢用于類似表格的視圖,在這些視圖中,您希望顯示PromQL查詢在單個時間點的結果。

即時查詢的參數包括:

  • PromQL表達式。

  • 評估時間戳

表達式在計算時間戳時進行計算,查詢中的任何數據選擇器都可以選擇從該時間戳回溯到過去的數據(foo[1h]選擇foo系列的最后一個小時的數據),但不能選擇未來的數據(foo[-1h]是無效的PromQL)。訪問過去數據的窗口通常有助于計算一段時間內的比率或平均值等總量。

即時查詢可以返回任何有效的PromQL表達式類型(字符串、標量、即時和范圍瞬時和范圍向量)。

例如即時查詢:

讓我們看一個即時查詢的例子,看看它是如何工作的。想象一下使用表達式http_requests_total查詢給定的時間戳數據。http_requests_total是一個瞬時向量選擇器,它使用指標名稱http_requests_total為任何時間序列選擇最新的樣本。更具體地說,相對于評估時間戳,“latest”意味著“最多5分鐘以前的并且不是陳舊的”。因此,該選擇器將只為在評估時間戳之前最多5分鐘有一個樣本的序列產生一個結果,并且評估時間戳之前的最后一個樣本不是一個陳舊的標記(一種將序列標記為在Prometheus TSDB中的某個時間終止的顯式方法)。

如果我們在有最近樣本的時間戳上運行此查詢,結果將包含兩個序列,每個序列只有一個樣本:

03bd9fd4-cf11-11ed-bfe3-dac502259ad0.png

注意,每個返回樣本的輸出時間戳不再是原始樣本時間戳,而是被設置為評估時間戳。

想象一下,在一個時間戳上執行同樣的查詢,在該時間戳之前有>5m的數據間隔:

03d9dc80-cf11-11ed-bfe3-dac502259ad0.png

在這種情況下,查詢將返回一個空結果,因為所有匹配的樣本都太舊而無法包含。

3.2范圍查詢

范圍查詢主要用于圖形,其中您希望顯示給定時間范圍內的PromQL表達式。范圍查詢的工作方式完全類似于許多完全獨立的即時查詢,這些查詢在給定時間范圍內的后續時間步驟中進行評估。當然,這是經過高度優化的,在這種情況下,Prometheus實際上并沒有運行很多獨立的即時查詢。

范圍查詢包含以下參數:

  • PromQL表達式。
  • 開始時間。
  • 結束時間。
  • 解析步驟。

在開始時間和結束時間之間的每個解析步驟對表達式求值后,單獨求值的時間片被拼接到單個范圍向量中。范圍查詢允許傳入瞬時向量類型或標量類型的表達式,但總是返回一個范圍向量(標量或瞬時向量在一段時間內計算的結果)。

范圍查詢示例:

如果我們將上面的示例表達式評估為一個范圍查詢,它將如下所示:

03e6e916-cf11-11ed-bfe3-dac502259ad0.png

請注意,每個評估步驟的行為完全類似于獨立的即時查詢,并且每個獨立的即時查詢對查詢的整體范圍沒有概念。這種情況下的最終結果將是一個范圍向量,它包含一個時間范圍內兩個選定序列的樣本,但也包含某些時間步長的序列數據中的間隙。

最后

希望這篇博客文章讓您對PromQL查詢的整體結構、正在進行的類型檢查(或缺少的類型檢查)以及查詢的解析評估有了更好的了解。

審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • SQL
    SQL
    +關注

    關注

    1

    文章

    766

    瀏覽量

    44159
  • 函數
    +關注

    關注

    3

    文章

    4333

    瀏覽量

    62684
  • 數據模型
    +關注

    關注

    0

    文章

    49

    瀏覽量

    10032

原文標題:PromQL查詢剖析

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    c語言深度剖析

    c語言深度剖析
    發表于 04-02 09:12

    C語言深度剖析

    C語言深度剖析
    發表于 08-25 09:08

    C語言深度剖析

    C語言深度剖析[完整版].pdfC語言深度剖析[完整版].pdf (919.58 KB )
    發表于 03-19 05:11

    Hive查詢之where語句剖析

    黑猴子的家:Hive 查詢之 where 語句
    發表于 07-12 13:46

    萬億級日志與行為數據存儲查詢技術的兩大步驟介紹

    [轉]萬億級日志與行為數據存儲查詢技術剖析
    發表于 07-18 10:52

    基于多表的動態查詢模塊設計與實現

    查詢是信息管理系統中使用涉及用戶最多使用最頻繁的功能。為了提高用戶查詢的靈活性與查詢效率,設計了基于多表的動態查詢模塊,使得用戶可以自己選擇查詢
    發表于 04-20 10:13 ?25次下載
    基于多表的動態<b class='flag-5'>查詢</b>模塊設計與實現

    總線進入查詢_查詢工具

    總線進入查詢,很好的查詢工具,快來下載學習吧
    發表于 03-29 10:27 ?62次下載

    C語言深度剖析

    C語言深度剖析
    發表于 05-05 17:40 ?7次下載

    C語言深度剖析

    C語言深度剖析
    發表于 12-20 22:50 ?0次下載

    深入剖析Android消息機制

    深入剖析Android消息機制
    發表于 01-22 21:11 ?11次下載

    MySQL 教程—子查詢

    查詢:sub query,查詢是在某個查詢結果之上進行的,一條select語句內部包含了另外一條select語句。
    發表于 09-11 12:44 ?5次下載
    MySQL 教程—子<b class='flag-5'>查詢</b>

    剖析環路設計相關計算

    剖析環路設計相關計算
    發表于 09-24 09:36 ?9次下載

    剖析BMP圖片文件

    剖析BMP圖片文件
    發表于 01-23 10:05 ?2次下載

    PromQL查詢的整體結構及類型檢查

    本文讓我們一起來看看PromQL查詢解析。雖然PromQL有操作符、函數、選擇器等,但我們無需被本篇文章中的這些細節所困擾。讓我們來看看查詢的總體性質:
    的頭像 發表于 05-25 09:59 ?1527次閱讀

    如何利用IP查詢技術保護網絡安全?

    技術? IP查詢技術,簡而言之,是通過分析特定IP地址的活動和行為,來評估其潛在的網絡威脅和安全風險。這一技術不僅關注IP地址的所在位置、歷史活動記錄,還深入剖析其連接模式、使用頻率等關鍵信息。通過這些數據的綜合評估,企業
    的頭像 發表于 09-09 10:10 ?312次閱讀
    主站蜘蛛池模板: 亚洲AV永久无码精品澳门| 手机移动oa| 国产黄片毛片| 成人AV无码一二二区视频免费看| 中文无码字慕在线观看| 亚洲免费网站在线观看| 亚州笫一色惰网站| 无人区日本电影在线观看高清| 日韩少妇爆乳无码专区| 秋霞伦理电影在2017韩国在线伦| 男人电影天堂手机| 自拍偷拍2| 一二三四在线播放免费观看中文版视频| 亚洲an天堂an在线观看| 无码人妻99久久密AV| 四房播播最新地址| 特黄特黄aaaa级毛片免费看| 台湾佬综合娱乐网| 忘忧草在线社区WWW日本-韩国| 色色男_免费| 香港成人社区| 亚洲免费在线视频| 野花4在线观看| 十八禁啪啦啪漫画| 天天狠狠弄夜夜狠狠躁·太爽了| 丝袜美腿美女被狂躁在线观看| 天美传媒在线完整免费观看网站 | 欧美 另类 美腿 亚洲 无码 | 9277在线观看资源| cctv官网| 国产69精品久久久久乱码韩国| 国产精品久久精品视| 成年无码av片| 国产成人无码一区AV在线观看 | 久久热r在线视频精品| 美女扒开尿口让男生添动态图| 欧美jizz19性欧美| 日日摸夜添夜夜夜添高潮| 午夜一区欧美二区高清三区| 亚洲性无码AV久久成人| 中文字幕不卡在线视频|