本文檔中介紹的指標和標籤慣例並非使用 Prometheus 的必要條件,但可以作為樣式指南和最佳實踐的集合。個別組織可能希望以不同的方式處理其中一些實踐,例如命名慣例。
指標名稱...
namespace
。對於特定於應用程式的指標,前綴通常是應用程式本身的名稱。然而,有時指標更通用,例如由客戶端函式庫匯出的標準化指標。範例prometheus_notifications_total
(特定於 Prometheus 伺服器)process_cpu_seconds_total
(由許多客戶端函式庫匯出)http_request_duration_seconds
(適用於所有 HTTP 請求)total
作為後綴。另請注意,這適用於狹義的單位(如下表中的單位),但不適用於一般可數的事物。例如,connections
或 notifications
不被視為此規則的單位,也不必位於指標名稱的末尾。(另請參閱下一段中的範例。)http_request_duration_seconds
node_memory_usage_bytes
http_requests_total
(用於沒有單位的累積計數)process_cpu_seconds_total
(用於帶有單位的累積計數)foobar_build_info
(用於提供有關執行二進位的中繼資料的偽指標)data_pipeline_last_record_processed_timestamp_seconds
(用於追蹤資料處理管道中處理的最新記錄時間戳記)prometheus_tsdb_head_truncations_closed_total
prometheus_tsdb_head_truncations_established_total
prometheus_tsdb_head_truncations_failed_total
prometheus_tsdb_head_truncations_total
以下範例也有效,但遵循不同的權衡。它們更容易個別閱讀,但像 prometheus_tsdb_head_series
這樣不相關的指標可能會在它們之間排序。* prometheus_tsdb_head_closed_truncations_total
* prometheus_tsdb_head_established_truncations_total
* prometheus_tsdb_head_failed_truncations_total
* prometheus_tsdb_head_truncations_total
* ...應該表示所有標籤維度中正在測量的同一個邏輯事物。* 請求持續時間 * 資料傳輸位元組 * 作為百分比的瞬時資源使用率
作為經驗法則,給定指標的所有維度的 sum()
或 avg()
應該是有意義的(儘管不一定有用)。如果沒有意義,請將資料分割成多個指標。例如,在一個指標中包含各種佇列的容量是好的,而將佇列的容量與佇列中目前的元素數量混合則不好。
使用標籤來區分被測量的事物的特性
api_http_requests_total
- 區分請求類型:operation="create|update|delete"
api_request_duration_seconds
- 區分請求階段:stage="extract|transform|load"
請勿將標籤名稱放在指標名稱中,因為這會引入冗餘,並且如果聚合各自的標籤,則會造成混淆。
Prometheus 沒有任何硬編碼的單位。為了獲得更好的相容性,應該使用基本單位。以下列出一些指標系列及其基本單位。該清單並非詳盡無遺。
系列 | 基本單位 | 備註 |
---|---|---|
時間 | 秒 | |
溫度 | 攝氏度 | 出於實際原因,偏好使用攝氏度而不是開爾文。開爾文在色溫或必須使用絕對溫度的特殊情況下可以接受作為基本單位。 |
長度 | 公尺 | |
位元組 | 位元組 | |
位元 | 位元組 | 為了避免混淆組合不同的指標,即使位元看起來更常見,也始終使用位元組。 |
百分比 | 比例 | 值為 0–1(而不是 0–100)。ratio 僅用作 disk_usage_ratio 等名稱的後綴。通常的指標名稱遵循 A_per_B 模式。 |
電壓 | 伏特 | |
電流 | 安培 | |
能量 | 焦耳 | |
功率 | 建議匯出焦耳的計數器,然後 rate(joules[5m]) 會給出瓦特的功率。 |
|
質量 | 克 | 偏好使用克而不是公斤,以避免千字首的問題。 |
本文件為開放原始碼。請透過提交問題或提取請求來協助改進。