設定指標收集


本文說明如何設定 Google Kubernetes Engine (GKE),將指標傳送至 Cloud Monitoring。Cloud Monitoring 中的指標可用於填入自訂資訊主頁、產生快訊、建立服務等級目標,或由第三方監控服務使用 Cloud Monitoring API 擷取。

GKE 提供多種指標來源:

  • 系統指標:來自重要系統元件的指標,說明 CPU、記憶體和儲存空間等低階資源。
  • Google Cloud Managed Service for Prometheus: 可讓您使用 Prometheus 監控工作負載並接收快訊,無須大規模管理及操作 Prometheus。
  • 觀測指標套件:

    • 控制層指標:從特定控制層元件 (例如 API 伺服器和排程器) 匯出的指標。
    • Kube State Metrics:從 Kube State 服務匯出的一組精選指標,用於監控 Kubernetes 物件 (例如 Pod、Deployment 等) 的狀態。如要瞭解包含的指標組合,請參閱「使用 kube state metrics」。

      kube 狀態套件是代管解決方案,如需更大的彈性 (例如需要收集其他指標,或管理擷取間隔或擷取其他資源),可以停用套件 (如果已啟用),並部署自己的開放原始碼 kube 狀態指標服務執行個體。詳情請參閱 Kube 狀態指標的 Google Cloud Managed Service for Prometheus 匯出工具說明文件。

    • cAdvisor/Kubelet:精選的 cAdvisor 和 Kubelet 指標組合。如要瞭解包含的指標組合,請參閱「使用 cAdvisor/Kubelet 指標」。

      cAdvisor/Kubelet 套件是代管解決方案,如需更大的彈性 (例如,需要收集其他指標、管理擷取間隔或擷取其他資源),您可以停用套件 (如果已啟用),並部署自己的開放原始碼 cAdvisor/Kubelet 指標服務執行個體。

    • NVIDIA Data Center GPU Manager (DCGM) 指標DCGM 的指標,可全面瞭解 GPU 健康狀態、效能和使用率。

您也可以為特定工作負載設定自動應用程式監控

系統指標

建立叢集時,GKE 預設會收集系統元件發出的特定指標。

您可以選擇是否要將 GKE 叢集的指標傳送至 Cloud Monitoring。如果您選擇將指標傳送至 Cloud Monitoring,則必須傳送系統指標。

所有 GKE 系統指標都會擷取至 Cloud Monitoring,並加上 kubernetes.io 前置字串。

定價

Cloud Monitoring 不會向您收取擷取 GKE 系統指標的費用。 詳情請參閱 Cloud Monitoring 定價

設定系統指標收集功能

如要啟用系統指標收集功能,請將 SYSTEM 值傳遞至 gcloud container clusters creategcloud container clusters update 指令的 --monitoring 旗標。

如要停用系統指標收集功能,請為 --monitoring 旗標使用 NONE 值。如果停用系統指標收集功能,查看可觀測性指標時,叢集就無法提供 CPU 使用率、記憶體使用率和磁碟使用率等基本資訊。

如果是 GKE Autopilot 叢集,您無法停用系統指標的收集功能。

如要進一步瞭解 Cloud Monitoring 與 GKE 的整合,請參閱「GKE 可觀測性」。

如要使用 Terraform 設定系統指標的收集作業,請參閱 google_container_cluster 的 Terraform 登錄檔中的 monitoring_config 區塊。如要瞭解如何搭配使用 Google Cloud 與 Terraform,請參閱「Terraform with Google Cloud」。

系統指標清單

系統指標包括 Kubernetes 重要基本系統元件的指標。如需這類指標的清單,請參閱 GKE 系統指標

如果為叢集啟用 Cloud Monitoring,就無法停用系統監控 (--monitoring=SYSTEM)。

GKE Enterprise 預設啟用的指標

在下表中,勾號 () 表示在啟用 GKE Enterprise 的專案中建立及註冊新叢集時,預設會啟用哪些指標:

指標名稱 Autopilot 標準
系統
API 伺服器
排程器
控制器管理工具
永久磁碟區 (儲存空間)
Pod
部署作業
StatefulState
DaemonSet
HorizonalPodAutoscaler
cAdvisor
Kubelet
NVIDIA Data Center GPU Manager (DCGM) 指標

在啟用 GKE Enterprise 的專案中,所有已註冊的叢集都可以使用控制層指標Kube State MetricscAdvisor/Kubelet 指標的套件,不會產生額外費用。否則,這些指標會產生 Cloud Monitoring 費用。

排解系統指標問題

如果 Cloud Monitoring 未如預期顯示系統指標,請參閱「排解系統指標問題」。

套件:控制層指標

您可以設定 GKE 叢集,將 Kubernetes API 伺服器、排程器和控制器管理工具發出的特定指標傳送至 Cloud Monitoring。

