一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

3天內(nèi)不再提示

PromQL查詢的整體結(jié)構及類型檢查

馬哥Linux運維 ? 來源:Prometheus中文社區(qū) ? 作者:Prometheus中文社區(qū) ? 2022-05-25 09:59 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

這篇博客文章將假設您對PromQL查詢和Prometheus數(shù)據(jù)模型有大概粗略的了解。

讓我們開始吧!

1.PromQL是一種嵌套的函數(shù)式語言

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

查詢示例如下所示:

#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查詢可視化工具中分析相同的查詢時,包含子表達式的嵌套表達式結(jié)構會變得特別清晰:

67d6e186-db67-11ec-ba43-dac502259ad0.png

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

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

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

  • 由抓取目標所報告的度量類型:計數(shù)器、儀表、直方圖、摘要或無類型。

  • PromQL表達式的類型:字符串、標量、瞬時向量或范圍向量。

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

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

  • 字符串:類似 "I am a string!". 這些只作為某些函數(shù)(如label_join())的參數(shù)出現(xiàn),在PromQL中并不常用。

  • 標量:沒有標注尺寸的單個數(shù)值,如 1.234。您將看到這些函數(shù)的數(shù)值參數(shù),如histogram_quantile(0.9,…)或topk(3,…),以及算術運算。

  • 瞬時向量:一組帶標簽的時間序列,每個序列有一個樣本,所有樣本都有相同的時間戳。瞬時向量可以直接來自TSDB時間序列選擇器,如node_cpu_seconds_total,也可以來自返回它們的任何函數(shù)或其他轉(zhuǎn)換。

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中只有兩種方法產(chǎn)生范圍向量:在查詢中使用文字范圍向量選擇器(如node_cpu_seconds_total[5m]),或者使用子查詢(如[5m:10s])。當您想要聚合指定時間窗口內(nèi)的一系列行為時,范圍向量非常有用,就像您使用rate(node_cpu_seconds_total[5m])計算node_cpu_seconds_total在過去5分鐘內(nèi)的平均每秒增長率一樣。

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

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

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

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

3.1即時查詢

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

即時查詢的參數(shù)包括:

  • PromQL表達式。

  • 評估時間戳

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

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

例如即時查詢:

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

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

681e84dc-db67-11ec-ba43-dac502259ad0.png

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

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

6842c8e2-db67-11ec-ba43-dac502259ad0.png

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

3.2范圍查詢

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

范圍查詢包含以下參數(shù):

  • PromQL表達式。

  • 開始時間。

  • 結(jié)束時間。

  • 解析步驟。

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

范圍查詢示例:

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

68692a78-db67-11ec-ba43-dac502259ad0.png

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

最后

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

ABOUT——關于Prometheus中文社區(qū)

Prometheus中文社區(qū)已與Prometheus原廠官方達成合作,通過官方的支持希望能為您帶來以下服務:

資訊分享Prometheus中文社區(qū)旨在為Prometheus開發(fā)者們提供最新的官方資訊以及專業(yè)知識,為開發(fā)者們分享第一手的Prometheus信息。

技術交流加入社區(qū)交流分享經(jīng)驗,讓社區(qū)大佬幫您解決身邊的實際問題;提出您的見解、技術心得,交流專業(yè)資源討論技術話題。打造一個開發(fā)者們交流技術干貨的信息平臺。

專業(yè)服務現(xiàn)在我們已與Prometheus達成合作,攜手聯(lián)合創(chuàng)始人Julius Volz及其專業(yè)團隊,旨在為您提供更優(yōu)質(zhì)、更具性價比的監(jiān)控設置咨詢服務。了解更多Prometheus內(nèi)容或需要更多專業(yè)服務請聯(lián)系我們!

原文標題:PromQL查詢剖析

文章出處:【微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 函數(shù)
    +關注

    關注

    3

    文章

    4376

    瀏覽量

    64530
  • 查詢
    +關注

    關注

    15

    文章

    35

    瀏覽量

    14173
  • Prometheus
    +關注

    關注

    0

    文章

    30

    瀏覽量

    1871

