cAdvisor/Kubelet

Kubelet 会公开有关其自身的指标以及有关在其节点上运行的容器的 cAdvisor 指标。

Cloud Monitoring 提供开箱即用的托管式 cAdvisor/Kubelet 指标集合,作为配置此集成的替代方案。全托管式集合选项提供了有针对性的精选指标集,默认会在新集群中设置。

本文档中介绍的集成提供了所有 cAdvisor 指标(其中许多指标您不太可能需要并且可能想要过滤掉),并且可以在 Google Kubernetes Engine 和其他 Kubernetes 环境中使用。托管式 cAdvisor/Kubelet 指标集已经过精选,仅提供最有用的指标,并且仅适用于 GKE。如需了解详情,请参阅软件包:cAdvisor/Kubelet 指标

如果您按照本文档中所述设置了 cAdvisor 指标集合,该配置会取代 GKE 管理的 cAdvisor 配置。本文档中介绍的配置会启用托管式 cAdvisor 指标的超集。

使用本文档中所述的方法(而不是使用自定义 PodMonitoring 配置)时,您可以通过修改 OperatorConfig 来配置托管式集合以自动爬取 cAdvisor 和 Kubelet 指标。如需安装清单,您可以将清单复制到本地文件,然后运行 kubectl apply -f FILE_NAME。您还可以使用 Terraform 安装清单

  1. 打开 OperatorConfig 资源以进行修改:

    kubectl -n gmp-public edit operatorconfig config
    
  2. 将以下粗体显示的 collection 部分添加到资源:

    apiVersion: monitoring.googleapis.com/v1
    kind: OperatorConfig
    metadata:
      namespace: gmp-public
      name: config
    collection:
      kubeletScraping:
        interval: 30s
    
  3. 保存该文件并关闭编辑器。

在很短的时间后,Kubelet 指标端点将被抓取,之后您便可在适用于 Prometheus 的代管式服务中查询相关指标。

Kubelet 抓取附带了一些默认过滤条件,您可以在 OperatorConfig 资源的 collection 部分中添加其他过滤条件,如下所示。filter.matchOneOf 配置部分与 Prometheus 联合的 match[] 参数具有相同的语义。

以下示例会过滤掉以 container_foocontainer_bar 开头的指标:

collection:
  filter:
    matchOneOf:
    - '{__name__!~"container_foo.*|container_bar.*"}'

您还可以使用此 OperatorConfig 收集过滤条件进行调试。例如,您可能希望暂时停用集群中特定指标的收集,而不修改任何 PodMonitoring 资源。

有关高级 cAdvisor 设置的提示

如果您自行部署 cAdvisor 或使用 cAdvisor 为 Kubelet 提供高级配置,请注意可以使用高级 cAdvisor 设置附加其他标签。

尤其要避免将 Kubernetes 容器标签或环境变量附加到指标,如果您这样做,请使用许可名单模式(例如,使用 PodMonitoring 的 metricRelabeling 部分)严格控制这些标签。

控制添加到指标的标签数有助于避免超出标签数限制。