詳情請參閱「收集及查看控制層指標」。

套件:Kube State Metrics

您可以設定 GKE 叢集,將 Prometheus 格式的精選 Kube 狀態指標傳送至 Cloud Monitoring。這個 Kube State Metrics 套件包含 Pod、Deployment、StatefulSet、DaemonSet、HorizontalPodAutoscaler 資源、永久磁碟區、永久磁碟區聲明和 JobSet 的指標。

詳情請參閱「收集及查看 Kube 狀態指標」。

套件:cAdvisor/Kubelet 指標

您可以將 GKE 叢集設定為以 Prometheus 格式,將精選的 cAdvisor/Kubelet 指標集傳送至 Cloud Monitoring。這組精選指標是 cAdvisor/Kubelet 指標的一小部分,預設會建構在每個 Kubernetes 部署作業中。精選的 cAdvisor/Kubelet 旨在提供最有用的指標,減少擷取量和相關費用。

詳情請參閱「收集及查看 cAdvisor/Kubelet 指標」。

套件:NVIDIA Data Center GPU Manager (DCGM) 指標

您可以將 GKE 設為將 NVIDIA Data Center GPU Manager (DCGM) 指標傳送至 Cloud Monitoring,藉此監控 GPU 使用率、效能和健康狀態。

詳情請參閱「收集及查看 NVIDIA Data Center GPU Manager (DCGM) 指標」。

停用指標套件

您可以在叢集中停用指標套件。您可能想停用特定套件來降低成本,或是使用替代機制 (例如 Google Cloud Managed Service for Prometheus 和匯出工具) 收集指標。

控制台

如要停用從叢集「詳細資料」分頁收集指標,請按照下列步驟操作:

  1. 在 Google Cloud 控制台中,前往「Kubernetes clusters」(Kubernetes 叢集) 頁面:

    前往「Kubernetes clusters」(Kubernetes 叢集)

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Kubernetes Engine」的結果

  2. 按一下叢集名稱。

  3. 在標示為「Cloud Monitoring」的「功能」列中,按一下「編輯」圖示。

  4. 在「元件」下拉式選單中,清除要停用的指標元件。

  5. 按一下 [確定]

  6. 按一下 [儲存變更]。

gcloud

  1. 開啟已安裝 Google Cloud SDK 和 Google Cloud CLI 的終端機視窗。其中一種做法就是使用 Cloud Shell。

  2. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  3. 呼叫 gcloud container clusters update 指令,並將更新後的值集傳遞至 --monitoring 旗標。提供給 --monitoring 旗標的值集會覆寫先前的所有設定。

    舉例來說,如要關閉所有指標的收集作業,但系統指標除外,請執行下列指令:

    gcloud container clusters update CLUSTER_NAME \
        --location=COMPUTE_LOCATION \
        --enable-managed-prometheus \
        --monitoring=SYSTEM
    

    這個指令會停用先前設定的任何指標套裝組合。

Terraform

如要使用 Terraform 設定指標收集作業,請參閱 google_container_cluster 的 Terraform 登錄檔中的 monitoring_config 區塊。如要瞭解如何搭配使用 Google Cloud 與 Terraform,請參閱「Terraform with Google Cloud」。

瞭解 Monitoring 帳單

您可以使用 Cloud Monitoring 找出寫入最多樣本的控制層或 Kube 狀態指標。這些指標對您的費用影響最大。找出最昂貴的指標後,即可修改擷取設定,適當篩選這些指標。

Cloud Monitoring 的「指標管理」頁面提供相關資訊,可協助您控管可計費指標的支出金額,同時不影響可觀測性。「指標管理」頁面會回報下列資訊:

  • 以位元組和樣本為準的計費方式,在指標網域和個別指標的擷取量。
  • 指標的標籤和基數相關資料。
  • 每個指標的讀取次數。
  • 在警告政策和自訂資訊主頁中使用指標。
  • 指標寫入錯誤率。

您也可以使用「指標管理」頁面排除不必要的指標,藉此省下擷取這些指標的費用。

如要查看「指標管理」頁面,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的 「指標管理」頁面:

    前往「指標管理」

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果

  2. 在工具列中選取時間範圍。根據預設,「指標管理」頁面會顯示前一天收集到的指標資訊。

如要進一步瞭解「指標管理」頁面,請參閱「查看及管理指標用量」。

