一、前提条件
在开始配置前,请确保满足以下条件:
·用户 clustermonitor 组件版本大于等于 1.4.1。
·已开通 Prometheus 监控服务并关联实例。操作详情请参见 腾讯云 Prometheus 一键关联监控容器服务。
·如使用自建 Prometheus,请参见 用户自建 Prometheus 采集控制面监控。
二、采集方式
cluster-autoscaler 指标采集支持以下两种方式,你可根据所使用的 Prometheus 部署形态选择对应方案:
三、通过 ServiceMonitor 进行采集
适用场景:该方式适用于集群已经安装了 ServiceMonitor CRD 的场景。
apiVersion: monitoring.coreos.com/v1kind: ServiceMonitormetadata: name: cluster-autoscaler-exporter namespace: kube-systemspec: endpoints: – interval: 15s params: component: – cluster-autoscaler path: /master/metrics port: http-metrics relabelings: – action: replace replacement: cluster-autoscaler targetLabel: job namespaceSelector: {} selector: matchLabels: label_qcloud_app: cluster-monitor label_qcloud_service: master-metrics-service
四、通过 scrape_configs 配置采集
scrape_configs:- job_name: cluster-autoscaler honor_labels: true honor_timestamps: true params: component: – cluster-autoscaler scrape_interval: 30s scrape_timeout: 10s metrics_path: /master/metrics scheme: http follow_redirects: true enable_http2: true relabel_configs: – source_labels: [job] separator: ; regex: (.*) target_label: __tmp_prometheus_job_name replacement: $1 action: replace – source_labels: [__meta_kubernetes_service_label_app_kubernetes_io_managed_by, __meta_kubernetes_service_labelpresent_app_kubernetes_io_managed_by] separator: ; regex: (Helm);true replacement: $1 action: keep – source_labels: [__meta_kubernetes_service_label_label_qcloud_app, __meta_kubernetes_service_labelpresent_label_qcloud_app] separator: ; regex: (cluster-monitor);true replacement: $1 action: keep – source_labels: [__meta_kubernetes_service_label_label_qcloud_service, __meta_kubernetes_service_labelpresent_label_qcloud_service] separator: ; regex: (master-metrics-service);true replacement: $1 action: keep – source_labels: [__meta_kubernetes_endpoint_port_name] separator: ; regex: http-metrics replacement: $1 action: keep – source_labels: [__meta_kubernetes_endpoint_address_target_kind, __meta_kubernetes_endpoint_address_target_name] separator: ; regex: Node;(.*) target_label: node replacement: ${1} action: replace – source_labels: [__meta_kubernetes_endpoint_address_target_kind, __meta_kubernetes_endpoint_address_target_name] separator: ; regex: Pod;(.*) target_label: pod replacement: ${1} action: replace – source_labels: [__meta_kubernetes_namespace] separator: ; regex: (.*) target_label: namespace replacement: $1 action: replace – source_labels: [__meta_kubernetes_service_name] separator: ; regex: (.*) target_label: service replacement: $1 action: replace – separator: ; regex: (.*) target_label: endpoint replacement: http-metrics action: replace metric_relabel_configs: – source_labels: [pod] separator: ; regex: (.*) target_label: instance replacement: $1 action: replace kubernetes_sd_configs: – role: endpoints follow_redirects: true enable_http2: true namespaces: own_namespace: false names: – 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 标签。