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 安装清单。
打开 OperatorConfig 资源以进行修改:
kubectl -n gmp-public edit operatorconfig config
将以下粗体显示的
collection
部分添加到资源:apiVersion: monitoring.googleapis.com/v1 kind: OperatorConfig metadata: namespace: gmp-public name: config collection: kubeletScraping: interval: 30s
保存该文件并关闭编辑器。
在很短的时间后,Kubelet 指标端点将被抓取,之后您便可在适用于 Prometheus 的代管式服务中查询相关指标。
Kubelet 抓取附带了一些默认过滤条件,您可以在 OperatorConfig 资源的 collection
部分中添加其他过滤条件,如下所示。filter.matchOneOf
配置部分与 Prometheus 联合的 match[]
参数具有相同的语义。
以下示例会过滤掉以 container_foo
或 container_bar
开头的指标:
collection: filter: matchOneOf: - '{__name__!~"container_foo.*|container_bar.*"}'
您还可以使用此 OperatorConfig 收集过滤条件进行调试。例如,您可能希望暂时停用集群中特定指标的收集,而不修改任何 PodMonitoring 资源。
有关高级 cAdvisor 设置的提示
如果您自行部署 cAdvisor 或使用 cAdvisor 为 Kubelet 提供高级配置,请注意可以使用高级 cAdvisor 设置附加其他标签。
尤其要避免将 Kubernetes 容器标签或环境变量附加到指标,如果您这样做,请使用许可名单模式(例如,使用 PodMonitoring 的 metricRelabeling
部分)严格控制这些标签。
控制添加到指标的标签数有助于避免超出标签数的限制。