使用 Cloud Monitoring 執行主動監控

在問題發生後才採取行動,可能會導致服務中斷。如要在 Google Kubernetes Engine (GKE) 中維護彈性系統,您必須在潛在問題影響使用者之前找出問題。

您可以透過本頁面,使用 Cloud Monitoring 追蹤主要成效指標、顯示趨勢,以及設定快訊來偵測錯誤率上升或資源限制等問題,主動監控 GKE 環境。

平台管理員和操作員必須確保 GKE 環境的健康狀態、可靠性和效率,因此這項資訊十分重要。這項功能也有助於應用程式開發人員瞭解應用程式在實際環境中的效能、偵測部署作業的迴歸情形,以及取得最佳化洞察資料。如要進一步瞭解內容中提及的常見角色和範例工作,請參閱「常見的 GKE 使用者角色和工作」。 Cloud de Confiance by S3NS

查看實用指標

GKE 會自動將一組指標傳送至 Cloud Monitoring。 以下各節列出一些最重要的疑難排解指標:

如需完整的 GKE 指標清單,請參閱「GKE 系統指標」。

容器效能和健康指標

懷疑特定應用程式有問題時,請先查看這些指標。這些指標可協助您監控應用程式的健康狀態,包括瞭解容器是否經常重新啟動、記憶體不足,或因 CPU 限制而受到節流。

指標 說明 疑難排解的意義
kubernetes.io/container/cpu/limit_utilization CPU 限制數量目前於執行個體上使用的比例。這個值可能大於 1,因為容器可能允許超出 CPU 限制。 識別 CPU 節流。如果值過高,可能會導致效能降低。
kubernetes.io/container/memory/limit_utilization 記憶體限制量目前於執行個體上使用的比例。這個值不得超過 1。 監控 OutOfMemory (OOM) 錯誤的風險。
kubernetes.io/container/memory/used_bytes 容器實際消耗的記憶體 (以位元組為單位)。 追蹤記憶體耗用量,找出潛在的記憶體流失問題或記憶體不足錯誤風險。
kubernetes.io/container/memory/page_fault_count 細分為主要與次要兩種類型的頁面錯誤數。 表示記憶體壓力過大。即使未達到記憶體上限,重大頁面錯誤也表示系統正在從磁碟讀取記憶體 (交換)。
kubernetes.io/container/restart_count 容器重新啟動的次數。 如果重新啟動次數偏高或增加,系統會醒目顯示潛在問題,例如應用程式異常終止、設定錯誤或資源耗盡。
kubernetes.io/container/ephemeral_storage/used_bytes 本機暫存儲存空間用量 (以位元組為單位)。 監控暫時磁碟用量,避免因暫時儲存空間已滿而導致 Pod 遭逐出。
kubernetes.io/container/cpu/request_utilization 要求的 CPU 目前於執行個體上使用的比例。這個值可以大於 1,因為用量可以超過要求。 找出超額或不足佈建的 CPU 要求,協助您最佳化資源分配。
kubernetes.io/container/memory/request_utilization 要求的記憶體目前於執行個體上使用的比例。這個值可以大於 1,因為用量可以超過要求。 找出記憶體要求佈建過多或過少的情況,以改善排程並避免發生 OOM 錯誤。

節點效能和健康指標

如需診斷基礎 GKE 基礎架構的問題,請檢查這些指標。這些指標對於瞭解節點的整體健康狀態和容量至關重要,可協助您調查節點是否健康狀態不佳或承受壓力,或節點是否有足夠的記憶體來排定新的 Pod。

指標 說明 疑難排解的意義
kubernetes.io/node/cpu/allocatable_utilization 執行個體目前使用的可分配 CPU 比例。 指出 Pod 用量總和是否已超出節點的可用 CPU 資源。
kubernetes.io/node/memory/allocatable_utilization 可分配記憶體目前於執行個體上使用的比例。這個值不可能超過 1,因為用量不會超過可分配的記憶體位元組。 表示節點缺乏記憶體,無法排程新 Pod 或讓現有 Pod 運作,尤其是在值偏高時。
kubernetes.io/node/status_condition (Beta 版) 節點狀態條件欄位中的節點條件。 回報節點健康狀態,例如 Ready、MemoryPressure 或 DiskPressure。
kubernetes.io/node/ephemeral_storage/used_bytes 節點使用的本機暫存空間位元組。 提供暫時性儲存空間用量過高的警告,協助避免 Pod 啟動失敗或遭到驅逐。
kubernetes.io/node/ephemeral_storage/inodes_free 本機暫時性儲存空間的可用索引節點 (inode) 數量。 監控可用 inode 數量。即使磁碟空間充足,inode 耗盡仍會導致作業停止。
kubernetes.io/node/interruption_count (Beta 版) 中斷是指系統在客戶控管基礎架構時,將基礎架構逐出系統。這項指標是目前按類型和原因計算的中斷次數。 說明節點可能因系統逐出而意外消失的原因。

Pod 成效和健康指標

這些指標可協助您排解 Pod 與環境互動時發生的問題,例如網路和儲存空間。當您需要診斷啟動緩慢的 Pod、調查潛在的網路連線問題,或主動管理儲存空間,避免磁碟區空間不足導致寫入失敗時,請使用這些指標。

