Google托管Prometheus查询无指标返回 如何排查指标抓取失效问题
Google Managed Prometheus(GMP)指标抓取无返回结果排障指南
已知自托管Prometheus对目标test服务抓取正常,可排除应用本身指标接口异常问题,按以下优先级定位根因:
1. 校验PodMonitoring配置匹配性
- 确认命名空间一致性:PodMonitoring资源只会匹配同命名空间下的Pod,请先执行
kubectl get podmonitoring test -A确认该资源所在命名空间,和app=test的工作负载所在命名空间(当前svc位于default命名空间)一致 - 校验端口字段配置:PodMonitoring的
spec.endpoints.port字段必须匹配目标Pod上的容器端口名称,而非Service端口名。执行以下命令查看工作负载Pod的容器端口配置,确认暴露指标的端口name值确实为test:
若容器端口名和配置值不一致,修改PodMonitoring的port字段为实际容器端口名即可kubectl get pod -l app=test -o jsonpath='{.items[0].spec.containers[*].ports}' - 确认指标路径访问权限:GMP采集器使用集群内置身份访问指标接口,若你的指标接口配置了鉴权、IP白名单规则,需放通kube-system下collector Pod的访问权限。可临时启动调试Pod访问目标Pod的
/test/metrics路径,确认非自托管Prometheus的请求也能正常拉取指标文本
2. 查看GMP组件运行状态与目标报错
- 检查采集组件健康状态:执行以下命令确认kube-system下的GMP采集器DaemonSet运行正常,无CrashLoopBackOff、Pending异常:
若存在异常Pod,通过kubectl get pods -n kube-system -l app.kubernetes.io/name=prometheus-engine-collectorkubectl logs -n kube-system <异常Pod名>查看具体报错 - 查看采集目标的具体错误:通过端口转发访问采集器内置的目标状态接口,直接获取抓取失败的根因:
本地访问kubectl port-forward -n kube-system ds/prometheus-engine-collector 19090:19090http://localhost:19090/api/v1/targets,搜索test相关的采集目标,查看lastError字段的具体内容:常见报错包括连接超时、403权限拒绝、404路径不存在、标签匹配无目标等
3. 校验资源调和状态与全局规则
- 查看PodMonitoring事件:执行以下命令查看资源调和事件,GMP Operator会在配置不合法时直接抛出明确错误,正常状态下应显示调和成功相关事件:
kubectl describe podmonitoring test - 检查全局采集过滤规则:若集群配置了GMP全局采集黑白名单、命名空间排除规则,需确认default命名空间、app=test标签的工作负载未被规则过滤
4. 排查上报链路与查询逻辑问题
- 若采集目标状态显示抓取成功但查不到指标,查看collector Pod日志搜索export、publish相关报错,确认是否存在IAM权限不足、网络出网限制导致指标无法上报到云端存储
- 校验查询语句:GMP上报的指标会自动附加cluster、namespace、location等平台标签,查询时不要附加不存在的标签过滤条件,可先查询最基础的
up{job="test"}指标,确认是否存在对应时间序列
内容的提问来源于stack exchange,提问作者Zufar Muhamadeev
相关产品推荐
相关产品推荐

