本文說明如何建立快訊政策,監控在 Log Analytics 中執行的查詢結果。這些查詢是以 SQL 編寫,且必須查詢記錄檢視畫面。當查詢結果符合指定條件時,快訊政策就會通知您。舉例來說,您可以設定快訊政策,在特定期間內至少有 25% 的記錄項目嚴重程度為 ERROR
時收到通知。
從「記錄檔分析」頁面建立的快訊政策會在 BigQuery 引擎上執行。因此,查詢的資料必須可透過連結的 BigQuery 資料集存取。因此,這些 SQL 查詢只能查詢記錄檢視。無法查詢資料分析檢視區塊。
如需記錄檔分析的一般資訊,請參閱「使用記錄檔分析查詢及分析記錄檔」一文。
快訊政策的運作方式
快訊政策會說明快訊發送時機,以及事件通知方式。您可以使用三種不同的方法,在記錄資料中出現特定內容或模式時收到通知:
如要掃描個別記錄檔項目中的特定詞組,請建立記錄型快訊政策。如要接收安全性事件等通知,請使用這些快訊政策。
如要監控記錄項目資料中的事件,您可以建立記錄指標,然後建立警告政策來監控該指標。如果您想監控一段時間內的記錄項目資料趨勢,這類快訊政策就非常實用。不過,如果您預期只有少數事件,這類轉換目標的效果就不會那麼好。
如要監控記錄檔項目資料的匯總分析結果,請將 Log Analytics 與警告政策結合使用。在這個情境中,您會升級記錄檔 bucket,改用記錄檔分析功能,並為該記錄檔 bucket 建立連結的 BigQuery 資料集。接著,您可以使用支援 SQL 查詢的記錄檔分析功能,查詢記錄檔值區中的記錄檔檢視區塊。最後,您會建立警告政策,監控 SQL 查詢結果。這類警告政策稱為「以 SQL 為準的警告政策」。
SQL 警告政策最適合評估多個記錄項目中的確切值。如要評估個別記錄項目,請建立記錄型快訊政策。
本文的其餘內容說明如何使用以 SQL 為基礎的快訊政策。
快訊政策元件
以 SQL 為基礎的快訊政策包含條件和時間表:
條件包含查詢,也就是查詢記錄檢視區塊的 SQL 查詢。條件也會定義查詢結果在何種情況下會導致監控服務建立事件。
排程會定義警報政策執行查詢的頻率。 排程也會定義回溯視窗的大小,這個篩選器只會選取自上次評估查詢以來收到的記錄檔項目。舉例來說,如果將排程設為 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 中執行」。
在「記錄分析」頁面的「結果」表格中,按一下「建立快訊」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 為基礎的快訊政策事件」。