指標 說明 疑難排解重要性
kubernetes.io/pod/network/received_bytes_count Pod 透過網路接收的累計位元組數。 找出異常的網路活動 (過高或過低),這可能代表應用程式或網路發生問題。
kubernetes.io/pod/network/policy_event_count (Beta 版) 資料平面中網路政策事件數量的變化。 找出網路政策造成的連線能力問題。
kubernetes.io/pod/volume/utilization 執行個體目前使用的磁碟區占比。這個值不可能超過 1,因為用量不會超過可用磁碟區空間總量。 當使用率偏高 (接近 1) 可能導致寫入失敗時,系統會發出警告,讓您主動管理磁碟區空間。
kubernetes.io/pod/latencies/pod_first_ready (Beta 版) Pod 端對端啟動延遲 (從 Pod `Created` 到 `Ready`),包括映像檔提取。 診斷啟動緩慢的 Pod。

使用 Metrics Explorer 顯示指標

如要以圖表呈現 GKE 環境的狀態,請使用 Metrics Explorer 根據指標建立圖表。

如要使用 Metrics Explorer,請完成下列步驟:

  1. 前往 Cloud de Confiance 控制台的「Metrics Explorer」頁面。

    前往 Metrics Explorer

  2. 在「指標」欄位中,選取或輸入要檢查的指標。

  3. 查看結果,並觀察一段時間內的趨勢。

舉例來說,如要調查特定命名空間中 Pod 的記憶體用量,可以執行下列操作:

  1. 在「Select a metric」(選取指標) 清單中,選擇指標 kubernetes.io/container/memory/used_bytes,然後按一下「Apply」(套用)。
  2. 按一下「新增篩選器」,然後選取「namespace_name」。
  3. 在「Value」(值) 清單中,選取要調查的命名空間。
  4. 在「Aggregation」欄位中,依序選取「Sum」 >「pod_name」,然後點選「OK」。這項設定會為每個 Pod 顯示個別的時間序列線。
  5. 按一下「儲存圖表」。

產生的圖表會顯示每個 Pod 的記憶體用量變化,協助您找出記憶體用量異常高或突然飆升的 Pod。

Metrics Explorer 可彈性建構要查看的指標。如要進一步瞭解 Metrics Explorer 進階選項,請參閱 Cloud Monitoring 說明文件中的「使用 Metrics Explorer 建立圖表」。

建立快訊,主動偵測問題

如要在發生問題或指標超出特定門檻時收到通知,請在 Cloud Monitoring 中設定警告政策。

舉例來說,如要設定警告政策,在容器 CPU 限制超過 80% 達五分鐘時通知您,請按照下列步驟操作:

  1. 前往 Cloud de Confiance 控制台的「Alerting」(警告) 頁面。

    前往「Alerting」(快訊)

  2. 點選「建立政策」。

  3. 在「選取指標」方塊中,篩選 CPU limit utilization,然後選取下列指標: kubernetes.io/container/cpu/limit_utilization。

  4. 按一下「套用」。

  5. 將「新增篩選器」欄位留空。採用這項設定後,如有任何叢集違反門檻,就會觸發警告。

  6. 在「Transform data」(轉換資料) 部分,執行下列操作:

    1. 在「Rolling window」(滾動週期) 清單中,選取「1 minute」(1 分鐘)。這項設定表示 Cloud de Confiance 每分鐘會計算平均值。
    2. 在「Rolling window function」(滾動週期函式) 清單中,選取「mean」(平均值)。

      這兩項設定都會每分鐘計算各容器的平均 CPU 限制使用率。

  7. 點選「下一步」。

  8. 在「設定警告」部分,執行下列操作:

    1. 在「條件類型」部分選取「門檻」。
    2. 在「警告觸發條件」中,選取「時間序列不符合條件時」。
    3. 在「Threshold position」(門檻位置) 中選取「Above threshold」(高於門檻)。
    4. 在「Threshold value」(門檻值) 中輸入 0.8。這個值代表您要監控的 80% 門檻。
    5. 點選「進階選項」。
    6. 在「Retest window」(重新測試時間間隔) 清單中,選取「5 min」(5 分鐘)。這項設定表示 CPU 使用率必須連續五分鐘超過 80%,才會觸發快訊,藉此減少短暫尖峰造成的誤報。
    7. 在「條件名稱」欄位中,為條件取個清楚易懂的名稱。
    8. 點選「下一步」。
  9. 在「設定通知並完成快訊」部分,執行下列操作:

    1. 在「Notification channels」(通知管道) 清單中,選取要接收快訊的管道。如果沒有管道,請按一下「管理通知管道」建立管道。
    2. 在「為快訊政策命名」欄位中,為政策取個清楚易懂的名稱。
    3. 所有其他欄位則保留預設值。
    4. 點選「下一步」。
  10. 檢查政策,確認沒問題後,按一下「建立政策」。

如要瞭解建立快訊的其他方式,請參閱 Cloud Monitoring 說明文件中的「快訊總覽」。

後續步驟