如要找出哪個控制平面或 Kube 狀態指標的擷取樣本數量最多,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的 「指標管理」頁面:

    前往「指標管理」

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「Monitoring」的結果

  2. 在「已擷取的計費樣本數」評量表中,按一下「查看圖表」

  3. 找出「命名空間磁碟區擷取」圖表,然後按一下「更多圖表選項」圖示

  4. 在「指標」欄位中,確認已選取下列資源和指標:
    Metric Ingestion AttributionSamples written by attribution id

  5. 在「篩選器」頁面中,執行下列操作:

    1. 在「Label」(標籤) 欄位中,確認值為 attribution_dimension

    2. 在「比較」欄位中,確認值為 = (equals)

    3. 在「Value」(值) 欄位中,選取「cluster」。

  6. 清除「依據分組」設定。

  7. (選用) 篩選出特定指標。舉例來說,控制平面 API 伺服器指標的指標名稱都包含「apiserver」,而 Kube 狀態 Pod 指標的指標名稱都包含「kube_pod」,因此您可以篩選包含這些字串的指標:

    • 按一下「新增篩選條件」

    • 在「Label」(標籤) 欄位中,選取「metric_type」。

    • 在「Comparison」(比較) 欄位中,選取「=~ (equals regex)」。

    • 在「Value」(值) 欄位中,輸入 .*apiserver.*.*kube_pod.*

  8. 您可以選擇依據 GKE 區域或專案,將擷取的樣本數分組:

    • 按一下「依群組分類」

    • 確認已選取「metric_type」metric_type

    • 如要依 GKE 區域分組,請選取「位置」

    • 如要依專案分組,請選取「project_id」project_id

    • 按一下 [確定]

  9. 您也可以依 GKE 叢集名稱,將擷取的樣本數分組:

    • 按一下「依群組分類」

    • 如要依 GKE 叢集名稱分組,請務必選取 attribution_dimensionattribution_id

    • 按一下 [確定]

  10. 如要查看各項指標的擷取量,請在標示為「圖表」、「表格」和「兩者」的切換按鈕中,選取「兩者」。表格的「值」欄會顯示每個指標的擷取量。

    按兩下「值」欄標題,即可依遞減的擷取量排序指標。

這些步驟會顯示將樣本擷取到 Cloud Monitoring 的最高比率指標。由於可觀測性套件中的指標是依據擷取的樣本數計費,因此請留意樣本擷取率最高的指標。

其他指標

除了本文所述的系統指標和指標套件,GKE 叢集也提供 Istio 指標。如要查看定價資訊,請參閱 Cloud Monitoring 定價

可用的指標

下表列出 createupdate 指令的 --monitoring 標記支援的值。

來源 --monitoring 收集到的指標
NONE 未將指標傳送至 Cloud Monitoring;叢集未安裝指標收集代理程式。Autopilot 叢集不支援這個值。
系統 SYSTEM Kubernetes 必備系統元件的指標。 如需指標的完整清單,請參閱 Kubernetes 指標
API 伺服器 API_SERVER kube-apiserver 的指標。 如需指標的完整清單,請參閱「 API 伺服器指標」。
排程器 SCHEDULER kube-scheduler 的指標。 如需完整指標清單,請參閱「 排程器指標」。
Controller Manager CONTROLLER_MANAGER kube-controller-manager 的指標。 如需完整指標清單,請參閱「 Controller Manager 指標」一文。
永久磁碟區 (儲存空間) STORAGE kube-state-metrics 的儲存空間指標。 包括永久磁碟區和永久磁碟區要求的指標。 如需指標的完整清單,請參閱「 儲存空間指標」。
Pod POD kube-state-metrics 的 Pod 指標。 如需指標完整清單,請參閱「 Pod 指標」。
部署作業 DEPLOYMENT kube-state-metrics 的部署指標。 如需指標的完整清單,請參閱「 部署指標」。
StatefulSet STATEFULSET 來自 kube-state-metrics 的 StatefulSet 指標。 如需指標的完整清單,請參閱「 StatefulSet 指標」。
DaemonSet DAEMONSET 來自 kube-state-metrics 的 DaemonSet 指標。 如需指標的完整清單,請參閱「 DaemonSet 指標」。
HorizonalPodAutoscaler HPA kube-state-metrics 的 HPA 指標。 如要查看完整的 HorizontalPodAutoscaler 指標清單,請參閱 這篇文章
cAdvisor CADVISOR cAdvisor/Kubelet 指標組合中的 cAdvisor 指標。 如需指標的完整清單,請參閱 cAdvisor 指標
Kubelet KUBELET cAdvisor/Kubelet 的 Kubelet 指標。如需完整指標清單,請參閱 Kubelet 指標
NVIDIA Data Center GPU Manager (DCGM) 指標 DCGM NVIDIA Data Center GPU Manager (DCGM) 的指標。

您也可以使用 Google Cloud Managed Service for Prometheus,收集任何 GKE 工作負載公開的 Prometheus 樣式指標,透過 Prometheus 監控工作負載並接收快訊,無須大規模管理及操作 Prometheus。

後續步驟