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

本文件說明如何建立警示政策,監控您在 Log Analytics 中執行查詢的結果。這些查詢是以 SQL 編寫,且必須查詢記錄檢視畫面。當查詢結果符合您指定的條件時,快訊政策就會通知您。舉例來說,您可以設定快訊政策,在特定期間內至少有 25% 的記錄項目嚴重性為 ERROR 時,通知您。

您透過「記錄檔分析」頁面建立的警示政策會在 BigQuery 引擎上執行。因此,您必須透過已連結的 BigQuery 資料集存取要查詢的資料。因此,這些 SQL 查詢只能查詢記錄檢視。無法查詢數據分析檢視畫面

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

快訊政策的運作方式

快訊政策會說明您希望在何種情況下收到快訊,以及希望以何種方式收到事件通知。您可以透過三種方式,在記錄資料中出現內容或模式時收到通知:

  • 如要掃描個別記錄項目,找出特定字詞,請建立記錄檔快訊政策。如要接收安全性相關事件等通知,請使用這些快訊政策。

  • 如要監控記錄項目資料中的事件,您可以建立記錄指標,然後建立警告政策來監控指標。當您想監控記錄項目資料在一段時間內的趨勢時,這類快訊政策就會生效。不過,如果您預期只有少數事件,這類事件就不會那麼有效。

  • 如要監控記錄項目資料的匯總分析,請結合 Log Analytics 和警告政策。在這種情況下,您可以升級記錄檔值區,以便使用 Log Analytics,並為該記錄檔值區建立已連結的 BigQuery 資料集。接著,您可以使用支援 SQL 查詢的 Log Analytics,查詢記錄檔值區的記錄檢視。最後,您可以建立警告政策來監控 SQL 查詢結果。這類警告政策稱為以 SQL 為基礎的警告政策

以 SQL 為基礎的警告政策最適合用於評估多個記錄項目的確切值。如要評估個別記錄項目,請建立記錄型警告政策

本文的其餘部分將說明如何使用 SQL 快訊政策。

快訊政策元件

以 SQL 為基礎的快訊政策包含條件和排程:

  • condition 包含 query,這是用於查詢記錄檢視表的 SQL 查詢。條件也會定義查詢結果會導致 Monitoring 建立事件的情況。

  • schedule 定義警示政策執行查詢的頻率。時間表也會定義回溯時間範圍的大小,這是一個篩選器,只會選取自上次執行查詢後收到的記錄項目。舉例來說,如果您將排程設為 60 分鐘,系統就會每隔 60 分鐘執行查詢,並使用回溯期間選取最近 60 分鐘的記錄項目。

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

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

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

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

    舉例來說,假設您希望在回溯期內有超過 50 個記錄項目的嚴重性大於 200 時收到通知。您建立的查詢會回報嚴重性大於 200 的記錄項目。接著設定條件,選取「列數量門檻」並將門檻設為 50。

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

    舉例來說,假設您想要在回溯期內超過 25% 的記錄項目嚴重性為 ERROR 時收到通知。您可以建立查詢,計算嚴重性等級為 ERROR 的記錄項目百分比。當百分比超過 25%,查詢結果就會將 true 寫入 notify 欄。接下來,您將建立條件,將類型設為「布林值」,並設定條件來監控 notify 欄。

監控 SQL 查詢結果的警告政策必須只有一個條件。

快訊政策和 BigQuery

當警告政策執行 SQL 查詢時,系統會使用警告政策定義的 Google Cloud 專案中保留的 BigQuery 時段執行該查詢。詳情請參閱「使用時段預留功能」。

如要讓警示政策使用保留的 BigQuery 時段查詢記錄檢視畫面,代管記錄檢視畫面的記錄檔值區必須設定為連結 BigQuery 資料集。連結的資料集可讓 BigQuery 讀取記錄資料桶中的資料,並讓您針對 SQL 查詢傳回的資料執行 BigQuery 函式。

已評估的記錄項目

如要讓記錄項目由警告政策的 SQL 查詢評估,必須滿足下列兩個條件:

  • 記錄項目的接收時間戳記 (記錄 Cloud Logging 接收記錄項目的時間) 必須在警示政策的回溯時間範圍內。
  • 記錄項目的時間戳記 (記錄記錄項目產生的時間) 必須在回溯時間範圍的 15 分鐘內。

