配置指标收集


本文档介绍了如何配置 Google Kubernetes Engine (GKE) 以将指标发送到 Cloud Monitoring。Cloud Monitoring 中的指标可以填充自定义信息中心、生成提醒、创建服务等级目标,也可以由第三方监控服务使用 Cloud Monitoring API 提取。

GKE 提供多个指标来源:

  • 系统指标:来自基本系统组件的指标,用于描述 CPU、内存和存储空间等低级别资源。
  • 借助 Google Cloud Managed Service per Prometheus,您可以使用 Prometheus 大规模监控工作负载并发出提醒,而无需手动管理和操作 Prometheus。
  • 可观测性指标软件包:

    • 控制平面指标:从某些控制平面组件(如 API 服务器和调度器)导出的指标。
    • Kube 状态指标:从 kube 状态服务导出的一组精选指标,用于监控 Pod、Deployment 等 Kubernetes 对象的状态。如需了解包含的一组指标,请参阅使用 Kube State Metrics

      Kube State 软件包是一种托管式解决方案。如果您需要更大的灵活性(例如,需要收集其他指标,或需要管理抓取间隔时间或抓取其他资源),可以停用该软件包(如果已启用),并部署您自己的开源 kube 状态指标服务实例。如需了解详情,请参阅 Kube 状态指标的 Google Cloud Managed Service for Prometheus 导出器文档。

    • cAdvisor/Kubelet:一组经过精选的 cAdvisor 和 Kubelet 指标。如需了解包含的一组指标,请参阅使用 cAdvisor/Kubelet 指标

      cAdvisor/Kubelet 软件包是一种托管式解决方案。如果您需要更大的灵活性(例如,需要收集其他指标、管理抓取间隔或抓取其他资源),可以停用该软件包(如果已启用),并部署您自己的开源 cAdvisor/Kubelet 指标服务实例。

    • NVIDIA 数据中心 GPU 管理器 (DCGM) 指标DCGM 中的指标,可全面了解 GPU 运行状况、性能和利用率。

您还可以为特定工作负载配置自动应用监控

系统指标

创建集群后,GKE 默认会收集系统组件发出的某些指标。

您可以选择是否将指标从 GKE 集群发送到 Cloud Monitoring。如果您选择将指标发送到 Cloud Monitoring,则必须发送系统指标。

所有 GKE 系统指标都会注入到前缀为 kubernetes.io 的 Cloud Monitoring。

价格

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 与 Google Cloud搭配使用

系统指标列表

系统指标包括对于 Kubernetes 非常重要的基本系统组件的指标。如需查看这些指标的列表,请参阅 GKE 系统指标

如果您为集群启用 Cloud Monitoring,则无法停用系统监控 (--monitoring=SYSTEM)。

GKE Enterprise 中默认启用的指标

在下表中,对勾标记 () 表示在启用了 GKE Enterprise 的项目中创建和注册新集群时,系统会默认启用哪些指标:

指标名称 Autopilot 标准
系统
API 服务器
调度器
控制器管理器
永久性卷(存储空间)
Pod
Deployment
StatefulState
DaemonSet
HorizonalPodAutoscaler
cAdvisor
Kubelet
NVIDIA 数据中心 GPU 管理器 (DCGM) 指标

如果项目启用了 GKE Enterprise,则项目中所有已注册的集群都可以使用以下指标包:控制平面指标kube 状态指标cAdvisor/kubelet 指标,且无需任何额外的费用;否则,这些指标会产生 Cloud Monitoring 费用。

排查系统指标问题

如果 Cloud Monitoring 中的系统指标未按预期提供,请参阅排查系统指标问题

软件包:控制平面指标

您可以配置 GKE 集群,以将 Kubernetes API 服务器、调度器和控制器管理器发出的某些指标发送到 Cloud Monitoring。

如需了解详情,请参阅收集和查看控制平面指标

软件包:Kube 状态指标

您可以配置 GKE 集群,以将一组精选的 Prometheus kube 状态指标发送到 Cloud Monitoring。此 kube 状态指标集合包括 Pod、Deployment、StatefulSet、DaemonSet、HorizontalPodAutoscaler 资源、永久性卷和永久性卷声明的指标。

如需了解详情,请参阅收集和查看 Kube 状态指标

软件包:cAdvisor/Kubelet 指标

您可以配置 GKE 集群,以将一组精选的 Prometheus cAdvisor/Kubelet 指标发送到 Cloud Monitoring。这组精选的指标是默认情况下在每个 Kubernetes 部署中构建的大量 cAdvisor/Kubelet 指标的子集。精选的 cAdvisor/Kubelet 旨在提供最有用的指标,从而减少注入量和关联费用。

如需了解详情,请参阅收集和查看 cAdvisor/Kubelet 指标

软件包:NVIDIA 数据中心 GPU 管理器 (DCGM) 指标

您可以通过将 GKE 配置为将 NVIDIA 数据中心 GPU 管理器 (DCGM) 指标发送到 Cloud Monitoring,来监控 GPU 利用率、性能和健康状况。

如需了解详情,请参阅收集和查看 NVIDIA 数据中心 GPU 管理器 (DCGM) 指标

停用指标数据包

您可以禁止在集群中使用指标软件包。如果您想降低费用,或者您使用的是其他机制来收集指标(例如 Google Cloud Managed Service for Prometheus 和导出器),则可能需要停用某些软件包。

控制台

如需从集群的详细信息标签页停用指标收集,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往 Kubernetes 集群页面:

    转到 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 与 Google Cloud搭配使用

了解 Monitoring 账单

