You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Prometheus部分指标无数据原因咨询:K8s集群部署场景

排查kube-prometheus-stack部署后部分指标无数据的原因

1. Etcd相关指标:etcd_server_apply_duration_seconds 不存在是正常行为

你看到的etcd_server_apply_duration_seconds_count和etcd_server_apply_duration_seconds_sum是Histogram类型指标的标准组成部分。Prometheus的Histogram指标不会暴露不带后缀的基础指标名(即etcd_server_apply_duration_seconds本身),只会暴露三类衍生指标:

  • xxx_bucket:分桶计数
  • xxx_count:总样本数
  • xxx_sum:样本值总和
    因此该指标本身就不存在,并非采集故障。

2. Container CPU拆分指标:container_cpu_system_seconds_total/container_cpu_user_seconds_total 无数据的排查方向

2.1 Kubelet/Cadvisor的指标暴露限制

这些指标由kubelet内置的cadvisor组件暴露,若kubelet启动参数包含以下配置,会导致这类指标被禁用:

  • --disable-metrics=cpu_system,cpu_user:直接关闭system和user维度的CPU指标
  • --cadvisor-port=0:完全禁用cadvisor的指标暴露

执行以下命令检查kubelet启动参数:

kubectl get pods -n kube-system -l component=kubelet -o jsonpath='{.items[*].spec.containers[*].command}'

2.2 Prometheus采集规则的过滤逻辑

kube-prometheus-stack默认的kubelet采集配置中,可能存在metric_relabel_configs过滤了这些指标。通过Prometheus UI的Status > Config查看针对kubelet的采集任务,确认是否有类似规则:

metric_relabel_configs:
- action: drop
  regex: container_cpu_(system|user)_seconds_total
  source_labels: [__name__]

若使用Helm部署,可检查values.yaml中prometheus.prometheusSpec.additionalScrapeConfigs或kubelet相关采集配置是否包含此类过滤。

2.3 Kubernetes/Cadvisor版本差异

部分旧版本Kubernetes(1.20之前)或cadvisor中,container_cpu_system_seconds_total和container_cpu_user_seconds_total可能未被默认暴露。直接访问kubelet metrics端点验证:

# 替换为集群内任意节点IP,kubelet metrics默认端口为10255
curl http://<node-ip>:10255/metrics | grep container_cpu_

如果返回结果中无这两个指标,说明是组件版本或原生配置问题,而非Prometheus采集故障。

3. 自动补全无指标的原因

Prometheus和Grafana的查询自动补全,仅基于已成功采集到的指标元数据生成候选列表。若指标从未被采集到(无论是组件未暴露、被过滤,还是本身不存在),自动补全中就不会出现该指标名,这是正常行为。

内容的提问来源于stack exchange,提问作者Joseph Gagnon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 00:35:25