K8s中OpenTelemetry指标无法在Prometheus展示且远程写Thanos报404
Kubernetes 环境 OTel Collector + Thanos 问题排查方案
1. OTel Collector 向 Thanos 远程写入返回404错误
根因判断
这个错误是端点配置错误导致的,和网络连通性、Collector配置合法性无关:Thanos Query Frontend 组件默认仅提供查询路由、缓存、分片能力,默认不开启/api/v1/write写入接口,直接往这个地址写数据必然返回404,属于不可重试的永久性错误。
修复步骤
- 先做端点有效性验证:在集群同命名空间起一个临时curl Pod,执行以下命令确认接口状态:
返回404即可确认是组件能力/端点配置错误。curl -v http://thanos-query-frontend.thanos:9090/api/v1/write - 替换为正确的写入端点:Thanos 体系中负责接收Prometheus协议远程写入的组件是 Thanos Receive,将OTel Collector
prometheusremotewriteexporter的端点替换为Thanos Receive的Service地址,默认监听端口为10908,配置参考:exporters: prometheusremotewrite: endpoint: "http://thanos-receive.thanos:10908/api/v1/write" - 若必须走Query Frontend代理写入,需要修改Query Frontend的启动参数:添加
--query-frontend.enable-endpoints=write开启写入接口,同时配置--query-frontend.downstream-url=http://thanos-receive.thanos:10908将写入请求转发到后端Thanos Receive,滚动重启Query Frontend Pod后即可正常写入。
2. Prometheus 抓取OTel Collector端点状态为Up但无指标数据
这个问题和远程写入故障独立,按以下顺序排查:
- 校验Collector管道配置:检查Collector配置文件中
service.pipelines.metrics链路是否完整,是否正确关联了prometheus receiver、处理器、exporter;确认没有配置属性过滤、指标丢弃规则把全量指标过滤掉。 - 校验采集配置:确认prometheus receiver的
scrape_configs配置了正确的抓取目标,很多场景下仅开启了Collector自身的metrics端口暴露,没有配置receiver抓取集群内业务/组件指标,导致Prometheus能连通Collector端口(状态显示Up)但没有实际业务指标返回。 - 校验抓取匹配规则:确认Prometheus的抓取配置和Collector的metrics暴露配置一致:OTel Collector默认自身metrics端口为8888、路径为
/metrics,如果自定义了prometheus exporter的监听端口、路径,Prometheus侧的scrape配置需要同步修改,否则会出现抓到其他路径200响应但无指标内容的情况。 - 本地校验指标输出:进入Collector容器执行
curl localhost:8888/metrics,查看返回内容中是否存在目标指标,如果本地访问都没有指标输出,问题出在Collector采集、处理环节,和Prometheus侧配置无关。
内容的提问来源于stack exchange,提问作者Container-Man
相关产品推荐
相关产品推荐