您可以使用 Cloud Monitoring 来标识写入最多样本的控制平面或 kube 状态指标。这些指标对费用的影响最大。在确定费用最高的指标后,您可以修改抓取配置以适当过滤这些指标。

Cloud Monitoring 指标管理页面提供的信息可帮助您控制在收费指标上支出的金额,而不会影响可观测性。指标管理页面报告以下信息:

  • 针对指标网域中基于字节和基于样本的结算以及各个指标的注入量。
  • 有关标签和指标基数的数据。
  • 每个指标的读取次数。
  • 指标在提醒政策和自定义信息中心内的使用。
  • 指标写入错误率。

您还可以使用指标管理排除不需要的指标,从而降低提取这些指标的费用。

如需查看指标管理页面,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往  指标管理页面:

    进入指标管理

    如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

  2. 在工具栏中,选择时间窗口。默认情况下,指标管理页面会显示有关前一天收集的指标的信息。

如需详细了解指标管理页面,请参阅查看和管理指标使用情况

如需确定哪些控制平面或 kube 状态指标注入的样本最多,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往  指标管理页面:

    进入指标管理

    如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

  2. 注入的计费样本数统计信息摘要图表上,点击查看图表

  3. 找到命名空间卷注入图表,然后点击  更多图表选项

  4. 指标字段中,验证是否已选择以下资源和指标:
    Metric Ingestion AttributionSamples written by attribution id

  5. 过滤条件页面中,执行以下操作:

    1. Label 字段中,验证值为 attribution_dimension

    2. Comparison 字段中,验证值为 = (equals)

    3. 字段中,选择 cluster

  6. 清除分组依据设置。

  7. (可选)仅过滤某些指标。例如,控制平面 API 服务器指标名称中都包含“apiserver”,并且 kube 状态 Pod 指标名称中都包含“kube_pod”,因此您可以过滤包含这些字符串的指标:

    • 点击添加过滤条件

    • 标签字段中,选择 metric_type

    • 比较字段中,选择 =~ (equals regex)

    • 字段中,输入 .*apiserver.*.*kube_pod.*

  8. (可选)对按 GKE 区域或项目注入的样本数量进行分组:

    • 点击分组依据

    • 确保已选择 metric_type

    • 要按 GKE 区域分组,请选择位置

    • 要按项目分组,请选择 project_id

    • 点击 OK(确定)。

  9. (可选)对按 GKE 集群名称注入的样本数量进行分组:

    • 点击分组依据

    • 要按 GKE 集群名称分组,请确保同时选择 attribution_dimensionattribution_id

    • 点击 OK(确定)。

  10. 如需查看每个指标的注入量,请在标有图表/表/两者的切换开关中,选择两者。该表的列中显示了每个指标的注入量。

    点击列标题两次,以按注入量降序对指标排序。

这些步骤显示了注入到 Cloud Monitoring 中的样本比率最高的指标。由于可观测性软件包中的指标按注入的样本数量计费,因此请注意注入样本比率最高的指标。

其他指标

除了本文档中介绍的系统指标和指标软件包之外,Istio 指标也适用于 GKE 集群。如需了解价格,请参阅 Cloud Monitoring 价格

可用指标

下表列出了 createupdate 命令的 --monitoring 标志支持的值。

来源 --monitoring 收集的指标
NONE 未向 Cloud Monitoring 发送任何指标;集群中未安装任何指标收集代理。Autopilot 集群不支持此值。
系统 SYSTEM 来自 Kubernetes 需要的基本系统组件的指标。如需查看指标的完整列表,请参阅 Kubernetes 指标
API 服务器 API_SERVER 来自 kube-apiserver 的指标。 如需查看指标的完整列表,请参阅 API 服务器指标
调度器 SCHEDULER 来自 kube-scheduler 的指标。 如需查看指标的完整列表,请参阅 调度器指标
控制器管理器 CONTROLLER_MANAGER 来自 kube-controller-manager 的指标。 如需查看指标的完整列表,请参阅控制器管理器指标
永久性卷(存储空间) STORAGE 来自 kube-state-metrics 的存储指标。 包括永久性卷和永久性卷声明的指标。如需查看指标的完整列表,请参阅存储空间指标
Pod POD 来自 kube-state-metrics 的 pod 指标。如需查看指标的完整列表,请参阅 Pod 指标
Deployment DEPLOYMENT 来自 kube-state-metrics 的部署指标。如需查看指标的完整列表,请参阅部署指标
StatefulSet STATEFULSET 来自 kube-state-metrics 的 StatefulSet 指标。如需查看指标的完整列表,请参阅 StatefulSet 指标
DaemonSet DAEMONSET 来自 kube-state-metrics 的 DaemonSet 指标。如需查看指标的完整列表,请参阅 DaemonSet 指标
HorizonalPodAutoscaler HPA 来自 kube-state-metrics 的 HPA 指标。 查看 HorizonalPodAutoscaler 指标的完整列表。
cAdvisor CADVISOR cAdvisor/Kubelet 指标包中提供的 cAdvisor 指标。如需查看指标的完整列表,请参阅 cAdvisor 指标
Kubelet KUBELET cAdvisor/Kubelet 指标包中提供的 Kubelet 指标。如需查看指标的完整列表,请参阅 Kubelet 指标
NVIDIA 数据中心 GPU 管理器 (DCGM) 指标 DCGM NVIDIA 数据中心 GPU 管理器 (DCGM) 中的指标。

此外,您还可以使用 Google Cloud Managed Service for Prometheus 来收集任何 GKE 工作负载公开的 Prometheus 样式指标,这样您就可以使用 Prometheus 针对工作负载进行监控和提醒,而不必大规模地手动管理和操作 Prometheus。

后续步骤