精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

重塑 Prometheus 核心:揭開 PromQL 的面紗

開發 前端
如果需要查詢處理大量數據,頁面繪圖可能會超時或使服務器、瀏覽器過載。因此,在構建未知規模的數據查詢時,先從 Prometheus 的表格視圖開始構建,直到結果看起來合理(最多數百個時間序列,而不是數千個時間序列)。只有在充分過濾或聚合后,才能切換到圖形視圖。

引言

在我們重塑 Prometheus 之前,我們還有一個重要的角色需要熟悉和理解,那就是我們的 PromQL。

提前聲明下,本篇文章的最大敵人就是枯燥,比較無聊。

親愛的朋友,你是否武裝好了呢,反正我是沒有,哈哈,開玩笑。反正我自己看著文章都頭疼,就如同健身中的練腿,特別是深蹲。但是為了不讓你們小看我,我咬咬牙,就過去了,反正學習之前,需要準備一下,不然受不了。

如果你已經知道了或者很熟悉了,那這篇文章你可以選擇在學習下,那它是什么呢,我們來介紹下。

介紹

PromQL(Prometheus Query Language)是一種功能強大的查詢語言,專為 Prometheus 設計。它允許用戶以靈活的方式從時間序列數據庫中選擇、提取、聚合和分析數據,支持多種聚合和計算操作。PromQL的設計目標是提供一種簡單且靈活的方式來查詢、分析監控數據,使用戶能夠快速獲取所需的信息。Prometheus提供兩種查詢:瞬時查詢(instant query,查詢某個時間點的數據)、范圍查詢( range query,在開始和結束時間之間以均勻間隔進行數據查詢),可以將范圍查詢看做在不同時間點上多次進行瞬時查詢。

官方文檔[1]

開始

四種指標類型

? Counter(計數器)

? Gauge (儀表類型)

? Histogram(直方圖類型)

? Summary (摘要類型)

Counter(計數器)

Counter (只增不減的計數器) 類型的指標其工作方式和計數器一樣,只增不減。常見的監控指標,如 http_requests_total、 node_cpu_seconds_total 都是 Counter 類型的監控指標。

在 node-exporter 返回的樣本數據中,其注釋中也包含了該樣本的類型。例如:

HELP node_cpu_seconds_total Seconds the cpus spent in each mode.TYPE node_cpu_seconds_total counter
node_cpu_seconds_total{cpu="cpu0",mode="idle"} 362812.7890625

? #HELP: 解釋當前指標的含義,上面表示在每種模式下 node 節點的 cpu 花費的時間,以 s 為單位。

? #TYPE: 說明當前指標的數據類型,上面是 counter 類型。

counter 是一個簡單但又強大的工具,例如我們可以在應用程序中記錄某些事件發生的次數,通過以時間序列的形式存儲這些數據,我們可以輕松的了解該事件產生的速率變化。PromQL 內置的聚合操作和函數可以讓用戶對這些數據進行進一步的分析,例如,通過 rate() 函數獲取 HTTP 請求量的增長率:

rate(http_requests_total[5m])

查詢當前系統中,訪問量前 10 的 HTTP 請求:

topk(10, http_requests_total)

Gauge (儀表類型)

與 Counter 不同, Gauge (可增可減的儀表盤) 類型的指標側重于反應系統的當前狀態。因此這類指標的樣本數據可增可減。常見指標如:node_memory_MemFree_bytes(主機當前空閑的內存大小)、 node_memory_MemAvailable_bytes(可用內存大小)都是 Gauge 類型的監控指標。通過 Gauge 指標,用戶可以直接查看系統的當前狀態:

node_memory_MemFree_bytes

對于 Gauge 類型的監控指標,通過 PromQL 內置函數 delta() 可以獲取樣本在一段時間范圍內的變化情況。例如,計算 CPU 溫度在兩個小時內的差異:

delta(cpu_temp_celsius{host="zeus"}[2h])

還可以直接使用 predict_linear() 對數據的變化趨勢進行預測。例如,預測系統磁盤空間在4個小時之后的剩余情況:

predict_linear(node_filesystem_free_bytes[1h], 4 * 3600)

Histogram(直方圖類型) 和 Summary(摘要類型)

除了 Counter 和 Gauge 類型的監控指標以外,Prometheus 還定義了 Histogram 和 Summary 的指標類型。Histogram 和 Summary 用于統計和分析樣本的分布情況。

? 在大多數情況下人們都傾向于使用某些量化指標的平均值,例如 CPU 的平均使用率、頁面的平均響應時間,這種方式也有很明顯的問題,以系統 API 調用的平均響應時間為例:如果大多數 API 請求都維持在 100ms 的響應時間范圍內,而個別請求的響應時間需要 5s,那么就會導致某些 WEB 頁面的響應時間落到中位數上,而這種現象被稱為長尾問題。

? 為了區分是平均的慢還是長尾的慢,最簡單的方式就是按照請求延遲的范圍進行分組。例如,統計延遲在 010ms 之間的請求數有多少,而 1020ms 之間的請求數又有多少。通過這種方式可以快速分析系統慢的原因。Histogram 和 Summary 都是為了能夠解決這樣的問題存在的,通過 Histogram 和 Summary 類型的監控指標,我們可以快速了解監控樣本的分布情況。

