您可以使用 PromQL 查詢並繪製下列來源的 Cloud Monitoring 資料:
- Google Cloud 服務 (例如 Google Kubernetes Engine 或 Compute Engine),會寫入「Cloud Monitoring 系統指標」清單中所述的指標。
- 使用者定義指標,例如記錄指標和 Cloud Monitoring 使用者定義指標。
- Google Cloud Managed Service for Prometheus 是Google Cloud提供的 Prometheus 全代管多雲解決方案。如要瞭解這個受管理服務 (包括 PromQL 支援),請參閱 Google Cloud Managed Service for Prometheus。
您也可以使用 Grafana 等工具,將攝入 Cloud Monitoring 的指標資料繪製成圖表。可用的指標包括 Managed Service for Prometheus 和 Cloud Monitoring 指標,詳情請參閱指標清單。如要瞭解如何設定以 Prometheus API 為基礎的 Grafana 和其他工具,請參閱 Managed Service for Prometheus 的 Grafana 說明文件。
您也可以將 Grafana 資訊主頁匯入 Cloud Monitoring。
命名慣例
Prometheus 指標模型和命名慣例與 Cloud Monitoring 使用的不同。如要使用 PromQL 查詢 Monitoring 指標資料,您必須將 Cloud Monitoring 名稱轉換為 PromQL 相容的等效項目。如要瞭解命名慣例,請參閱「將 Cloud Monitoring 指標對應至 PromQL」。
在 Cloud Monitoring 中存取 PromQL
您可以在 Google Cloud 主控台的下列頁面中,透過「Code」分頁使用 PromQL:
- Metrics Explorer
- 建立自訂資訊主頁時,點選「新增圖表」
如要瞭解如何存取及使用編輯器,請參閱「使用 PromQL 編輯器」。
Prometheus 規則和快訊
您可以使用 Prometheus 風格的快訊,在 Cloud Monitoring 中使用 PromQL 針對任何指標建立記錄和快訊規則。詳情請參閱「受管理的規則評估和快訊」或「自行部署的規則評估和快訊」。
學習 PromQL
如要瞭解使用 PromQL 的基本概念,建議您參閱開放原始碼說明文件。以下資源可協助你快速上手:
PromQL 差異
Cloud Monitoring 的 PromQL 可能與上游 PromQL 的運作方式略有不同。
Cloud Monitoring 中的 PromQL 查詢會在 Monarch 後端使用內部查詢語言進行部分評估,因此查詢結果會有些許差異。除了本節所列的差異之外,Cloud Monitoring 中的 PromQL 與 Prometheus 2.44 版中的 PromQL 相同。系統可能不支援 Prometheus 2.44 之後新增的 PromQL 函式。
依據指標名稱比對
系統只支援指標名稱的完全比對。您必須在查詢中加入與指標名稱完全相符的值。
針對在 __name__
標籤上使用規則運算式比對工具的常見情境,建議您採用下列因應措施:
- Prometheus 轉接器設定通常會使用
=~
運算子,比對多個指標名稱。如要修正這項用法,請展開設定,為每項指標使用不同的政策,並明確命名每項指標。這也能避免您意外根據不尋常的指標進行自動調度。 - 規則運算式通常用於在同一張圖表上繪製多個非維度指標。舉例來說,如果您有
cpu_servicename_usage
這類指標,可以使用萬用字元將所有服務一起繪製成圖表。在 Cloud Monitoring 中,使用這類非維度指標是明顯的錯誤做法,而且會導致查詢效能極差。如要修正這項用法,請將所有維度移至指標標籤,而非將維度嵌入指標名稱。 - 查詢多個指標通常用於查看可查詢的指標。建議您改用
/labels/__name__/values
呼叫來探索指標。您也可以使用 Cloud Monitoring UI 探索指標。 - 比對多個指標可讓您瞭解每個指標的擷取、擷取及計費次數。Cloud Monitoring 會在「指標管理」頁面提供這項資訊。您也可以使用「已擷取的樣本」指標或「按歸因 ID 寫入的樣本」指標,以指標資料的形式存取這項資訊。
過時程度
Monarch 後端不支援Staleness。
irate
的計算
如果 irate
函式的回溯期小於步長,我們會將回溯期增加到步長。Monarch 需要這項變更,確保輸出內容不會完全忽略任何輸入資料。這項差異也適用於 rate
計算。
計算 rate
和 increase
如果 rate
函式的回溯期小於步長,我們會將回溯期增加到步長。Monarch 需要這項變更,確保輸出內容不會完全忽略任何輸入資料。這項差異也適用於 irate
計算。
內插法和外插法計算方式有所不同。Monarch 使用的插補演算法與 Prometheus 不同,因此可能會產生略有差異的結果。舉例來說,Monarch 計數器樣本會以時間範圍儲存,而非 Prometheus 使用的單一時間戳記。因此,即使 Prometheus 時間戳記會排除計數器樣本,Monarch 中的計數器樣本仍可納入速率計算。這通常會產生更準確的費率結果,尤其是在查詢基礎時間序列的開頭或結尾時。
histogram_quantile
的計算
在沒有任何樣本的直方圖上執行 PromQL histogram_quantile
計算,會產生 NaN 值。內部查詢語言的計算不會產生任何值,而是會捨棄時間戳記點。
費率計算方式的差異也會影響 histogram_quantile
查詢的輸入內容。
不同類型指標的類型專屬函式
雖然上游 Prometheus 是弱型別,但 Monarch 是強型別。也就是說,在不同類型指標上執行特定類型的函式 (例如,在 GAUGE 指標上執行 rate()
,或在 COUNTER 或未指定類型指標上執行 histogram_quantile()
) 在 Cloud Monitoring 中無法運作,即使這些函式在 Prometheus 上游運作也一樣。