本文介绍如何基于 Prometheus,采集 cluster-autoscaler 组件指标配置。关于 cluster-autoscaler 的具体指标含义,请参见 cluster-autoscaler 指标说明。
前提条件
在开始配置前,请确保满足以下条件:
用户 clustermonitor 组件版本大于等于 1.4.1。
已开通 Prometheus 监控服务并关联实例。操作详情请参见 腾讯云 Prometheus 一键关联监控容器服务。
如使用自建 Prometheus,请参见 用户自建 Prometheus 采集控制面监控。
采集方式
cluster-autoscaler 指标采集支持以下两种方式,您可根据所使用的 Prometheus 部署形态选择对应方案:
通过 ServiceMonitor 进行采集
适用场景:该方式适用于集群已经安装了 ServiceMonitor CRD 的场景。
apiVersion: monitoring.coreos.com/v1kind: ServiceMonitormetadata:name: cluster-autoscaler-exporternamespace: kube-systemspec:endpoints:- interval: 15sparams:component:- cluster-autoscalerpath: /master/metricsport: http-metricsrelabelings:- action: replacereplacement: cluster-autoscalertargetLabel: jobnamespaceSelector: {}selector:matchLabels:label_qcloud_app: cluster-monitorlabel_qcloud_service: master-metrics-service
通过 scrape_configs 配置采集
scrape_configs:- job_name: cluster-autoscalerhonor_labels: truehonor_timestamps: trueparams:component:- cluster-autoscalerscrape_interval: 30sscrape_timeout: 10smetrics_path: /master/metricsscheme: httpfollow_redirects: trueenable_http2: truerelabel_configs:- source_labels: [job]separator: ;regex: (.*)target_label: __tmp_prometheus_job_namereplacement: $1action: replace- source_labels: [__meta_kubernetes_service_label_app_kubernetes_io_managed_by,__meta_kubernetes_service_labelpresent_app_kubernetes_io_managed_by]separator: ;regex: (Helm);truereplacement: $1action: keep- source_labels: [__meta_kubernetes_service_label_label_qcloud_app, __meta_kubernetes_service_labelpresent_label_qcloud_app]separator: ;regex: (cluster-monitor);truereplacement: $1action: keep- source_labels: [__meta_kubernetes_service_label_label_qcloud_service, __meta_kubernetes_service_labelpresent_label_qcloud_service]separator: ;regex: (master-metrics-service);truereplacement: $1action: keep- source_labels: [__meta_kubernetes_endpoint_port_name]separator: ;regex: http-metricsreplacement: $1action: keep- source_labels: [__meta_kubernetes_endpoint_address_target_kind, __meta_kubernetes_endpoint_address_target_name]separator: ;regex: Node;(.*)target_label: nodereplacement: ${1}action: replace- source_labels: [__meta_kubernetes_endpoint_address_target_kind, __meta_kubernetes_endpoint_address_target_name]separator: ;regex: Pod;(.*)target_label: podreplacement: ${1}action: replace- source_labels: [__meta_kubernetes_namespace]separator: ;regex: (.*)target_label: namespacereplacement: $1action: replace- source_labels: [__meta_kubernetes_service_name]separator: ;regex: (.*)target_label: servicereplacement: $1action: replace- separator: ;regex: (.*)target_label: endpointreplacement: http-metricsaction: replacemetric_relabel_configs:- source_labels: [pod]separator: ;regex: (.*)target_label: instancereplacement: $1action: replacekubernetes_sd_configs:- role: endpointsfollow_redirects: trueenable_http2: truenamespaces:own_namespace: falsenames:- kube-system
指标验证
1. 登录自建的 Prometheus 控制台,切换到 Graph 页面。
2. 输入
up{job="cluster-autoscaler"},查看是否全部控制面组件数据显示正常。预期输出如下:

3. 输入以下指标,查看是否可以正常显示。
cluster_autoscaler_unneeded_nodes_count{job="cluster-autoscaler"}
预期输出如下:

4. 如未能采集到指标,请检查:
4.1 cluster-monitor 组件版本是否大于等于 1.4.1。
4.2 集群是否已经安装 cluster-autoscaler 组件。
4.3 ServiceMonitor 或 scrape_configs 中的 selector/relabel 规则是否匹配实际 Service 标签。