使用警告政策監控 SQL 查詢結果

本文說明如何建立快訊政策,監控在 Log Analytics 中執行的查詢結果。這些查詢是以 SQL 編寫,且必須查詢名為 _AllSpans 的可觀測性檢視區塊。當查詢結果符合指定條件時,快訊政策就會通知您。

從「記錄檔分析」頁面建立的快訊政策會在 BigQuery 引擎上執行。因此,查詢的資料必須可透過連結的 BigQuery 資料集存取。

如需記錄檔分析的一般資訊,請參閱「使用記錄檔分析查詢及分析追蹤記錄」。

快訊政策的運作方式

快訊政策會說明快訊發送時機,以及事件通知方式。您可以使用幾種不同的方法,在追蹤資料中出現內容或模式時收到通知:

  • 如要監控每月擷取的 Cloud Trace 時距數量、配額使用量及時距擷取率,請在 Cloud Monitoring 中建立快訊政策。如果您從未建立過快訊政策,請參閱「建立快訊政策」,進一步瞭解如何使用 Cloud Monitoring 主控台。

  • 如要查看或探索個別追蹤記錄或時距,或查看附加至時距的屬性,請使用「Trace Explorer」(追蹤記錄探索器) 頁面。如要瞭解該頁面,請參閱「尋找及探索追蹤記錄」。

  • 如要監控追蹤記錄資料的匯總分析結果,請將記錄檔分析工具與警告政策結合使用。在這個情境中,您會使用 SQL 查詢,查詢名為 _Trace 的可觀測性 bucket 中的 _AllSpans 檢視區塊。最後,您會建立警告政策,監控 SQL 查詢結果。這類快訊政策稱為「以 SQL 為基礎的快訊政策」

    如要進一步瞭解追蹤資料的儲存方式,請參閱「儲存空間總覽」。

    本文的其餘內容說明如何使用以 SQL 為基礎的警告政策。

快訊政策元件

以 SQL 為基礎的快訊政策包含條件和時間表:

  • 條件包含查詢,也就是查詢資料的 SQL 查詢。條件也會定義查詢結果導致 Monitoring 建立事件的情況。

  • 排程會定義警報政策執行查詢的頻率。 排程也會定義回溯視窗的大小,這個篩選器只會選取自上次評估查詢後收到的資料。舉例來說,如果將排程設為 60 分鐘,系統就會每 60 分鐘執行一次查詢,並使用回溯時間範圍選取最近 60 分鐘的資料。

快訊政策也包含通知管道清單。當符合警告政策的條件時,Cloud Monitoring 會建立事件,然後透過這些管道傳送事件通知。事件是導致條件成立的資料記錄,以及其他相關資訊。這項資訊有助於排解導致事件發生的問題。您可以使用 Google Cloud 控制台查看事件。

以 SQL 為準的快訊政策評估類型

監控 SQL 查詢結果的條件支援兩種評估類型:

  • 列數門檻:當查詢結果中的列數大於、等於或小於門檻值時,即符合條件。

  • 布林值:當查詢結果資料表中的特定布林值資料欄包含任何值為 true 的資料列時,即符合條件。

監控 SQL 查詢結果的快訊政策只能有一個條件。

快訊政策和 BigQuery

如要讓快訊政策查詢追蹤資料,請設定連結的 BigQuery 資料集。BigQuery 可透過連結的資料集讀取追蹤資料,並對 SQL 查詢傳回的資料執行 BigQuery 函式。

當警告政策執行 SQL 查詢時,系統會在定義警告政策的 Google Cloud 專案中,透過 BigQuery 引擎執行該查詢。根據預設,在 BigQuery 引擎上執行的查詢會使用隨選運算單元。以量計價的運算單元和預留運算單元均適用 BigQuery 定價

您也可以選擇為專案設定專屬的 BigQuery 運算單元預留項目:

  1. 使用專屬運算單元建立預留項目,或找出現有的預留項目。
  2. 為專案建立預留項目指派

回溯期和事件傳播時間

快訊政策排定要評估條件時,記錄檔分析會延遲執行 SQL 查詢五分鐘,讓 Cloud Logging 有時間為回溯時間範圍內收到的資料建立索引。舉例來說,如果快訊政策使用的回溯時間範圍在下午 2:00 結束,記錄檔分析功能會在下午 2:05 執行 SQL 查詢。

如果查詢執行後符合快訊條件,事件最多可能需要額外兩分鐘的時間,才能在系統中傳播。

查詢失敗

SQL 型警報政策發出的查詢可能會因各種原因而失敗,包括:

  • 監控服務帳戶已不存在,或不再具備讀取所查詢追蹤資料的必要權限。

  • 查詢執行時間超過五分鐘。

  • 發生內部錯誤。

