prometheus-adapter对接kube-prometheus-stack的正确Prometheus URL配置
prometheus-adapter 访问Prometheus返回404的正确配置
问题根因
报错的404不是Service地址无法连通导致的——你之前尝试配置的两个Service地址本身网络层是可以正常通的。
核心原因是kube-prometheus-stack通过Prometheus Operator部署的实例,默认会通过前置反代将所有Prometheus API请求挂载在/prometheus路径前缀下。
你之前配置的Prometheus访问地址没有携带这个路径前缀,prometheus-adapter会默认向根路径拼接查询接口,比如请求http://xxx:9090/api/v1/query,这个路径没有对应的反代路由,自然返回404。
正确配置值
结合你当前集群的Service资源清单,不需要更换访问的Service地址,只需要补充API路径前缀即可:
- 推荐使用的完整
--prometheus-url参数值:http://prometheus-kube-prometheus-prometheus.prom.svc.cluster.local:9090/prometheus - 对应的prometheus-adapter Helm values配置修改为:
prometheus: url: http://prometheus-kube-prometheus-prometheus.prom.svc.cluster.local path: /prometheus certManager: enabled: true
注意事项
- 不要使用
prometheus-operated这个Headless Service作为访问后端:这个Service是直连Prometheus StatefulSet Pod的无头服务,没有路径反代逻辑,即使连通也会返回404。 - 配置修改完成后,可以在prometheus-adapter Pod内执行连通性验证:
curl "http://prometheus-kube-prometheus-prometheus.prom.svc.cluster.local:9090/prometheus/api/v1/query?query=up"
如果返回结构正常的指标JSON,说明路径配置正确,重启prometheus-adapter Pod即可消除报错。
内容的提问来源于stack exchange,提问作者mko
相关产品推荐
相关产品推荐

