本文說明如何建立快訊政策,監控在 Log Analytics 中執行的查詢結果。這些查詢是以 SQL 編寫,且必須查詢記錄檢視畫面。當查詢結果符合指定條件時,快訊政策就會通知您。舉例來說,您可以設定快訊政策,在特定期間內至少有 25% 的記錄項目嚴重程度為 ERROR 時收到通知。
從「記錄檔分析」頁面建立的快訊政策會在 BigQuery 引擎上執行。因此,查詢的資料必須可透過連結的 BigQuery 資料集存取。因此,這些 SQL 查詢只能查詢記錄檢視。無法查詢資料分析檢視區塊。
如需記錄檔分析的一般資訊,請參閱「使用記錄檔分析查詢及分析記錄檔」一文。
快訊政策的運作方式
快訊政策會說明快訊發送時機,以及事件通知方式。您可以使用三種不同的方法,在記錄資料中出現特定內容或模式時收到通知:
如要掃描個別記錄檔項目中的特定詞組,請建立記錄型快訊政策。如要接收安全性事件等通知,請使用這些快訊政策。
如要監控記錄項目資料中的事件,您可以建立記錄指標,然後建立警告政策來監控該指標。如果您想監控記錄檔項目資料的長期趨勢,這類快訊政策就非常實用。不過,如果您預期只有少數事件,這類轉換目標的效果就不會那麼好。
如要監控記錄檔項目資料的匯總分析結果,請將 Log Analytics 與警告政策結合使用。在這個情境中,您會升級記錄檔 bucket 以使用記錄檔分析,並為該記錄檔 bucket 建立連結的 BigQuery 資料集。接著,您可以使用支援 SQL 查詢的記錄檔分析功能,查詢記錄檔值區中的記錄檔檢視區塊。最後,您會建立警告政策,監控 SQL 查詢結果。這類警告政策稱為「以 SQL 為基礎的警告政策」。
SQL 警告政策最適合評估多個記錄項目的確切值。如要評估個別記錄項目,請建立記錄型快訊政策。
本文的其餘內容說明如何使用以 SQL 為基礎的快訊政策。
快訊政策元件
以 SQL 為基礎的快訊政策包含條件和時間表:
條件包含查詢,也就是查詢記錄檢視區塊的 SQL 查詢。條件也會定義查詢結果在何種情況下會導致 Monitoring 建立事件。
排程會定義警報政策執行查詢的頻率。 排程也會定義回溯視窗的大小,這個篩選器只會選取自上次評估查詢以來收到的記錄檔項目。舉例來說,如果將排程設為 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 運算單元查詢記錄檢視區塊,主機記錄 bucket 必須設定連結的 BigQuery 資料集。連結資料集可讓 BigQuery 讀取記錄儲存空間中的資料,並對 SQL 查詢傳回的資料執行 BigQuery 函式。
已評估的記錄項目
如要讓快訊政策的 SQL 查詢評估記錄項目,必須符合下列條件:
- 記錄項目的接收時間戳記 (記錄 Cloud Logging 接收記錄項目的時間) 必須在快訊政策的回溯時間範圍內。
- 記錄項目的時間戳記 (記錄產生記錄項目的時間) 必須在回溯時間範圍內 15 分鐘。
舉例來說,以 SQL 為基礎的快訊政策回溯期為 60 分鐘。記錄檔分析會在下午 1:30 執行警告政策的 SQL 查詢。如要將記錄檔項目納入查詢,該項目必須符合下列兩個條件:
- 接收時間戳記必須介於下午 12:30 至下午 1:30。
- 時間戳記必須介於下午 12:15 至下午 1:45 之間。
從 Log Analytics 介面執行查詢時,系統會根據記錄項目的時間戳記,評估所選時間範圍內的所有記錄項目。
回溯期和事件傳播時間
系統排定時間評估快訊政策的條件時,記錄檔分析工具會延遲執行 SQL 查詢五分鐘,讓 Cloud Logging 有時間為回溯時間範圍內收到的記錄項目建立索引。舉例來說,如果快訊政策使用的回溯時間範圍在下午 2 點結束,記錄檔分析功能會在下午 2 點 5 分才執行 SQL 查詢。
如果查詢執行後符合快訊條件,事件最多可能需要額外兩分鐘的時間,才能在系統中傳播。
查詢失敗
SQL 型快訊政策發出的查詢可能會因各種原因而失敗,包括:
監控服務帳戶已不存在,或不再具備讀取所查詢記錄資料的必要權限。
查詢執行時間超過五分鐘。
發生內部錯誤。
如果查詢失敗,系統會產生記錄項目,其中包含快訊政策 ID 和錯誤狀態。您可以透過記錄檔快訊政策,在系統記錄錯誤時建立快訊。
事前準備
本節假設您已升級記錄檔 bucket 並使用記錄檔分析,且可透過「記錄檔分析」頁面查詢及查看記錄檔資料。此外,本文也假設您已為記錄檔 bucket 建立連結的 BigQuery 資料集。
建立以 SQL 為基礎的快訊政策前,請先完成下列步驟:
-
如要取得建立及管理 SQL 警告政策所需的權限,請要求管理員授予下列 IAM 角色:
-
監控編輯者 (
roles/monitoring.editor) 專案 -
專案中的 Logging SqlAlertWriter (
roles/logging.sqlAlertWriter)
-
監控編輯者 (
確認監控服務帳戶存在,且具備下列角色:
- 專案中的監控服務代理程式 (
roles/monitoring.notificationServiceAgent) 。 - 連結資料集上的「BigQuery 資料檢視者」圖示 (
roles/bigquery.dataViewer)。
如果監控服務帳戶不存在,請參閱「疑難排解:沒有監控服務帳戶」。
- 專案中的監控服務代理程式 (
- 如要讓以 SQL 為基礎的快訊政策在預留的 BigQuery 配額上執行,請按照下列步驟操作:
- 設定要用來接收事件通知的通知管道。為確保備援,建議您建立多種通知管道。詳情請參閱「建立及管理通知管道」。
建立以 SQL 為基礎的快訊政策
如要建立以 SQL 為基礎的快訊政策,請按照下列步驟操作:
Google Cloud 控制台
-
在 Google Cloud 控制台中,前往「Log Analytics」(記錄檔分析) 頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果。
在「Log Analytics」(記錄檔分析) 頁面的查詢編輯器中,輸入記錄檢視的 SQL 查詢。
如要進一步瞭解如何為記錄檢視區塊編寫 SQL 查詢,請參閱「查詢記錄檢視區塊」。
在工具列上,按一下「在 BigQuery 上執行」。
記錄分析會在 BigQuery 引擎上執行查詢,並在「結果」表格中顯示結果。
如果沒有顯示「在 BigQuery 上執行」,請按一下「選取查詢引擎」settings,然後按一下「BigQuery」。「執行查詢」按鈕會變更為「在 BigQuery 中執行」。
在「Log Analytics」(記錄分析) 頁面的「結果」表格中,按一下「建立快訊」add_alert。
「記錄分析」頁面會顯示「建立 SQL 警告政策」視窗,其中「SQL 查詢」部分會顯示您的查詢。
在「快訊條件」部分,設定快訊政策的條件和時間表。
設定快訊政策的快訊詳細資料。
檢查警告政策,然後按一下「儲存」建立政策。
Cloud Monitoring API
使用 alertPolicies.create 方法以程式輔助方式建立快訊政策。快訊政策的 Condition 類型必須是 conditionSql,這是 SqlCondition 的例項。您可以使用 SQL 定義這類條件,設定警告政策。
如要定義時間表,請為 minutes、hours 或 days 欄位設定 periodicity 值。舉例來說,如要每 12 小時執行一次查詢,請將 hours 欄位的週期性設為 12。
如要定義條件,請使用下列欄位:
boolean_test:設定快訊政策,當查詢結果資料表的布林值資料欄包含 true 值時,即符合政策條件。row_count_test:設定警報政策,當查詢結果資料表中的資料列數達到特定門檻時,即符合政策條件。
如需欄位和定義的完整清單,請參閱 Cloud Monitoring API 說明文件中的 SqlCondition。
如要進一步瞭解快訊政策的 Monitoring API,請參閱「由 API 管理快訊政策」一文。
Terraform
安裝及設定 Terraform,如果是 App Hub 設定,請選取 App Hub 主專案或管理專案。
在 Cloud Shell 中,前往包含 Terraform 設定的目錄。
在 Terraform 設定中,設定 google_monitoring_alert_policy 資源的執行個體,包括 condition_sql。
在 Cloud Shell 中輸入
terraform apply。
如要修改快訊政策,請編輯內容,然後重新套用 Terraform 設定。詳情請參閱「使用 Terraform 管理快訊政策」。
如要瞭解如何搭配使用 Google Cloud 與 Terraform,請參閱「Terraform with Google Cloud」。
限制
每個以 SQL 為基礎的快訊政策只能有一個條件。
以 SQL 為基礎的警告政策無法查詢分析檢視畫面。
如果 SQL 警告政策發出的查詢執行時間超過五分鐘,就會失敗。
查詢排定時間與事件建立時間之間,最多會有 7 分鐘的延遲,加上查詢執行時間。
如需與快訊政策相關聯的完整限制清單,請參閱「Monitoring 限制」。
定價
如需定價資訊,請參閱下列文件:
- BigQuery 定價
- Google Cloud Observability 定價頁面的 Cloud Logging 和 Cloud Monitoring 部分。
後續步驟
如要瞭解如何根據記錄檔分析資料建立圖表,請參閱「使用記錄檔分析繪製查詢結果圖表」。
如要瞭解如何管理這些快訊政策的事件,請參閱「以 SQL 為基礎的快訊政策事件」。