如果查詢失敗,系統會產生記錄項目,其中包含快訊政策 ID 和錯誤狀態。您可以使用記錄型快訊政策,在系統記錄錯誤時建立快訊。

事前準備

本節假設您已連結追蹤資料的 BigQuery 資料集

建立以 SQL 為基礎的快訊政策前,請先完成下列步驟:

  1. 如要取得查詢追蹤資料及建立以 SQL 為基礎的警告政策所需的權限,請要求管理員在專案中授予您下列 IAM 角色:

  2. 確認監控服務帳戶存在,且具備下列角色:

    1. 專案的監控服務代理程式 (roles/monitoring.notificationServiceAgent)
    2. 連結資料集上的「BigQuery 資料檢視者」圖示 (roles/bigquery.dataViewer)。

    如果監控服務帳戶不存在,請參閱「疑難排解:沒有監控服務帳戶」。

  3. 設定要用於接收事件通知的通知管道。為提供備援,建議您建立多種通知管道。詳情請參閱「建立及管理通知管道」。

建立以 SQL 為基礎的快訊政策

如要建立以 SQL 為基礎的警告政策,請按照下列步驟操作:

Google Cloud 控制台

  1. 在 Google Cloud 控制台中,前往 「Log Analytics」(記錄檔分析) 頁面:

    前往「Log Analytics」(記錄檔分析)

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果

  2. 在「記錄檔分析」頁面的查詢編輯器中,輸入查詢追蹤資料的 SQL 查詢。

  3. 在工具列上,按一下「在 BigQuery 上執行」

    記錄檔分析會在 BigQuery 引擎上執行查詢,並在「結果」表格中顯示結果。

    如果沒有顯示「在 BigQuery 上執行」,請按一下「選取查詢引擎」,然後按一下「BigQuery」。「執行查詢」按鈕會變更為「在 BigQuery 中執行」

  4. 在「記錄分析」頁面的「結果」表格中,按一下「建立快訊」

    「記錄檔分析」頁面會顯示「建立 SQL 警告政策」視窗,其中「SQL 查詢」部分會顯示您的查詢。

  5. 在「Alert condition」(快訊條件) 部分,設定快訊政策的條件和時間表。

  6. 設定快訊政策的快訊詳細資料。

    1. 新增通知管道,並設定通知內容,例如自訂主旨行。

    2. 選用:新增快訊政策標籤說明文件

    3. 點選「下一步」

  7. 檢查警告政策,然後按一下「儲存」建立政策。

Cloud Monitoring API

使用 alertPolicies.create 方法,以程式輔助方式建立快訊政策。快訊政策的Condition類型必須是 MonitoringQueryLanguageCondition,也就是 SqlCondition 的例項。您可以使用 SQL 定義這類條件,設定警告政策的條件。

如要定義時間表,請為 minuteshoursdays 欄位設定 periodicity 值。舉例來說,如要每 12 小時執行一次查詢,請將 hours 欄位的週期性設為 12。

如要定義條件,請使用下列欄位:

  • boolean_test:設定警報政策,當查詢結果資料表的布林值資料欄含有 true 值時,即符合政策條件。
  • row_count_test:設定警報政策,當查詢結果資料表中的資料列數達到特定門檻時,即符合政策條件。

如需欄位和定義的完整清單,請參閱 Cloud Monitoring API 說明文件中的 SqlCondition

如要進一步瞭解快訊政策的 Monitoring API,請參閱「由 API 管理快訊政策」一文。

Terraform

  1. 安裝及設定 Terraform 以供專案使用。如要進行 App Hub 設定,請選取 App Hub 主專案或管理專案。

  2. 在 Cloud Shell 中,前往包含 Terraform 設定的目錄。

  3. 在 Terraform 設定中,設定 google_monitoring_alert_policy 資源的執行個體,包括 condition_sql

  4. 在 Cloud Shell 中輸入 terraform apply

如要修改快訊政策,請編輯內容,然後重新套用 Terraform 設定。詳情請參閱「使用 Terraform 管理快訊政策」。

如要瞭解如何搭配使用 Terraform 與 Google Cloud ,請參閱「Terraform with Google Cloud」。

限制

  • 每個以 SQL 為基礎的快訊政策只能有一個條件。
  • 如果執行時間超過五分鐘,以 SQL 為基礎的警告政策發出的查詢就會失敗。

  • 查詢排定時間與事件建立時間之間,最多會有七分鐘的延遲,加上查詢執行時間。

如需快訊政策相關限制的完整清單,請參閱「Monitoring 限制」。

後續步驟