例如,指標 prometheus_tsdb_wal_fsync_duration_seconds 的指標類型為 Summary。它記錄了 Prometheus Server 中 wal_fsync 的處理時間,通過訪問 Prometheus Server 的 /metrics 地址,可以獲取到以下監控樣本數據:

HELP prometheus_tsdb_wal_fsync_duration_seconds Duration of WAL fsync.TYPE prometheus_tsdb_wal_fsync_duration_seconds summary
prometheus_tsdb_wal_fsync_duration_seconds{quantile="0.5"} 0.012352463
prometheus_tsdb_wal_fsync_duration_seconds{quantile="0.9"} 0.014458005
prometheus_tsdb_wal_fsync_duration_seconds{quantile="0.99"} 0.017316173
prometheus_tsdb_wal_fsync_duration_seconds_sum 2.888716127000002
prometheus_tsdb_wal_fsync_duration_seconds_count 216

從上面的樣本中可以得知當前 Prometheus Server 進行 wal_fsync 操作的總次數為 216 次,耗時 2.888716127000002s。其中中位數(quantile=0.5) 的耗時為 0.012352463,9 分位數(quantile=0.9)的耗時為 0.014458005s。

在 Prometheus Server 自身返回的樣本數據中,我們還能找到類型為 Histogram 的監控指標 prometheus_tsdb_compaction_chunk_range_seconds_bucket:

HELP prometheus_tsdb_compaction_chunk_range_seconds Final time range of chunks on their first compactionTYPE prometheus_tsdb_compaction_chunk_range_seconds histogram
prometheus_tsdb_compaction_chunk_range_seconds_bucket{le="100"} 71
prometheus_tsdb_compaction_chunk_range_seconds_bucket{le="400"} 71
prometheus_tsdb_compaction_chunk_range_seconds_bucket{le="1600"} 71
prometheus_tsdb_compaction_chunk_range_seconds_bucket{le="6400"} 71
prometheus_tsdb_compaction_chunk_range_seconds_bucket{le="25600"} 405
prometheus_tsdb_compaction_chunk_range_seconds_bucket{le="102400"} 25690
prometheus_tsdb_compaction_chunk_range_seconds_bucket{le="409600"} 71863
prometheus_tsdb_compaction_chunk_range_seconds_bucket{le="1.6384e+06"} 115928
prometheus_tsdb_compaction_chunk_range_seconds_bucket{le="6.5536e+06"} 2.5687892e+07
prometheus_tsdb_compaction_chunk_range_seconds_bucket{le="2.62144e+07"} 2.5687896e+07
prometheus_tsdb_compaction_chunk_range_seconds_bucket{le="+Inf"} 2.5687896e+07
prometheus_tsdb_compaction_chunk_range_seconds_sum 4.7728699529576e+13
prometheus_tsdb_compaction_chunk_range_seconds_count 2.5687896e+07

與 Summary 類型的指標相似之處在于 Histogram 類型的樣本同樣會反映當前指標的記錄的總數(以 _count 作為后綴)以及其值的總量(以 _sum 作為后綴)。不同在于 Histogram 指標直接反映了在不同區間內樣本的個數,區間通過標簽 le 進行定義。

偏移(offset)修飾符

偏移修飾符用于在查詢中更改瞬時和范圍查詢的時間偏移。

例如,查詢 http_requests_total 在當前時間戳前 5 分鐘的值:

http_requests_total offset 5m

注意,偏移修飾符需要緊跟選擇器之后,下面是正確的格式:

sum(http_requests_total{method="GET"} offset 5m) // 正確

下面這個是錯誤的格式:

sum(http_requests_total{method="GET"}) offset 5m // 無效

offset 同樣適用于范圍查詢。http_requests_total 在一周前的 5 分鐘速率:

rate(http_requests_total[5m] offset 1w)

@ 修飾符

@ 修飾符用于在查詢中更改瞬時和范圍查詢的當前時間戳。提供給 @ 修飾符的時間是一個 Unix 時間戳,并用浮點數值描述。

例如,http_requests_total 在 2021-01-04T07:40:00+00:00 的值:

http_requests_total @ 1609746000

注意,@ 修飾符需要緊跟選擇器之后,下面是正確的格式:

sum(http_requests_total{method="GET"} @ 1609746000) // 正確

下面這個是錯誤的格式:

sum(http_requests_total{method="GET"}) @ 1609746000 // 無效

@ 修飾符同樣適用范圍查詢。http_requests_total 在 2021-01-04T07:40:00+00:00 的 5 分鐘速率:

rate(http_requests_total[5m] @ 1609746000)

@ 修飾符可以與偏移修飾符一起工作,這時偏移就應用于 @ 修飾符指定時間。這兩個修飾符之間的順序不會對結果產生影響。

例如,如下兩個查詢將產生相同的結果:

在 @ 之后偏移

http_requests_total @ 1609746000 offset 5m

在 @ 之前偏移

http_requests_total offset 5m @ 1609746000