舉例來說,您以 SQL 為基礎的快訊政策有 60 分鐘的回溯期。Log Analytics 會在下午 1 點 30 分執行警告政策的 SQL 查詢。記錄項目必須同時符合下列兩個條件,才能納入查詢:

  • 收到的時間戳記必須介於下午 12 點 30 分至下午 1 點 30 分之間。
  • 時間戳記必須介於下午 12 點 15 分至下午 1 點 45 分之間。

透過 Log Analytics 介面執行查詢時,系統會根據記錄項目的時間戳記,評估所選時間範圍內的所有記錄項目。

回溯期和事件傳播時間

當警告政策排定評估其條件時,Log Analytics 會將 SQL 查詢執行作業延遲五分鐘,讓 Cloud Logging 有時間為回溯期間收到的記錄項目建立索引。舉例來說,如果警告政策使用的回溯時間範圍結束時間為下午 2 點,Log Analytics 會在下午 2 點 5 分之前不執行 SQL 查詢。

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

查詢失敗

以 SQL 為基礎的警示政策發出的查詢可能會因多種原因失敗,包括:

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

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

  • 發生內部錯誤。

查詢失敗會產生記錄項目,其中包含警示政策 ID 和錯誤狀態。您可以使用以記錄為依據的快訊政策,在記錄錯誤時建立快訊。

事前準備

本節假設您已升級記錄檔值區以使用 Log Analytics,且可以使用 Log Analytics 頁面查詢及查看記錄檔資料。這也假設您已為記錄檔值區建立連結的 BigQuery 資料集

建立 SQL 快訊政策前,請先完成下列步驟:

  1. 如要取得建立及管理 SQL 警告政策所需的權限,請要求管理員授予您下列 IAM 角色:

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

    1. 在專案中使用監控服務代理程式 (roles/monitoring.notificationServiceAgent)
    2. 在已連結資料集上使用 BigQuery 資料檢視器 (roles/bigquery.dataViewer)

    如果沒有監控服務帳戶,請參閱疑難排解:沒有監控服務帳戶

  3. 如要讓以 SQL 為基礎的快訊政策在預留的 BigQuery 時段中執行,請執行下列操作:
    1. 設定 BigQuery 預留的空格
    2. 將預留的運算單元指派給 Google Cloud 專案
  4. 設定要用來接收事件通知的通知管道。為確保備援,建議您建立多種通知管道。詳情請參閱「建立及管理通知管道」。

建立 SQL 快訊政策

如要建立 SQL 快訊政策,請按照下列步驟操作:

Google Cloud 控制台

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

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

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

  2. 在「Log Analytics」頁面的查詢編輯器中,輸入記錄檢視畫面的 SQL 查詢。

    如要進一步瞭解如何為記錄檢視畫面編寫 SQL 查詢,請參閱「查詢記錄檢視畫面」。

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

    Log Analytics 會在 BigQuery 引擎上執行查詢,並在「Results」表格中顯示結果。

    如果沒有顯示「Run on BigQuery」,請依序按一下 「Select query engine」和「BigQuery」。「Run query」按鈕會變更為「Run on BigQuery」

  4. 在「Log Analytics」頁面的「Results」表格中,按一下 「Create alert」

    「Log Analytics」頁面會顯示「Create sql alert policy」視窗,並在「SQL query」部分顯示您的查詢。

  5. 在「警報條件」部分,設定警報政策的條件和排程。

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

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

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

    3. 點選「下一步」

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

Cloud Monitoring API

使用 alertPolicies.create 方法,以程式輔助方式建立快訊政策。快訊政策的 Condition 類型必須是 conditionSql,這是 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 管理快訊政策」。

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

限制

  • 每項以 SQL 為基礎的快訊政策可以包含一個條件。

  • 以 SQL 為基礎的警示政策無法查詢 Analytics 檢視畫面

  • 執行時間超過五分鐘時,以 SQL 為基礎的警示政策所發出的查詢會失敗。

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

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

定價

如需定價資訊,請參閱下列文件:

  • BigQuery 定價
  • Google Cloud Observability 定價說明文件中的「Cloud Logging」
  • Google Cloud Observability 定價說明文件中的「Cloud Monitoring

後續步驟