prometheus內部主要分為三大塊,retrieval是負責定時去暴露的目標頁面上去抓取取樣指標資料,storage是負責將取樣資料寫磁碟,promql是prometheus提供的查詢語言模組。
prometheus提供乙個函式式的表示式語言,可以使使用者實時地查詢和聚合時間序列資料。表示式計算結果可以在圖表中展示,也可以在prometheus表示式瀏覽器中以**形式展示,或者作為資料來源, 以http api的方式提供給外部系統使用。
prometheus的查詢表示式可以分為四種資料型別:
instant vector瞬時向量 - 它是指在同一時刻,抓取的所有度量指標資料。這些度量指標資料的key都是相同的,也即相同的時間戳;
range vector範圍向量 - 它是指在任何乙個時間範圍內,抓取的所有度量指標資料;
scalar標量 - 乙個簡單的浮點值,標量浮點值可以直接寫成形式;
string字串 - 字串可以用單引號、雙引號或者反引號表示;
時間序列選擇
1.即時向量選擇器
瞬時向量選擇器可以對一組時間序列資料進行篩選,並給出結果中的每個結果鍵值對(時間戳-樣本值): 最簡單的形式是,只有乙個度量名稱被指定。在乙個瞬時向量中這個結果包含有這個度量指標名稱的所有樣本資料鍵值對。如下面這個例子選擇了度量指標名稱為http_requests_total,且一組標籤為job=prometheus, group=canary;http_request_total等價於。
http_requests_total
標籤匹配符:
=: 精確地匹配標籤給定的值
!=: 不等於給定的標籤值
=~: 選擇匹配正規表示式的標籤(或子標籤)
!~: 選擇不匹配正規表示式的標籤(或子標籤)
例如下面的表示式選擇了度量指標名稱以job:開頭的時間序列資料:
2.範圍向量選擇
範圍向量類似瞬時向量, 不同在於,它們從當前例項選擇樣本範圍區間。在語法上,時間長度被追加在向量選擇器尾部的方括號中,用以指定對於每個樣本範圍區間中的每個元素應該抓取的時間範圍樣本區間。
時間長度有乙個數值決定,後面可以跟下面的單位:
s - seconds
m - minutes
h - hours
d - days
w - weeks
y - years
在下面這個例子中, 選擇過去5分鐘內,度量指標名稱為http_requests_total, 標籤為job="prometheus"的時間序列資料:
http_requests_total[5m]
3.偏移修飾符
這個offset偏移修飾符允許在查詢中改變單個瞬時向量和範圍向量中的時間偏移。
例如,下面的表示式返回相對於當前時間的前5分鐘時的時刻, 度量指標名稱為http_requests_total的時間序列資料:
http_requests_total offset 5m
注意:offset偏移修飾符必須直接跟在選擇器後面,例如:
sum(http_requests_total offset 5m)
然而,下面這種情況是不正確的
sum(http_requests_total) offset 5m // invalid.
offset偏移修飾符在範圍向量上和瞬時向量用法一樣的。下面這個返回了相對於當前時間的前一周時,過去5分鐘的度量指標名稱為http_requests_total的速率:
rate(http_requests_total[5m] offset 1w)
prometheus還支援一些函式及操作符。
prometheus查詢到的資料由三部分組成:
prometheus會將所有採集到的樣本資料以時間序列(time-series)的方式儲存在記憶體資料庫中,並且定時儲存到硬碟上。每條time-series通過指標名稱(metrics name)和一組標籤集(labelset)命名。如下所示,可以將time-series理解為乙個以時間為x軸的二維矩陣:
一些資料例子如下圖:(所有資料均為64bit)
Prometheus 查詢 常用函式
原文 1 rate函式是專門搭配 counter型別資料使用的函式。它的功能是按照設定乙個時間段,取 counter在該時間段中的平均每秒的增量 rate v range vector 計算範圍向量中時間序列的每秒平均增加速率。單調性中斷 例如由於目標重啟而導致的計數器重置 會自動調整。同樣,計算會...
Prometheus(一)監控基礎
prometheus是乙個開源的監控系統,它從應用程式中實時獲取時間序列資料,然後通過功能強大的規則引擎,幫助你識別監控環境所需的資訊。本書將指導你使用prometheus來構建監控系統,重點將放在 動態雲環境 kubernetes環境和容器環境的監控。同時,我們還將研究如何從應用程式獲取資料並將這...
非原創 Prometheus 查詢語言
promql prometheus query language 是 prometheus 自己開發的表示式語言,語言表現力很豐富,內建函式也很多。使用它可以對時序資料進行篩選和聚合。1.1 資料型別 promql 表示式計算出來的值有以下幾種型別 1.2 時序選擇器 1.2.1 瞬時向量選擇器 瞬...