此外,start() 和 end() 函數可以作為 @ 修飾符的值來使用。

對于范圍查詢來說,它們分別解析為范圍查詢的開始時間和結束時間。

對于瞬時查詢,start() 和 end() 都解析為當前查詢時間。

http_requests_total @ start()rate(http_requests_total[5m] @ end())

表達式四種數據類型

PromQL 查詢語句即表達式,實現的四種數據類型:

? 瞬時向量(Instant vector):一組時間序列,每個時間序列包含單個樣本,它們共享相同的時間戳。也就是說,表達式的返回值中只會包含該時間序列中最新的一個樣本值。

? 區間向量(Range vector):一組時間序列,每個時間序列包含一段時間范圍內的樣本數據。

? 標量(Scalar):一個浮點型的數據值,沒有時序。可以寫成[-](digits)[.(digits)]的形式。需要注意的是,使用表達式 count(http_requests_total)返回的數據類型依然是瞬時向量,用戶可以通過內置函數 scalar() 將單個瞬時向量轉換為標量。

? 字符串(String):一個簡單的字符串值。字符串可以用單引號('')、雙引號("")或反引號(``)來指定。

瞬時向量(Instant vector)

Instance vector(瞬時向量)表示一個時間序列的集合,但是每個時序只有最近的一個點,而不是線。

圖片圖片

區間向量(Range vector)

Range vector(范圍向量)表示一段時間范圍里的時序,每個時序可包含多個點 。

圖片圖片

標量(Scalar)

Scalar(標量)通常為數值,可以將只有一個時序的 Instance vector 轉換成 Scalar。

字符串(String)

一個簡單的字符串值。字符串可以用單引號('')、雙引號("")或反引號(``)來指定。

時間序列(向量)

按照時間順序記錄系統、設備狀態變化的數據,每個數據成為一個樣本。

? 數據采集以特定的時間周期進行,因而,隨著時間流逝,將這些樣本數據記錄下來,將生成一個離散的樣本數據序列。

? 該序列也稱為向量(Vector), 以時間軸為橫坐標、序列為縱坐標,這些數據點連接起來就會形成一個矩陣。

圖片圖片

時間序列的構成

每條時間序列(Time Series)是通過 指標名稱(Metrics name)和一組標簽集(Label set) 來命名的。

如果 time 相同,但是指標名稱或者標簽集不同,那么時間序列也不同。

樣本構成

矩陣中每一個點都可稱為一個樣本(Sample),樣本主要由 3 構成。

? 指標(Metrics):包括指標名稱(Metrics name)和一組標簽集(Label set)名稱,如 request_total{path="/status",method="GET"} 。

? 時間戳(TimeStamp):這個值默認精確到毫秒。

? 樣本值(Value):這個值默認使用 Float64 浮點類型。

時間序列的指標(Metrics)存儲格式為 key-value。

圖片圖片

http_request_total{status="200",method="GET"}@1434417560938=>94355 為例:

在 Key-Value 關系中,94355 作為 Value(也就是樣本值Sample Value),前面的 http_request_total{status="200",method="GET"} @1434417560938 一律作為 Key。

key 的組成

? Metric Name:指標名(例子中的 http_request_total )

? Label:標簽(例子中的{status="200",method="GET"})

? Timestamp:時間戳(例子中的 @1434417560938)

Prometheus Metrics兩種表現形式:

圖片圖片

標簽過濾器4種運算符

? = 與字符串匹配

? != 與字符串不匹

? =~ 與正則匹配

? !~ 與正則不匹配

匹配器(Matcher)

匹配器是作用于標簽上的,標簽匹配器可以對時間序列進行過濾,Prometheus 支持完全匹配和正則匹配兩種模式:完全匹配和正則表達式匹配。

完全匹配

相等匹配器(=)

相等匹配器(Equality Matcher),用于選擇與提供的字符串完全相同的標簽。下面介紹的例子中就會使用相等匹配器按照條件進行一系列過濾。

node_cpu_seconds_total{instance="xaw"}

不相等匹配器(!=)

不相等匹配器(Negative Equality Matcher),用于選擇與提供的字符串不相同的標簽。它和相等匹配器是完全相反的。舉個例子,如果想要查看job并不是 HelloWorld 的 HTTP 請求總數,可以使用如下不相等匹配器。

正則表達式匹配

正則表達式匹配器(=~)

正則表達式匹配器(Regular Expression Matcher),用于選擇與提供的字符串進行正則運算后所得結果相匹配的標簽。Prometheus 的正則運算是強指定的,比如正則表達式 a 只會匹配到字符串 a ,而并不會匹配到 ab 或者 ba 或者abc。如果你不想使用這樣的強指定功能,可以在正則表達式的前面或者后面加上".*"。比如下面的例子表示 job 是所有以 Hello 開頭的 HTTP 請求總數。

node_cpu_seconds_total{instance=~"xaw-.*", mode="idle"}

node_cpu_seconds_total 直接等效于 {name="node_cpu_seconds_total"} ,后者也可以使用和前者一樣的4種匹配器(=,!=,=,!)。比如下面的案例可以表示所有以 Hello 開頭的指標。

