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

GKE Istio环境下Prometheus通过Envoy边车抓取应用指标异常咨询

排查步骤

  • 首先验证注解配置位置是否正确:你当前将注解写在了Deployment的metadata层级,而Prometheus基于Pod注解的服务发现仅识别Pod对象的注解,Deployment本身的注解不会自动同步到Pod。执行kubectl describe pod -n prom-test <你的应用Pod名>,检查Pod的Annotations字段是否存在prometheus.io/scrape: "true"等相关配置,若不存在则需要将注解迁移到Deployment的spec.template.metadata.annotations下。
  • 本地验证业务指标暴露是否正常:执行kubectl exec -n prom-test <你的应用Pod名> -c <业务容器名> -- curl http://localhost:8080/metrics,确认输出包含你预期的业务指标,排除业务代码本身未正确注册、暴露指标的问题。
  • 验证Prometheus抓取到的实际内容:打开Prometheus的Targets页面,找到对应应用的抓取目标,直接点击Endpoint链接查看返回内容:
    • 若返回的是Envoy代理的指标而非业务指标:说明Istio边车拦截了抓取请求,可检查是否开启了全局STRICT模式mTLS,Prometheus若未注入Istio边车则无法直接访问业务容器端口,可给Prometheus注入边车,或调整抓取配置使用Istio提供的业务指标抓取规则,也可通过ServiceMonitor指定抓取业务端口。
    • 若返回内容为空:检查业务应用的/metrics接口是否做了IP访问限制,是否禁止集群内部Pod网段的请求访问。
  • 检查Prometheus抓取样本数:在Prometheus查询页面执行scrape_samples_scraped{job="<你的应用抓取任务名>"},若返回值为0说明抓取请求未拿到任何有效样本,若返回值大于0但找不到业务指标,检查Prometheus对应抓取任务的relabel配置,是否存在规则将业务指标过滤丢弃。
  • 检查Istio流量规则:确认prom-test命名空间下是否存在AuthorizationPolicy等规则,禁止了来自istio-system命名空间的Prometheus请求访问8080端口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:09:03