Cloud Monitoring 中的 PromQL

本文說明如何在 Cloud Monitoring 中使用 Prometheus 查詢語言 (PromQL)。除了 Metrics Explorer 的選單式介面和 Monitoring Query Language (MQL) 介面,PromQL 也提供建立圖表和資訊主頁的替代方案。

您可以使用 PromQL 查詢並繪製下列來源的 Cloud Monitoring 資料:

您也可以使用 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 計算。

計算 rateincrease

如果 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 上游運作也一樣。