{__name__="node_cpu_seconds_total",instance=~"xaw-.*", mode="idle"}

正則表達式相反匹配器(!~)

正則表達式相反匹配器(Negative Regular Expression Matcher),用于選擇與提供的字符串進行正則運算后所得結果不匹配的標簽。因為 PromQL 的正則表達式基于 RE2 的語法,但是 RE2 不支持向前不匹配表達式,所以 !~ 的出現是作為一種替代方案,以實現基于正則表達式排除指定標簽值的功能。在一個選擇器當中,可以針對同一個標簽來使用多個匹配器。比如下面的例子,可以實現查找 job 名是 node 且安裝在 /prometheus 目錄下,但是并不在 /prometheus/user 目錄下的所有文件系統并確定其大小。

node_filesystem_size_bytes{job="node",mountpoint=~"/prometheus/.*", mountpoint!~ "/prometheus/user/.*"}

范圍選擇器

我們可以通過將 時間范圍選擇器[2] 附加到查詢語句中,指定為每個返回的區間向量樣本值中提取多長的時間范圍。每個時間戳的值都是按時間倒序記錄在時間序列中的,該值是從時間范圍內的時間戳獲取的對應的值。

時間范圍通過數字來表示,單位可以使用以下其中之一的時間單位:

? s - 秒

? m - 分鐘

? h - 小時

? d - 天

? w - 周

? y - 年

因為現在每一個時間序列中都有多個時間戳多個值,所以沒辦法渲染,必須是標量或者瞬時向量才可以繪制圖形。

不過通常區間向量都會應用一個函數后變成可以繪制的瞬時向量,Prometheus 中對瞬時向量和區間向量有很多操作的 函數[3],不過對于區間向量來說最常用的函數并不多,使用最頻繁的有如下幾個函數:

  • ? rate() : 計算整個時間范圍內區間向量中時間序列的每秒平均增長率。
  • ? irate() : 僅使用時間范圍中的最后兩個數據點來計算區間向量中時間序列的每秒平均增長率, irate 只能用于繪制快速變化的序列,在長期趨勢分析或者告警中更推薦使用 rate 函數。
  • ? increase() : 計算所選時間范圍內時間序列的增量,它基本上是速率乘以時間范圍選擇器中的秒數。

PromQL 運算符

數學運算符

數學運算符比較簡單,就是簡單的加減乘除等。

例如:我們通過 prometheus_http_response_size_bytes_sum 可以查詢到 Prometheus 這個應用的 HTTP 響應字節總和。但是這個單位是字節,我們希望用 MB 顯示。那么我們可以這么設置:prometheus_http_response_size_bytes_sum/8/1024。

PromQL支持的所有數學運算符如下所示:

? + (加法)

? - (減法)

? * (乘法)

? / (除法)

? % (求余)

? ^ (冪運算)

布爾運算符

布爾運算符支持用戶根據時間序列中樣本的值,對時間序列進行過濾。

例如:我們可以通過 prometheus_http_requests_total 查詢出每個接口的請求次數,但是如果我們想篩選出請求次數超過 20 次的接口呢?

此時我們可以用下面的 PromQL 表達式:

prometheus_http_requests_total > 20

圖片圖片

從上面的圖中我們可以看到,value 的值還是具體的數值。但如果我們希望對符合條件的數據,value 變為 1。不符合條件的數據,value 變為 0。那么我們可以使用 bool 修飾符。

我們使用下面的 PromQL 表達式:

prometheus_http_requests_total > bool 20

圖片圖片

目前,Prometheus支持以下布爾運算符如下:

? == (相等)

? !=(不相等)

? > (大于)

? < (小于)

? =(大于或等于)

? <=(小于或等于)

集合運算符

通過集合運算,可以在兩個瞬時向量與瞬時向量之間進行相應的集合操作。這個和我們理解的可不一樣,仔細看下面的解釋。目前,Prometheus支持以下集合運算符:

? and 與操作

? or 或操作

? unless 排除操作

and 與操作

結果:返回兩個向量中共有的標簽(匹配的時間序列)。

示例:

vector1 = {A, B, C}
vector2 = {B, C, D}
   - 結果:{B, C}

or 或操作

結果:返回兩個向量的聯合,包括所有標簽。

示例:

vector1 = {A, B, C}
vector2 = {B, C, D}
   - 結果:{A, B, C, D}

unless 排除操作

結果:從第一個向量中排除與第二個向量中匹配的時間序列。

示例:

vector1 = {A, B, C}
vector2 = {B, C, D}
   - 結果:{A}

操作符優先級

在PromQL操作符中優先級由高到低依次為:

? ^

? *, /, %

? +, -

? ==, !=, <=, <, >=, >

? and, unless

? or

內置函數

Prometheus 內置不少函數,通過靈活的應用這些函數,可以更方便的查詢及數據格式化。本文將選取其中較常使用到的幾個函數進行講解。

ceil 函數

ceil 函數會將返回結果的值向上取整數。

ceil(avg(promhttp_metric_handler_requests_total{code="200"}))

floor 函數

