本文說明如何建立快訊政策,監控在 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 運算單元預留項目:
- 使用專屬運算單元建立預留項目,或找出現有的預留項目。
- 為專案建立預留項目指派。
回溯期和事件傳播時間
快訊政策排定要評估條件時,記錄檔分析會延遲執行 SQL 查詢五分鐘,讓 Cloud Logging 有時間為回溯時間範圍內收到的資料建立索引。舉例來說,如果快訊政策使用的回溯時間範圍在下午 2:00 結束,記錄檔分析功能會在下午 2:05 執行 SQL 查詢。
如果查詢執行後符合快訊條件,事件最多可能需要額外兩分鐘的時間,才能在系統中傳播。
查詢失敗
SQL 型警報政策發出的查詢可能會因各種原因而失敗,包括:
監控服務帳戶已不存在,或不再具備讀取所查詢追蹤資料的必要權限。
查詢執行時間超過五分鐘。
發生內部錯誤。
如果查詢失敗,系統會產生記錄項目,其中包含快訊政策 ID 和錯誤狀態。您可以使用記錄型快訊政策,在系統記錄錯誤時建立快訊。
事前準備
本節假設您已連結追蹤資料的 BigQuery 資料集。
建立以 SQL 為基礎的快訊政策前,請先完成下列步驟:
-
如要取得查詢追蹤資料及建立以 SQL 為基礎的警告政策所需的權限,請要求管理員在專案中授予您下列 IAM 角色:
-
查詢追蹤資料:
Cloud Trace 使用者 (
roles/cloudtrace.user) -
建立以 SQL 為準的警告政策:
- Monitoring 編輯者 (
roles/monitoring.editor) -
記錄 SqlAlertWriter (
roles/logging.sqlAlertWriter)
- Monitoring 編輯者 (
-
查詢追蹤資料:
Cloud Trace 使用者 (
確認監控服務帳戶存在,且具備下列角色:
- 專案的監控服務代理程式 (
roles/monitoring.notificationServiceAgent) 。 - 連結資料集上的「BigQuery 資料檢視者」圖示 (
roles/bigquery.dataViewer)。
如果監控服務帳戶不存在,請參閱「疑難排解:沒有監控服務帳戶」。
- 專案的監控服務代理程式 (
- 設定要用於接收事件通知的通知管道。為提供備援,建議您建立多種通知管道。詳情請參閱「建立及管理通知管道」。
建立以 SQL 為基礎的快訊政策
如要建立以 SQL 為基礎的警告政策,請按照下列步驟操作:
Google Cloud 控制台
-
在 Google Cloud 控制台中,前往 manage_search「Log Analytics」(記錄檔分析) 頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果。
在「記錄檔分析」頁面的查詢編輯器中,輸入查詢追蹤資料的 SQL 查詢。
在工具列上,按一下「在 BigQuery 上執行」。
記錄檔分析會在 BigQuery 引擎上執行查詢,並在「結果」表格中顯示結果。
如果沒有顯示「在 BigQuery 上執行」,請按一下「選取查詢引擎」settings,然後按一下「BigQuery」。「執行查詢」按鈕會變更為「在 BigQuery 中執行」。
在「記錄分析」頁面的「結果」表格中,按一下「建立快訊」add_alert。
「記錄檔分析」頁面會顯示「建立 SQL 警告政策」視窗,其中「SQL 查詢」部分會顯示您的查詢。
在「Alert condition」(快訊條件) 部分,設定快訊政策的條件和時間表。
設定快訊政策的快訊詳細資料。
檢查警告政策,然後按一下「儲存」建立政策。
Cloud Monitoring API
使用 alertPolicies.create 方法,以程式輔助方式建立快訊政策。快訊政策的Condition類型必須是 MonitoringQueryLanguageCondition,也就是 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 管理快訊政策」。
如要瞭解如何搭配使用 Terraform 與 Google Cloud ,請參閱「Terraform with Google Cloud」。
限制
- 每個以 SQL 為基礎的快訊政策只能有一個條件。
- 以 SQL 為基礎的警告政策無法查詢分析檢視畫面。
如果執行時間超過五分鐘,以 SQL 為基礎的警告政策發出的查詢就會失敗。
查詢排定時間與事件建立時間之間,最多會有七分鐘的延遲,加上查詢執行時間。
如需快訊政策相關限制的完整清單,請參閱「Monitoring 限制」。