本文說明如何使用 Cloud Monitoring API,以程式輔助方式建立、編輯、刪除、列出及取得指標型快訊政策。這些範例說明如何使用 Google Cloud CLI 和用戶端程式庫。 這項內容不適用於以記錄檔為準的快訊政策。 如要瞭解記錄快訊政策,請參閱「監控記錄」。
您也可以使用 Google Cloud 控制台執行這些工作,詳情請參閱下列文件:
這項功能僅支援 Google Cloud 專案。 如要進行 App Hub 設定,請選取 App Hub 主專案或已啟用應用程式的資料夾管理專案。
關於快訊政策
快訊政策由 AlertPolicy
物件呈現,說明一組用來指出您系統中可能存在不良健康狀態的條件。快訊政策會參照通知管道,進而讓您指定您想如何收到已觸發快訊政策的通知。
每項快訊政策都屬於指標範圍的限定範圍專案。每個專案最多可包含 500 項政策。發出 API 呼叫時,您必須提供「專案 ID」,並使用指標範圍的範圍專案 ID 做為值。在這些範例中,指標範圍的範圍設定專案 ID 為 a-gcp-project
。
AlertPolicy
資源支援五種作業:
- 建立新政策
- 刪除現有政策
- 擷取特定政策
- 擷取所有政策
- 修改現有政策
快訊政策可以 JSON 或 YAML 格式表示,方便您將政策記錄在檔案中,並使用檔案備份及還原政策。您可以使用 Google Cloud CLI,從任一格式的檔案建立政策。您可以使用 REST API,從 JSON 檔案建立政策。 如要查看 JSON 格式的快訊政策,請參閱範例政策。
下列範例使用 gcloud
介面和 API,說明這些基本用途。API 範例摘錄自範例程式,該程式使用 API 實作快訊政策的備份和還原系統。如需更完整的範例,請參閱「範例:備份及還原」。
事前準備
在針對 API 編寫程式碼之前,您應該先:
- 熟悉適用於快訊政策的一般概念與術語;詳情請參閱快訊總覽。
- 確保啟用 Cloud Monitoring API 以供使用;詳情請參閱啟用 API。
- 如果您打算使用用戶端程式庫,請針對您想使用的語言安裝程式庫;詳情請參閱用戶端程式庫。目前只為 C#、Go、Java、Node.js 與 Python 提供 API 快訊支援。
如果您打算使用 Google Cloud CLI,請安裝該工具。 不過,如果您使用 Cloud Shell,系統會預先安裝 Google Cloud CLI。
這裡還提供了使用
gcloud
介面的範例。 請注意,gcloud
範例都假設目前的專案已設為目標 (gcloud config set project [PROJECT_ID]
),因此叫用會省略明確的--project
標記。範例中目前專案的 ID 為a-gcp-project
。如要進行 App Hub 設定,請選取 App Hub 主專案或已啟用應用程式的資料夾管理專案。
-
如要取得使用 Cloud Monitoring API 建立及修改快訊政策所需的權限,請要求管理員授予您專案的監控 AlertPolicy 編輯者 (
roles/monitoring.alertPolicyEditor
) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。如要進一步瞭解 Monitoring 的 IAM 角色,請參閱「使用身分與存取權管理功能控管存取權」。
請將應用程式設計為單一執行緒,以便呼叫 Cloud Monitoring API,修改Google Cloud 專案中快訊政策的狀態。舉例來說,建立、更新或刪除快訊政策的單一執行緒 API 呼叫。
建立快訊政策
如要在專案中建立快訊政策,請使用 alertPolicies.create
方法。如要瞭解如何叫用這個方法、其參數和回應資料,請參閱alertPolicies.create
參考頁面。
您可以利用 JSON 或 YAML 檔案建立政策,Google Cloud CLI 接受這些檔案做為引數。您可以透過程式讀取 JSON 檔案、將該檔案轉換為 AlertPolicy
物件,並透過 alertPolicies.create
方法來利用這些檔案建立政策。如果您有包含警告規則的 Prometheus JSON 或 YAML 設定檔,gcloud CLI 可以將其遷移至 Cloud Monitoring 警告政策,並加入 PromQL 條件。詳情請參閱「從 Prometheus 遷移快訊規則和接收者」。
下列範例說明如何建立快訊政策,但未說明如何建立描述快訊政策的 JSON 或 YAML 檔案。不過,這些範例會假設有 JSON 格式的檔案,並說明如何發出 API 呼叫。如需 JSON 檔案範例,請參閱「範例政策」。如要瞭解如何監控指標比率,請參閱「指標比率」。
gcloud
如要在專案中建立快訊政策,請使用 gcloud alpha monitoring
policies create
指令。下列範例會利用 rising-cpu-usage.json
檔案,在 a-gcp-project
中建立快訊政策:
gcloud alpha monitoring policies create --policy-from-file="rising-cpu-usage.json"
若成功,這個指令會傳回新政策的名稱,例如:
Created alert policy [projects/a-gcp-project/alertPolicies/12669073143329903307].
rising-cpu-usage.json
檔案包含顯示名稱為「High CPU rate of change」的政策 JSON。如要瞭解這項政策的詳細資料,請參閱「變更率政策」。
詳情請參閱 gcloud alpha monitoring policies create
參考資料。
C#
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Go
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Java
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Node.js
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
PHP
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Python
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
建立的 AlertPolicy
物件將擁有其他欄位。
政策本身會包含 name
、creationRecord
和 mutationRecord
欄位。此外,政策中的每項條件也會標示 name
。這些欄位無法從外部修改,因此建立政策時不必設定。用於建立政策的所有 JSON 範例都不包含這些欄位,但如果在利用這些欄位建立政策之後擷取政策,這些欄位會顯示出來。
列出及取得快訊政策
如要在專案中擷取政策的清單,請使用 alertPolicies.list
方法。
使用這個方法可擷取政策,並對每項政策套用某些動作,例如備份。這個方法也支援以 filter
和 orderBy
選項來限制及排序結果;詳情請參閱排序與篩選。
如果您要尋找特定政策且知道政策名稱,則可以使用 alertPolicies.get
方法只擷取這個政策。政策名稱是 AlertPolicy
物件中的 name
欄位值,而非 displayName
。政策名稱的格式為 projects/[PROJECT_ID]/alertPolicies/[POLICY_ID]
,例如:
projects/a-gcp-project/alertPolicies/12669073143329903307
gcloud
如要列出專案中的所有快訊政策,請使用 gcloud alpha monitoring
policies list
指令:
gcloud alpha monitoring policies list
如果成功,list
指令會提供指定專案中所有政策的清單 (清單格式為 YAML)。舉例來說,在其他列出的政策中,專案 a-gcp-project
中顯示名稱為「High CPU rate of change」(高 CPU 變更頻率) 的政策會以下列方式列出:
---
combiner: OR
conditions:
- conditionThreshold:
aggregations:
- alignmentPeriod: 900s
perSeriesAligner: ALIGN_PERCENT_CHANGE
comparison: COMPARISON_GT
duration: 180s
filter: metric.type="compute.googleapis.com/instance/cpu/utilization" AND resource.type="gce_instance"
thresholdValue: 0.5
trigger:
count: 1
displayName: CPU usage is increasing at a high rate
name: projects/a-gcp-project/alertPolicies/12669073143329903307/conditions/12669073143329903008
creationRecord:
mutateTime: '2018-03-26T18:52:39.363601689Z'
mutatedBy: [USER@DOMAIN]
displayName: High CPU rate of change
enabled: true
mutationRecord:
mutateTime: '2018-03-26T18:52:39.363601689Z'
mutatedBy: [USER@DOMAIN]
name: projects/a-gcp-project/alertPolicies/12669073143329903307
---
如要列出單一快訊政策,請改用 gcloud alpha monitoring policies
describe
,並指定政策名稱。例如,這個指令只會傳回上方的清單:
gcloud alpha monitoring policies describe projects/a-gcp-project/alertPolicies/12669073143329903307
詳情請參閱 gcloud alpha monitoring policies list
和 describe
參考資料。describe
指令與 API 中的 alertPolicies.get
方法對應。
C#
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Go
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Java
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Node.js
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
PHP
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Python
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
刪除快訊政策
如要刪除專案中的政策,請使用 alertPolicies.delete
方法,並提供要刪除的快訊政策名稱。
gcloud
如要刪除快訊政策,請使用 gcloud alpha monitoring policies
delete
,並指定要刪除的政策名稱。舉例來說,下列指令會刪除顯示名稱為「High CPU rate of change」的政策:
gcloud alpha monitoring policies delete projects/a-gcp-project/alertPolicies/12669073143329903307
詳情請參閱 gcloud alpha monitoring policies delete
參考資料。
修改快訊政策
如要修改快訊政策,請使用 alertPolicies.patch
方法 (在 REST API 中)。其他 API 實作與 gcloud
介面將這個方法稱為 update
,而不是 patch
。
更新作業可以完全取代現有政策,也可以修改欄位子集。更新作業會採用新的 AlertPolicy
物件與選用的欄位遮罩。
如果指定欄位遮罩,則列在欄位遮罩中的任何欄位,都會更新為所提供政策中的值。如果提供的政策不包含欄位遮罩中提及的欄位,則會清除該欄位並將其設定為預設值。未列在遮罩中的任何欄位會保留之前的值。
如未指定欄位遮罩,現有政策會由提供的政策取代,但名稱 (projects/[PROJECT_ID]/alertPolicies/[POLICY_ID]
) 會重複使用。新政策中任何含有 � 值的條件 (包括 �) 都會保留這些名稱。name
CONDITION_ID
若非如此,則會建立新條件與政策名稱。
使用 gcloud
指令列更新政策時,會使用指令列標記 (而不是欄位遮罩) 來指定要更新的欄位。詳情請參閱gcloud alpha monitoring policies update
。
您可以使用標籤將快訊政策與 App Hub 應用程式建立關聯。詳情請參閱「如何將快訊政策與 App Hub 應用程式建立關聯」。
啟用或停用快訊政策
如要啟用或停用政策,請變更 AlertPolicy
物件中布林 enabled
欄位的值。請注意,在您啟用政策之後,仍可透過停用時收集的資料觸發。
gcloud
如要停用快訊政策,請使用 gcloud alpha monitoring policies update
指令並提供 --no-enabled
標記。下列指令會停用專案 a-gcp-project
中的「High CPU rate of change」快訊政策:
gcloud alpha monitoring policies update projects/a-gcp-project/alertPolicies/12669073143329903307 --no-enabled
如要啟用政策,請使用相同指令並提供 --enabled
標記。
詳情請參閱 gcloud alpha monitoring policies update
參考資料。update
指令與 REST API 中的 alertPolicies.patch
方法對應。
C#
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Go
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Java
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Node.js
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
PHP
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Python
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
更新快訊政策中的通知管道
您也可以更新快訊政策參照的通知管道。 快訊政策會依名稱參照通知管道。管道必須存在,才能用於快訊政策。
您可以使用 NotificationChannel
和 NotificationChannelDescriptors
資源,以程式輔助方式建立及管理通知管道。本節的範例均假設這些管道已經存在,並在程式範例中顯示這些 API 的使用情況。
如要進一步瞭解通知管道物件,請參閱「由 API 建立及管理通知管道」。
gcloud
如要修改快訊政策中的通知管道,請使用 gcloud alpha monitoring policies update
指令。有多個與通知管道相關的標記,可讓您移除通知管道、取代通知管道,及新增通知管道。
例如,a-gcp-project 專案中顯示名稱為「High CPU rate of change」的政策,在建立時並沒有使用通知管道。
如要為這項政策新增通知管道,請使用 gcloud alpha monitoring
policies update
指令,並以 --add-notification-channels
旗標指定要新增的管道:
gcloud alpha monitoring policies update projects/a-gcp-project/alertPolicies/12669073143329903307 \
--add-notification-channels="projects/a-gcp-project/notificationChannels/1355376463305411567"
詳情請參閱 gcloud alpha monitoring policies update
參考資料。update
指令與 REST API 中的 alertPolicies.patch
方法對應。
您必須先建立通知管道,才能在此新增。詳情請參閱「建立通知管道」。
C#
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Go
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Java
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Node.js
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
PHP
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Python
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
修改快訊政策中的說明文件
政策可以包含與政策相關聯之事件和通知隨附的說明文件。使用這個欄位說明資訊,以協助回應者瞭解及處理快訊政策所指出的問題。說明文件包含在允許使用該說明文件的電子郵件通知與通知類型中;其他管道類型可能會省略說明文件。
gcloud
如要為政策新增說明文件或取代現有說明文件,請使用gcloud alpha monitoring policies update
指令並提供 --documentation-format="text/markdown"
旗標 (唯一支援的格式),以及 --documentation
旗標 (從指令列輸入值) 或 --documentation-from-file
旗標 (從檔案讀取值)。
舉例來說,a-gcp-project 專案中顯示名稱為「High CPU rate of change」(高 CPU 變更頻率) 的政策建立時並沒有說明文件。
下列指令會將指定政策中的 documentation
欄位設定為 cpu-usage-doc.md
檔案的內容:
gcloud alpha monitoring policies update projects/a-gcp-project/alertPolicies/12669073143329903307 \
--documentation-format="text/markdown" \
--documentation-from-file="cpu-usage-doc.md"
詳情請參閱 gcloud alpha monitoring policies update
參考資料。update
指令與 REST API 中的 alertPolicies.patch
方法對應。
在資訊主頁中新增快訊政策
如要在自訂資訊主頁上顯示單一條件快訊政策的摘要,請在資訊主頁中新增 AlertChart
小工具。
您可以使用 dashboards.create
方法建立新資訊主頁,並使用 dashboards.patch
方法建立現有資訊主頁。
如果您指定多條件快訊政策,AlertChart
小工具就不會顯示資料。
如要進一步瞭解如何使用這些 API 方法,請參閱使用 API 建立及管理資訊主頁。
範例:備份與還原
顯示的所有 API 範例均提取自較大的應用程式,進而可將專案中的快訊政策備份到檔案中,並在可能的情況下,將政策還原至其他專案。如果用於備份與還原的專案不同,應用程式可在專案之間有效匯出及匯入政策。
本節會將適用於備份與還原的程式碼顯示在背景資訊中,而不是顯示為一組小型的獨立摘錄。
備份政策
備份作業非常簡單。每個專案中的快訊政策集與通知管道集都會以 JSON 格式收集並儲存至外部儲存空間。
C#
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Go
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Java
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Node.js
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
PHP
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Python
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
還原備份政策
還原程序比原始備份更複雜。您可以還原至最初備份的專案,也可以還原至其他專案,進而有效提供快訊政策的匯入內容。
如果您還原至相同專案,任何現有管道或政策都會更新 (若其仍然存在)。如果沒有,系統會重新建立這些檔案。 還原程序會先清除備份政策中的唯讀欄位 (例如建立和異動記錄),再重新建立政策和通知。
您可以利用儲存在某個專案中的政策,在另一個專案中建立全新或類似的政策。但是,您必須在儲存政策的副本中先進行下列變更:
- 從任何通知管道移除下列欄位:
name
verificationStatus
- 建立通知管道,然後在快訊政策中參照這些通知管道 (您需要新的管道 ID)。
- 從任何重新建立的快訊政策中移除下列欄位:
name
condition.name
creationRecord
mutationRecord
此外,如果要在新專案中重新建立政策,備份政策中任何條件的名稱也要與建立和異動記錄一併清除。
另外,在不同專案中重新建立通知管道時,會取得不同名稱,因此還原程序必須將所備份快訊政策中管道的名稱對應至其新名稱,並將舊名稱取代為新名稱。
除了通知管道名稱,建立或更新管道時,無法設定 verificationStatus
欄位的值,因此會使用信號值 unspecified
。在將管道還原至新專案之後,必須對其明確驗證。
C#
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Go
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Java
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Node.js
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
PHP
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Python
如要驗證 Monitoring,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
快訊與 Google Cloud CLI
在 Google Cloud CLI 中,管理快訊政策與通知管道的指令群組是 monitoring
,這是 Alpha 版。monitoring
群組位於 alpha
元件中。
也就是說,這些指令都會以以下內容開頭:
gcloud alpha monitoring
如要檢查是否已安裝 alpha
元件,請執行下列指令:
gcloud components list
如果沒有安裝 alpha
元件,請執行下列指令來安裝:
gcloud components install alpha
如果已安裝 alpha
元件,請執行下列指令,檢查 monitoring
群組:
gcloud alpha monitoring --help
如果未包含 monitoring
群組,Google Cloud CLI 會提示您新增:
You do not currently have this command group installed.
[...]
Do you want to continue (Y/n)? y