floor 函數與 ceil 相反,將會進行向下取整的操作。

rate 函數

rate函數是使用頻率最高,也是最重要的函數之一。rate 用于取某個時間區間內每秒的平均增量數,它會以該時間區間內的所有數據點進行統計。rate 函數通常作用于 Counter 類型的指標,用于了解增量情況。

示例:獲取 http_request_total 在1分鐘內,平均每秒新增的請求數

rate(promhttp_metric_handler_requests_total{handler="/rules"}[1m])

irate函數

相比 rate 函數,irate 提供了更高的靈敏度。irate 函數是通過時間區間中最后兩個樣本數據來計算區間向量的增長速率,從而避免范圍內的平均值拉低峰值的情況 。

示例:該函數用法與rate相同

irate(promhttp_metric_handler_requests_total{handler="/rules"}[1m])

其它內置函數

除了上面提到的這些函數外,PromQL 還提供了大量的其他函數供使用,功能范圍涵蓋了日常所需的功能,如用于標簽替換的 label_replace 函數、統計 Histogram 指標分位數的 histogram_quantile 函數

更多信息可參閱官方文檔[4]

PromQL查詢示例

基本查詢

查詢所有實例的 http_requests_total 指標:

http_requests_total

聚合查詢

計算所有實例的 http_requests_total 總和:

sum(http_requests_total)

時間函數查詢

計算過去10分鐘內每秒的請求速率:

rate(http_requests_total[10m])

復雜查詢

計算每個實例CPU使用率,并按實例(instance)進行分組:

sum(rate(cpu_usage_seconds_total[5m])) by (instance)

常見應用場景

監控CPU、內存使用情況

使用PromQL可以輕松監控CPU、內存的使用情況。例如,查詢每個實例過去5分鐘的CPU使用率:

sum(rate(cpu_usage_seconds_total[5m])) by (instance)

監控網絡流量

PromQL還可以用于監控網絡流量。例如,查詢每個實例過去5分鐘的網絡接收、發送字節數:

sum(rate(network_receive_bytes_total[5m])) by (instance)
sum(rate(network_transmit_bytes_total[5m])) by (instance)

監控應用程序性能

通過PromQL可以監控應用程序的性能指標,如請求延遲、錯誤率等。例如,查詢每個實例過去5分鐘的請求延遲的95分位值:

histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket[5m])) by (instance))

監控自定義指標

PromQL允許監控自定義指標。例如,監控特定業務邏輯的指標,如過去1小時用戶注冊數增量:

sum(increase(user_registration_total[1h]))

PromQL 聚合操作

Prometheus 還提供了聚合操作符,這些操作符作用于瞬時向量。可以將瞬時表達式返回的樣本數據進行聚合,形成一個新的時間序列。目前支持的聚合函數有:

? sum 求和

? min 最小值

? max 最大值

? avg 平均值

? stddev 標準差

? stdvar 標準方差

? count 計數

? count_values 對value進行計數

? bottomk 后n條時序

? topk 前n條時序

sum 求和

用于對記錄的 value 值進行求和。

例如:sum(prometheus_http_requests_total) 表示統計所有 HTTP 請求的次數。

sum(prometheus_http_requests_total)

min 最小值

返回所有記錄的最小值。

例如:min(prometheus_http_requests_total) 表示獲取數據集合中的最小值。

min(prometheus_http_requests_total)

max 最大值

返回所有記錄的最大值。

例如:maxmetheus_http_requests_total) 表示獲取數據集合中的最大值。

max(prometheus_http_requests_total)

avg 平均值

avg 函數返回所有記錄的平均值。

例如:avg(metheus_http_requests_total) 表示獲取數據集合中的平均值。

avg(prometheus_http_requests_total)

stddev 標準差

標準差(Standard Deviation)常用來描述數據的波動大小。

例如: 統計出不同 HTTP 請求的數量波動情況。

stddev(prometheus_http_requests_total)

count 計數

count 函數返回所有記錄的計數。

例如:count(prometheus_http_requests_total) 表示統計所有 HTTP 請求的次數。

count(prometheus_http_requests_total)

bottomk 后幾條

bottomk 用于對樣本值進行排序,返回當前樣本值后 N 位的時間序列。

例如:獲取 HTTP 請求量后 5 位的請求,可以使用表達式:

bottomk(5, prometheus_http_requests_total)

topk 前幾條

topk 用于對樣本值進行排序,返回當前樣本值前 N 位的時間序列。

例如:獲取 HTTP 請求量前 5 位的請求,可以使用表達式:

topk(5, prometheus_http_requests_total)

PromQL 語法總結

由于所有的 PromQL 表達式必須至少包含一個指標名稱,或者至少有一個不會匹配到空字符串的標簽過濾器,因此結合 Prometheus 官方文檔,可以梳理出如下非法示例。

{job=~".*"} 非法! .*表示任意一個字符,這就包括空字符串,且還沒有指標名稱
{job=""}    非法!
{job!=""}   非法!

相反,如下表達式是合法的。
{job=~".+"}               合法!.+表示至少一個字符
{job=~".*",method="get"}  合法!.*表示任意一個字符
{job="",method="post"}    合法!存在一個非空匹配
{job=~".+",method="post"} 合法!存在一個非空匹配

