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

Grafana Agent在Kubernetes中仅抓取一个服务副本的问题排查

问题原因及解决方案

你现在的问题核心是:用Kubernetes Service域名作为target时,K8s会自动做负载均衡,Prometheus每次请求只会打到单个Pod,自然抓不到所有副本的metrics。

解决办法(推荐用K8s服务发现)

把static_configs换成Kubernetes服务发现配置,让Prometheus自动发现所有匹配标签的Pod,而非通过Service转发。示例配置如下:

- job_name: my-service
  honor_labels: true
  metrics_path: /metrics
  scheme: http
  kubernetes_sd_configs:
  - role: pod
    namespaces:
      names:
      - default
  relabel_configs:
  # 只保留带有app=my-service标签的Pod
  - source_labels: [__meta_kubernetes_pod_label_app]
    regex: my-service
    action: keep
  # 把Pod的8080端口作为metrics端口
  - source_labels: [__meta_kubernetes_pod_container_port_number]
    regex: 8080
    action: keep
  # 给metrics添加上Pod名称标签,方便后续排查
  - source_labels: [__meta_kubernetes_pod_name]
    target_label: pod

为什么这个能解决问题?

Kubernetes服务发现会直接枚举集群中符合条件的所有Pod IP,Prometheus会挨个抓取每个Pod的metrics端点,不会被Service的负载均衡挡住。而且Pod扩容/缩容时,配置会自动同步,不用手动修改targets。

额外注意事项

  • 确保你的Pod spec里已经声明了8080端口(containerPort: 8080),否则服务发现可能识别不到端口
  • 在Grafana面板中对请求计数指标做聚合时,记得用sum by (xxx)(比如sum by (method) (request_count)),把所有Pod的计数加起来,才能得到全局统计数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 01:40:00