原文標題:PromQL查詢剖析

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    類型檢查:時常被忽略的編譯器組件

    大家好,我是朱子潤,很高興為大家?guī)肀敬斡嘘P類型檢查與推導的分享。
    發(fā)表于 11-14 14:24 ?1096次閱讀

    樹莓派整體結(jié)構與功能模塊

    0、整體結(jié)構與功能模塊1、樹莓派刷寫鏡像2、無顯示器配置wifi并開啟ssh3、配置samba4、配置STM32控制板5、底盤結(jié)構
    發(fā)表于 08-11 07:03

    PCB板的整體布局與印刷結(jié)構

    PCB板的整體布局與印刷結(jié)構內(nèi)容有怎樣選定電路的排版方向,整體布局,面板外元和接線草圖,印制板尺寸草圖等內(nèi)容。
    發(fā)表于 09-30 12:33 ?0次下載

    色帶結(jié)構類型/色帶顏色

    色帶結(jié)構類型/色帶顏色           結(jié)構類型指的是色帶的組
    發(fā)表于 12-28 16:15 ?1686次閱讀

    拓撲結(jié)構,拓撲結(jié)構有哪些類型?

    拓撲結(jié)構,計算機網(wǎng)絡的拓撲結(jié)構有哪些類型? 計算機網(wǎng)絡的拓撲結(jié)構 是指網(wǎng)絡中各個站點相互連接
    發(fā)表于 03-22 11:20 ?1.3w次閱讀

    C語言教程之檢查字符類型

    C語言教程之檢查字符類型,很好的C語言資料,快來學習吧。
    發(fā)表于 04-25 09:38 ?0次下載

    元器件封裝類型查詢

    元器件封裝類型查詢
    發(fā)表于 10-23 09:14 ?0次下載

    雙層索引的起源圖查詢方法

    為解決現(xiàn)有的起源圖查詢效率低和資源占用率高的問題,考慮起源信息和數(shù)據(jù)本身之間的關聯(lián)關系以及起源信息內(nèi)部結(jié)構特點,提出了一種基于雙層索引結(jié)構的起源圖查詢方法。首先,面向起源圖
    發(fā)表于 12-07 10:04 ?0次下載
    雙層索引的起源圖<b class='flag-5'>查詢</b>方法

    結(jié)構查詢語言SQL的使用詳解

    本章講授結(jié)構化査詢語言SQL,它是關系數(shù)據(jù)庫的標準語言,具有強大的功能。在它的四大功能中,重點介紹數(shù)據(jù)查詢功能。
    發(fā)表于 07-06 17:08 ?0次下載
    <b class='flag-5'>結(jié)構</b>化<b class='flag-5'>查詢</b>語言SQL的使用詳解

    Struct結(jié)構數(shù)據(jù)類型

    Struct類型是一種由多個不同數(shù)據(jù)類型元素組成的數(shù)據(jù)結(jié)構,其元素可以是基本數(shù)據(jù)類型,也可以是Struct、數(shù)組等復雜數(shù)據(jù)類型以及PLC數(shù)據(jù)
    的頭像 發(fā)表于 07-25 17:02 ?3380次閱讀

    STRUC:定義結(jié)構類型

    部件: 組件的名稱。在結(jié)構類型之內(nèi)只允許進行一次。只在欄擁有 CHAR 類型且是一維時,才允許將其用作結(jié)構類型的組件。為此,在
    的頭像 發(fā)表于 08-03 15:10 ?2556次閱讀

    PromQL查詢剖析

    不像SQL或其他一些更傾向于命令式的查詢語言(SELECT * FROM...),PromQL是一種嵌套的函數(shù)式語言。這意味著您將所尋找的數(shù)據(jù)描述為一組嵌套表達式,每個表達式都計算出一個中間值(沒有副作用)。
    的頭像 發(fā)表于 03-31 11:39 ?962次閱讀

    KUKA變成STRUC:定義結(jié)構類型

    部件: 組件的名稱。在結(jié)構類型之內(nèi)只允許進行一次。只在欄擁有 CHAR 類型且是一維時,才允許將其用作結(jié)構類型的組件。為此,在
    的頭像 發(fā)表于 04-14 11:41 ?1223次閱讀

    修改查詢將clob轉(zhuǎn)成字符類型

    在進行Oracle數(shù)據(jù)庫查詢時,我們經(jīng)常會遇到clob類型的數(shù)據(jù),這是一種用于存儲大型字符數(shù)據(jù)的數(shù)據(jù)類型。在一些情況下,我們可能需要將clob類型的數(shù)據(jù)轉(zhuǎn)換為字符
    的頭像 發(fā)表于 11-21 11:31 ?1280次閱讀

    詳解Prometheus的數(shù)據(jù)類型

    對于 Prometheus 生態(tài)的監(jiān)控系統(tǒng),PromQL 是必備技能,本文著重點講解這個查詢語言,摻雜一些生產(chǎn)實踐場景,希望對你有所幫助。
    的頭像 發(fā)表于 05-13 09:50 ?449次閱讀
    詳解Prometheus的數(shù)據(jù)<b class='flag-5'>類型</b>