性能優化

在使用PromQL時,性能是一個重要的考慮因素。下面是一些常用性能優化技巧:

? 合適的時間查詢范圍: 查詢時選擇合適的時間范圍,以避免不必要的數據查詢處理。

? 避免過于復雜的查詢: 盡量簡化查詢,避免使用過多的聚合計算和運算符操作。

? 指標數據緩存: 對于頻繁查詢的指標,可以考慮使用緩存機制。

如果需要查詢處理大量數據,頁面繪圖可能會超時或使服務器、瀏覽器過載。因此,在構建未知規模的數據查詢時,先從 Prometheus 的表格視圖開始構建,直到結果看起來合理(最多數百個時間序列,而不是數千個時間序列)。只有在充分過濾或聚合后,才能切換到圖形視圖。如果仍然需要太長時間才能繪制圖形,建議使用記錄規則進行預先處理。此外,聚合多個時間序列即使輸出只有少量時間序列結果,也會對服務器產生嚴重負載,這類似于在關系數據庫中對一列的所有值求和,即使輸出值只有一個數字,也會很慢。

引用鏈接

[1] 官方文檔: https://prometheus.io/docs/prometheus/latest/querying/basics

[2] 時間范圍選擇器: https://prometheus.io/docs/prometheus/latest/querying/basics/

[3] 函數: https://prometheus.io/docs/prometheus/latest/querying/functions/

[4] 官方文檔: https://prometheus.io/docs/prometheus/latest/querying/functions/

責任編輯:武曉燕 來源: 云原生運維圈
相關推薦

2022-01-16 18:51:57

.NET 6Configurati配置

2013-09-22 11:03:20

SocketSocket編程

2019-10-12 10:50:00

JavaScript編程語言代碼

2015-08-20 13:43:17

NFV網絡功能虛擬化

2010-05-17 09:13:35

2009-09-08 16:30:18

網銀木馬

2014-03-12 11:11:39

Storage vMo虛擬機

2021-06-07 08:18:12

云計算云端阿里云

2023-06-07 13:43:49

云計算

2010-05-26 19:12:41

SVN沖突

2023-11-26 23:59:16

PromQL算術運算符

2009-12-03 09:19:41

Linux系統奧秘

2018-03-01 09:33:05

軟件定義存儲

2009-06-01 09:04:44

Google WaveWeb

2023-11-02 09:55:40

2009-09-15 15:34:33

Google Fast

2016-04-06 09:27:10

runtime解密學習

2024-02-14 09:00:00

機器學習索引ChatGPT

2025-01-07 15:07:13

2016-11-10 12:49:00

點贊
收藏

51CTO技術棧公眾號

