資料模型

Prometheus 從根本上將所有資料儲存為 時間序列:屬於相同指標和相同標籤維度集的時間戳值流。除了儲存的時間序列外,Prometheus 還可以生成臨時派生的時間序列作為查詢的結果。

指標名稱和標籤

每個時間序列都由其指標名稱和稱為標籤的可選鍵值對唯一標識。

指標名稱

  • 指標名稱應該(SHOULD)指定被測量系統的一般特徵(例如,http_requests_total - 接收到的 HTTP 請求總數)。
  • 指標名稱可以使用(MAY)任何 UTF-8 字元。
  • 為了獲得最佳體驗和相容性,指標名稱應該(SHOULD)匹配正則表示式 [a-zA-Z_:][a-zA-Z0-9_:]*(參見下文警告)。該集合之外的指標名稱在 PromQL 等中使用時將需要加引號(參見 UTF-8 指南)。
注意冒號(':')保留用於使用者定義的記錄規則。它們不應該(SHOULD NOT)被匯出器或直接檢測(direct instrumentation)使用。

指標標籤

標籤使您能夠捕獲相同指標名稱的不同例項。例如:所有對 /api/tracks 處理程式使用 POST 方法的 HTTP 請求。我們將其稱為 Prometheus 的“多維資料模型”。查詢語言允許基於這些維度進行過濾和聚合。任何標籤值的更改(包括新增或刪除標籤)都會建立一個新的時間序列。

  • 標籤名稱可以使用(MAY)任何 UTF-8 字元。
  • __(兩個下劃線)開頭的標籤名稱必須(MUST)保留給 Prometheus 內部使用。
  • 為了獲得最佳體驗和相容性,標籤名稱應該(SHOULD)匹配正則表示式 [a-zA-Z_][a-zA-Z0-9_]*(參見下文警告)。該正則表示式之外的標籤名稱在 PromQL 等中使用時將需要加引號(參見 UTF-8 指南)。
  • 標籤值可以(MAY)包含任何 UTF-8 字元。
  • 具有空標籤值的標籤被視為等同於不存在的標籤。

警告:Prometheus v3.0.0 中相對較晚地添加了對指標和標籤名稱的 UTF-8 支援。更廣泛的生態系統(下游相容 PromQL 的專案和廠商、工具、第三方檢測、收集器等)可能需要時間來採用新的引號機制、放寬驗證等。為了獲得最佳相容性,建議堅持使用推薦的(“應當/SHOULD”)字元集。

資訊:另請參閱命名指標和標籤的最佳實踐

樣本

樣本構成了實際的時間序列資料。每個樣本由以下部分組成:

表示法

給定一個指標名稱和一組標籤,通常使用以下表示法來標識時間序列:

<metric name>{<label name>="<label value>", ...}

例如,一個指標名稱為 api_http_requests_total 且標籤為 method="POST"handler="/messages" 的時間序列可以這樣寫:

api_http_requests_total{method="POST", handler="/messages"}

這與 OpenTSDB  使用的表示法相同。

含有推薦集之外的 UTF-8 字元的名稱必須加引號,使用以下表示法:

{"<metric name>", <label name>="<label value>", ...}

由於指標名稱在內部表示為具有特殊標籤名稱的標籤對(__name__="<指標名稱>"),因此也可以使用以下表示法:

{__name__="<metric name>", <label name>="<label value>", ...}

本頁內容