本頁說明如何為 Google Distributed Cloud 叢集建立快訊政策。
事前準備
如要建立快訊政策,您必須具備下列權限:
monitoring.alertPolicies.create
monitoring.alertPolicies.delete
monitoring.alertPolicies.update
如果您具備下列任一角色,就會擁有這些權限:
monitoring.alertPolicyEditor
monitoring.editor
- 專案編輯者
- 專案擁有者
如要使用 Google Cloud CLI 建立以記錄為準的快訊政策,您也必須具備 serviceusage.serviceUsageConsumer
角色。
如要查看角色,請前往 Google Cloud 控制台的「IAM」頁面。
建立範例政策:API 伺服器無法使用
在本練習中,您將為 Kubernetes API 伺服器建立快訊政策。設定這項政策後,您就能在叢集的 API 伺服器無法使用時收到通知。
下載政策設定檔:apiserver-unavailable.json。
建立政策:
gcloud alpha monitoring policies create --policy-from-file=POLICY_CONFIG
將 POLICY_CONFIG 替換為您剛下載的設定檔路徑。
查看快訊政策:
控制台
前往 Google Cloud 控制台的「Monitoring」頁面。
選取左側的「快訊」。
「政策」下方會列出警告政策。
在清單中選取「Anthos 叢集 API 伺服器無法使用 (重大)」,即可查看新政策的詳細資料。在「條件」下方,您可以看到政策說明。例如:
Policy violates when ANY condition is met Anthos cluster API server uptime is absent for 5m
gcloud
gcloud alpha monitoring policies list
輸出內容會顯示政策的詳細資訊。例如:
combiner: OR conditions: - conditionAbsent: aggregations: - alignmentPeriod: 60s crossSeriesReducer: REDUCE_MEAN groupByFields: - resource.label.project_id - resource.label.location - resource.label.cluster_name - resource.label.namespace_name - resource.label.container_name - resource.label.pod_name perSeriesAligner: ALIGN_MAX duration: 300s filter: resource.type = "k8s_container" AND metric.type = "kubernetes.io/anthos/container/uptime" AND resource.label."container_name"=monitoring.regex.full_match("kube-apiserver") trigger: count: 1 displayName: Anthos cluster API server uptime is absent for 5m name: projects/…/alertPolicies/…/conditions/… displayName: Anthos cluster API server unavailable (critical) enabled: true mutationRecord: mutateTime: … mutatedBy: … name: projects/…/alertPolicies/…
建立其他快訊政策
本節提供一組建議快訊政策的說明和設定檔。
如要建立政策,請按照先前練習中的相同步驟操作:
按一下右欄中的連結,即可下載設定檔。
您可以視需要調整條件,以更符合特定需求。舉例來說,您可以為叢集子集新增其他篩選條件,或調整閾值,在雜訊和重要性之間取得平衡。
執行
gcloud alpha monitoring policies create
即可建立政策。
控制層元件可用性
快訊名稱 | 說明 | Cloud Monitoring 中的快訊政策定義 |
---|---|---|
API 伺服器無法使用 (嚴重) | 無法提供 API 伺服器正常運作時間指標 | apiserver-unavailable.json |
排程器無法使用 (嚴重) | 無法取得排程器運作時間指標 | scheduler-unavailable.json |
控制器管理工具無法使用 (嚴重) | 無法取得控制器管理工具運作時間指標 | controller-manager-unavailable.json |
Kubernetes 系統
快訊名稱 | 說明 | Cloud Monitoring 中的快訊政策定義 |
---|---|---|
Pod 發生當機迴圈 (警告) | Pod 不斷重新啟動,可能處於當機迴圈狀態 | pod-crash-looping.json |
Pod 準備時間超過一小時 (嚴重) | Pod 處於非就緒狀態超過一小時 | pod-not-ready-1h.json |
容器 CPU 使用率超過 80% (警告) | 容器 CPU 使用率超過限制的 80% | container-cpu-usage-high-reaching-limit.json |
容器記憶體用量超過 85% (警告) | 容器記憶體用量超過上限的 85% | container-memory-usage-high-reaching-limit.json |
永久磁碟區使用量過高 (嚴重) | 聲明的永久磁碟區可用空間少於 3% | persistent-volume-usage-high.json |
節點 CPU 使用率超過 80% (警告) | 節點 CPU 使用率超過可分配總量的 80% 達 5 分鐘 | node-cpu-usage-high.json |
節點磁碟用量超過 85% (警告) | 每個磁碟掛接點的可用空間在 10 分鐘內低於 15% | node-disk-usage-high.json |
節點記憶體用量超過 80% (警告) | 節點記憶體用量超過可分配總量的 80% 達 5 分鐘 | node-memory-usage-high.json |
節點無法運作超過一小時 (重大) | 節點處於非就緒狀態超過一小時 | node-not-ready-1h.json |
Kubernetes 效能
快訊名稱 | 說明 | Cloud Monitoring 中的快訊政策定義 |
---|---|---|
API 伺服器錯誤率超過 20% (嚴重) | API 伺服器在 15 分鐘內,針對每個動詞,對超過 20% 的要求傳回 5xx 或 429 錯誤 | apiserver-error-ratio-high.json |
ETCD 領導者變更或提案失敗次數過於頻繁 (警告) | etcd 領導者變更或提案失敗的頻率過高 |
etcd-leader-changes-or-proposal-failures-frequent.json |
ETCD 伺服器不在仲裁中 (嚴重) | 5 分鐘內未提交任何 etcd 伺服器提案,因此可能已失去法定人數 |
etcd-server-not-in-quorum.yaml |
ETCD 儲存空間超過 90% 的上限 (警告) | etcd 儲存空間用量超過上限的 90% |
etcd-storage-usage-high.json |
使用 PromQL 的快訊政策
快訊政策中的查詢也可以用 PromQL 表示,而非 MQL。
舉例來說,您可以下載 API server error ratio exceeds 20
percent (critical)
政策的 PromQL 版本:apiserver-error-ratio-high-promql.json。
詳情請參閱 Google Distributed Cloud 說明文件的「使用 Managed Service for Prometheus」,以及 Cloud Monitoring 說明文件的「以 PromQL 為基礎的快訊政策」。
接收通知
建立快訊政策後,您可以為政策定義一或多個通知管道。通知管道種類繁多。例如,您可以選擇透過電子郵件、Slack 頻道或行動應用程式接收通知。 您可以選擇符合需求的管道。
如需如何設定通知管道的操作說明,請參閱「管理通知管道」。