免费在线观看视频一区| 国产一区二区在线| 精品福利在线观看| 日韩亚洲欧美精品| 99re只有精品| 新67194成人永久网站| 日韩在线小视频| 午夜福利三级理论电影| 日韩精品三区| 一区二区三区波多野结衣在线观看| 玖玖玖精品中文字幕| 一级片aaaa| 亚洲视频成人| 久久久www成人免费精品张筱雨| 91传媒理伦片在线观看| 欧美成人xxxx| 日韩欧美中文字幕在线观看 | 一区三区自拍| 91久久线看在观草草青青| 欧美精品久久96人妻无码| 日本又骚又刺激的视频在线观看| 久久99国产精品尤物| 26uuu久久噜噜噜噜| 在线免费观看亚洲视频| 精品理论电影| 日韩精品极品毛片系列视频| 免费观看黄网站| a成人v在线| 欧美日韩中文字幕在线视频| 国产尤物av一区二区三区| 欧美尤物美女在线| 国产亚洲欧美日韩在线一区| 国产精品区一区二区三含羞草| 国产又大又黄的视频| 免费欧美日韩| 97国产成人精品视频| 永久看片925tv| 欧美顶级大胆免费视频| 一区二区三区日韩在线| 毛茸茸多毛bbb毛多视频| 91精品入口| 日韩一区二区三区观看| 久热在线视频观看| 日韩av首页| 色综合久久久久综合体| 日本a级片免费观看| wwwww亚洲| 亚洲综合清纯丝袜自拍| 成年人视频网站免费| av在线官网| 亚洲视频一区在线| 一区二区三区四区免费观看| 99自拍视频在线观看| 亚洲欧美偷拍卡通变态| 香蕉视频在线网址| 老司机av在线免费看| 中文字幕在线不卡视频| 亚洲午夜精品久久久中文影院av| eeuss影院www在线观看| 国产精品三级av在线播放| 日韩资源av在线| 97超碰人人在线| 中文字幕一区在线观看| 亚洲AV无码成人精品一区| 黄色在线播放网站| 一区二区三区日韩欧美精品| 男人的天堂avav| 国产盗摄一区二区| 欧美日韩在线视频首页| 超碰影院在线观看| 91福利精品在线观看| 欧美群妇大交群中文字幕| 色婷婷综合在线观看| 国产人妖ts一区二区| 亚洲欧美国产一区二区三区| 国产又粗又猛又爽又黄av | 国产剧情一区在线| 高清视频一区| 欧美孕妇性xxxⅹ精品hd| 久久久久久一二三区| 亚洲乱码国产乱码精品天美传媒| 成人影院www在线观看| 亚洲夂夂婷婷色拍ww47| 久久婷婷国产精品| 视频欧美精品| 精品久久久久久久久久久久包黑料| xfplay5566色资源网站| 国产精品羞羞答答在线观看| 久久久av网站| 日产精品久久久| 麻豆精品一区二区| 国产欧美欧洲| 香蕉视频在线免费看| 亚洲一区二区在线播放相泽| 99精品视频播放| 国产精品成人**免费视频| 亚洲成人av中文字幕| 日本综合在线观看| 亚洲午夜黄色| 国产精品欧美一区二区| 成人久久久精品国产乱码一区二区 | 亚洲女同一区二区| 欧美综合在线播放| 99综合99| 亚洲欧美色婷婷| 久久99久久久| 免费高清成人在线| 国产伦一区二区三区色一情| 日韩免费网站| 色综合久久88色综合天天| 亚洲成人av免费观看| 国产日产精品_国产精品毛片| 欧美成人午夜激情| 啪啪小视频网站| av在线不卡电影| 中国一区二区三区| 日韩电影免费观| 亚洲第五色综合网| 国产日韩欧美在线观看视频| 日日摸夜夜添夜夜添国产精品 | 成人免费视频国产免费麻豆| 国产精品美女久久久久久2018| 国产黄色一级网站| 91成人精品在线| 欧美成人国产va精品日本一级| 日本免费精品视频| 9l国产精品久久久久麻豆| 成人手机在线播放| 95精品视频| 久久精品国产96久久久香蕉| 伊人久久中文字幕| 2024国产精品| 欧美爱爱视频免费看| ady日本映画久久精品一区二区| www.欧美精品| 怡春院在线视频| 欧美国产日韩a欧美在线观看 | 国产在线视频二区| 国产综合色精品一区二区三区| 日韩福利二区| 第四色男人最爱上成人网| 国产视频精品自拍| 久久国产黄色片| jlzzjlzz亚洲日本少妇| 国产乱子伦精品无码专区| 久久视频社区| 欧美成人精品激情在线观看| 99国产精品一区二区三区| 日韩美女视频19| 国产精品嫩草影视| 欧美日本不卡高清| 国产精品国色综合久久| av电影院在线看| 亚洲精品久久久久久久久久久| 久久久久久久9999| 不卡一区二区中文字幕| av之家在线观看| 欧美色图激情小说| 欧美另类xxx| 精品国产av 无码一区二区三区| 国产精品久久久久久妇女6080| 激情视频免费网站| 99久久视频| 97国产超碰| sm捆绑调教国产免费网站在线观看| 欧美精品一区二区高清在线观看| 欧美精品亚洲精品日韩精品| 久久综合色综合88| 久久99999| 在线一区免费| 国产一区不卡在线观看| 深夜成人影院| 久久影院中文字幕| 午夜视频1000| 欧美午夜免费电影| 精品国产乱码久久久久久鸭王1| 国产91在线看| 乱子伦视频在线看| 日韩精品免费一区二区三区| 91欧美激情另类亚洲| 久久大胆人体| 国产一区二区三区丝袜| 国产人妖在线播放| 精品国产成人在线| 亚洲天堂最新地址| 风间由美性色一区二区三区| 热久久精品国产| 欧美激情第10页| 欧美精品一区二区视频| 91麻豆精品| 国内外成人免费激情在线视频网站| 日本福利在线观看| 制服.丝袜.亚洲.中文.综合| 国产成人亚洲欧洲在线| 欧美高清一级片在线观看| 深夜做爰性大片蜜桃| 国产精品一国产精品k频道56| 一卡二卡3卡四卡高清精品视频| 成人午夜大片| 国产玖玖精品视频| 精品极品在线| 久久综合久中文字幕青草| 青青草视频在线免费观看| 在线电影院国产精品| 日韩特级黄色片| 亚洲另类在线视频| 久久国产精品影院| 国产寡妇亲子伦一区二区| 在线免费视频a| 99热这里只有成人精品国产| 中文字幕一区二区三区乱码| 免费久久精品| 国产伦精品一区二区三区视频免费 | 日韩欧美国产大片| 亚洲自拍小视频| 成人自拍视频网| 奇米4444一区二区三区| 免费电影视频在线看| 久久精品国产一区二区三区| 国产视频福利在线| 亚洲精品在线看| 色婷婷av一区二区三区之e本道| 7777精品伊人久久久大香线蕉 | 成人性生交大片免费看视频在线| 污网站免费在线| 久久av最新网址| 国产毛片视频网站| 欧美日韩亚洲一区在线观看| 欧美 另类 交| 色999日韩| 亚洲v国产v在线观看| 免费成人结看片| 久久精品综合一区| 天堂综合网久久| 久久66热这里只有精品| 欧美黑白配在线| 国产伦精品一区二区三区四区免费 | 国产精品免费av一区二区| 亚洲精品国产视频| 麻豆视频在线免费看| 中文字幕视频一区| 久久国产高清视频| 中文字幕中文字幕一区| 蜜桃av免费在线观看| 日本一区二区三区久久久久久久久不 | 国产精品一在线观看| 欧美二级三级| 国产亚洲欧美日韩在线观看一区二区 | 青青草成人影院| 亚洲二区三区四区| 久久大综合网| 伊人久久av导航| 午夜精品一区二区三区国产 | 精品综合在线| 亚洲免费福利一区| 欧美精彩一区二区三区| 国产99亚洲| 亚洲一卡二卡| 中文字幕亚洲精品乱码| 国产在线视频综合| 亚洲少妇在线| 国产九九在线视频| 精品综合久久久久久8888| √天堂资源在线| 成人免费va视频| 国产吞精囗交久久久| 国产日产亚洲精品系列| 亚洲少妇xxx| 亚洲伊人伊色伊影伊综合网| 精品美女久久久久| 色婷婷国产精品综合在线观看| 成人黄色三级视频| 欧美一区二区三区视频免费| 无码国产精品一区二区免费16| 亚洲欧美福利视频| 国产人成网在线播放va免费| 久久久久久国产三级电影| 成人免费看黄| 91精品啪aⅴ在线观看国产| 51vv免费精品视频一区二区| 麻豆亚洲一区| **女人18毛片一区二区| 国产男女免费视频| 免费视频一区二区| 一级全黄裸体片| 久久精品一级爱片| 老司机成人免费视频| 婷婷开心久久网| 亚洲综合精品视频| 亚洲韩国日本中文字幕| 91伦理视频在线观看| 欧美激情综合色综合啪啪五月| 厕沟全景美女厕沟精品| 91网在线免费观看| 小嫩嫩12欧美| 99re8这里只有精品| 亚洲一区国产一区| www.日本久久| 久久久久久久国产精品影院| 69av.com| 欧美日韩国产中文| 蜜桃视频在线入口www| 成年无码av片在线| 第四色男人最爱上成人网| 国产精品一区二区欧美| 天堂美国久久| 日本xxxxxxx免费视频| 成人国产一区二区三区精品| 无码人中文字幕| 欧美日韩美女视频| 亚洲国产精品久久久久爰性色| 永久免费看mv网站入口亚洲| av在线资源| 成人欧美一区二区三区视频 | 国产校园另类小说区| 久久久久久久福利| 91麻豆精品国产91久久久久久| 国产三级在线免费观看| 69久久夜色精品国产7777| 试看120秒一区二区三区| 伊人久久av导航| 日av在线不卡| 久久精品国产亚洲AV熟女| 午夜久久福利影院| 性色av蜜臀av| 久久久91精品国产| 国产精品黄色片| 日韩精品久久一区二区三区| 在线欧美日韩| 催眠调教后宫乱淫校园| 亚洲女人****多毛耸耸8| 亚洲无码精品在线观看| 国产亚洲xxx| 日韩福利一区| 欧美日韩亚洲在线| 久久aⅴ乱码一区二区三区| 成人免费毛片日本片视频| 亚洲图片欧美一区| 免费观看的毛片| 久久免费国产视频| 九九热hot精品视频在线播放| www.日本三级| 成人av午夜电影| 日韩免费不卡视频| 亚洲成人a**站| 国产高清自产拍av在线| 精品无人乱码一区二区三区的优势| 一区久久精品| 欧美性xxxx图片| 欧美性猛交视频| 国内在线免费高清视频| 国产精品激情自拍| 日韩电影二区| 久久精品一卡二卡| 一区二区三区在线观看国产| 午夜精品无码一区二区三区| 久久久亚洲欧洲日产国码aⅴ| 波多野结衣欧美| 91好吊色国产欧美日韩在线| 久久众筹精品私拍模特| 91麻豆精品在线| 久久久精品国产亚洲| 91综合久久爱com| 久久久久久久久久久视频| 久久久久国产免费免费| 中文字幕视频免费观看| 久热精品视频在线| 国产精品45p| 国产l精品国产亚洲区久久| 国产欧美一区二区精品性色| 国产美女www爽爽爽视频| 久久久久久久成人| 沈樵精品国产成av片| 91小视频在线播放| 亚洲国产视频a| www.亚洲免费| 国产成人一区二区三区免费看| 亚洲欧美日韩综合国产aⅴ| 中文字幕第二区| 精品国产亚洲在线| 精品3atv在线视频| 国产精品夜夜夜爽张柏芝| 99久久精品费精品国产一区二区| 无码人妻精品一区二区三区蜜桃91| 日韩视频第一页| 欧美亚洲国产日韩| 最新天堂中文在线| 亚洲一二三专区| av在线播放网| 国产98在线|日韩| 日本伊人精品一区二区三区观看方式| 一区二区国产精品精华液| 日韩av在线免费观看| 成人av在线播放| 国产精品丝袜久久久久久消防器材 | 精品国产福利| 国内精品久久久久影院薰衣草| 色网站在线播放| 久久亚洲成人精品| 精品一区在线|