- 文档首页
容器服务
容器服务 VKE
用户指南
可观测性
基础观测
集群观测
使用自建 Prometheus 采集控制面组件指标
集群观测
使用自建 Prometheus 采集控制面组件指标
使用自建 Prometheus 采集控制面组件指标
容器服务集群对外透出了控制面组件的监控指标,允许您使用自建 Prometheus 采集并搭建集群控制面监控大盘,实现与自建监控系统的集成。本文介绍如何开启集群的控制面组件指标采集。
- 集群 Kubernetes 版本要求如下。如集群版本过低,请先升级版本。详情请参见 升级集群。
- 当前仅支持采集集群控制面中 kube-apiserver、etcd、kube-scheduler、kube-controller-manager 和 cloud-controller-manager 托管组件的指标,暂不支持采集其他托管组件的指标。相关组件指标,请参见 容器服务指标。
- 自建 Prometheus 支持部署在待监控的集群内,也可以部署在集群外。
- 当自建 Prometheus 部署在待监控集群外部时,请保证其能够访问容器服务集群的 API Server,并且拥有/metrics的读权限。
- 在左侧导航栏单击 集群,单击目标集群名称,进入集群管理控制台。
- 在左侧导航栏中,选择 运维配置,并在 自定义指标采集 配置中,开启 管控面组件指标采集。
-
使用自建 Prometheus 采集集群控制面组件指标前,需要在 Prometheus 的配置文件prometheus.yaml中,配置控制面组件的指标采集 Job。示例代码如下:
monitor: 'custom-prometheus-monitor'
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
- job_name: api-server-demo
- job_name: scheduler-demo
如果您的自建 Prometheus 部署在待监控集群内部,您可以参考如下采集规则代码示例,完成控制面组件的数据采集。
APIServer
ETCD
Kube-Scheduler
Kube-Controller-Manager
Cloud-Controller-Manager
采集规则代码示例,如下所示:
- job_name: api-server-demo
regex: default;kubernetes;https
- __meta_kubernetes_namespace
- __meta_kubernetes_service_name
- __meta_kubernetes_endpoint_port_name
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
insecure_skip_verify: false
采集规则代码示例,如下所示:
regex: default;kubernetes;https
- __meta_kubernetes_namespace
- __meta_kubernetes_service_name
- __meta_kubernetes_endpoint_port_name
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
insecure_skip_verify: false
采集规则代码示例,如下所示:
- job_name: kube-scheduler-demo
regex: default;kubernetes;https
- __meta_kubernetes_namespace
- __meta_kubernetes_service_name
- __meta_kubernetes_endpoint_port_name
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
insecure_skip_verify: false
采集规则代码示例,如下所示:
regex: default;kubernetes;https
- __meta_kubernetes_namespace
- __meta_kubernetes_service_name
- __meta_kubernetes_endpoint_port_name
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
insecure_skip_verify: false
采集规则代码示例,如下所示:
regex: default;kubernetes;https
- __meta_kubernetes_namespace
- __meta_kubernetes_service_name
- __meta_kubernetes_endpoint_port_name
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
insecure_skip_verify: false
如果自建 Prometheus 部署在待监控集群外部,则无法像在集群内那样自动挂载 ServiceAccount 凭证和访问 Kubernetes 内部服务。配置方法如下:
- 手动指定容器服务集群的 APIServer 地址,允许外部 Prometheus 能够正确连接集群。
- 手动提供认证凭证(CA 证书 + Bearer Token),通过 Kubernetes API 的权限校验。
- 基于 Node 进行服务发现,自动获取集群所有 Node 节点的地址,后续采集相关监控指标。
配置示例代码如下:
- job_name: 'external-cluster-monitor-job'
ca_file: /etc/prometheus/kubernetes-ca.crt
bearer_token: '<ServiceAccount bearer_token>'
- api_server: 'https://<APIServer URL>'
ca_file: /etc/prometheus/kubernetes-ca.crt
bearer_token: '<ServiceAccount bearer_token>'
- 登录自建 Prometheus 控制台,切换到 Graph 页面。
- 预期结果如下,以 APIServer 观测任务为例,up{instance="xxx.xxx.xxx.xxx:6443", job="api-server-demo"}表示对应采集任务,其值为1时,表示该任务工作正常。
-
apiserver_request_total{job="api-server-demo"}
- 预期结果如下,如果能正常查询到指标和数据,表明自建 Prometheus 可以正常采集到集群核心组件的监控指标。
-
最近更新时间:2026.04.30 15:29:20