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

使用Prometheus(vmagent)监控K8s集群:如何获取缺失的namespace_workload_pod等指标?

解决Kubernetes监控中namespace_workload_pod与workload_type指标缺失问题

这类指标由谁提供

namespace_workload_pod和workload_type相关指标是由kube-state-metrics提供的。kube-state-metrics是专门用于暴露Kubernetes集群各类对象(如Pod、Deployment、StatefulSet等)状态指标的组件,它从Kubernetes API拉取对象元数据与状态,转换为Prometheus兼容格式的指标供采集。

如何获取这类指标

1. 部署kube-state-metrics到集群

有两种常见部署方式:

  • 官方资源清单部署:
    获取对应版本的kube-state-metrics资源清单文件(如kube-state-metrics.yaml),执行以下命令完成部署:
    kubectl apply -f kube-state-metrics.yaml
  • Helm部署:
    通过Helm仓库快速安装:
    helm repo add kube-state-metrics https://kubernetes.github.io/kube-state-metrics
    helm install kube-state-metrics kube-state-metrics/kube-state-metrics
    
    部署后需确认kube-state-metrics的Pod正常运行,对应服务已创建。

2. 配置vmagent采集指标

在vmagent的采集配置中新增针对kube-state-metrics的scrape任务:

scrape_configs:
  - job_name: 'kube-state-metrics'
    # 基于Kubernetes服务发现自动识别目标
    kubernetes_sd_configs:
      - role: endpoints
        namespaces:
          names:
            - kube-system # 替换为kube-state-metrics实际部署的命名空间
    relabel_configs:
      - source_labels: [__meta_kubernetes_service_name]
        regex: 'kube-state-metrics'
        action: keep
    # 若服务地址固定,也可使用静态目标
    # static_configs:
    #   - targets: ['kube-state-metrics.kube-system.svc:8080']

修改配置后重启vmagent,使配置生效。

3. 验证指标采集

  • 访问vmagent的Targets页面(默认端口8429,即http://<vmagent地址>:8429/targets),确认kube-state-metrics采集任务状态为UP。
  • 通过PromQL查询验证:原始指标如kube_pod_info包含namespace和workload标签,可基于此构造聚合查询得到类似namespace_workload_pod的统计结果,例如:
    count(kube_pod_info) by (namespace, workload)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:33:11