建立快訊政策

本頁說明如何為 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 伺服器無法使用時收到通知。

  1. 下載政策設定檔:apiserver-unavailable.json

  2. 建立政策:

    gcloud alpha monitoring policies create --policy-from-file=POLICY_CONFIG
    

    POLICY_CONFIG 替換為您剛下載的設定檔路徑。

  3. 查看快訊政策:

    控制台

    1. 前往 Google Cloud 控制台的「Monitoring」頁面。

      前往「Monitoring」頁面

    2. 選取左側的「快訊」

    3. 「政策」下方會列出警告政策。

      在清單中選取「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/…
    

建立其他快訊政策

本節提供一組建議快訊政策的說明和設定檔。

如要建立政策,請按照先前練習中的相同步驟操作:

  1. 按一下右欄中的連結,即可下載設定檔。

  2. 您可以視需要調整條件,以更符合特定需求。舉例來說,您可以為叢集子集新增其他篩選條件,或調整閾值,在雜訊和重要性之間取得平衡。

  3. 執行 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 頻道或行動應用程式接收通知。 您可以選擇符合需求的管道。

如需如何設定通知管道的操作說明,請參閱「管理通知管道」。