K8s中OpenTelemetry配置Remote Write对接Thanos报404问题
问题根因
两个独立问题共同导致了你遇到的报错:
- Thanos组件选型错误:你当前集群只部署了Thanos Query、Thanos Query Frontend两个查询链路组件,这两个组件的定位是对接下游存储做指标查询、查询路由、结果缓存,完全没有实现Prometheus远程写入的相关接口,自然不存在
/api/v1/write这个路由,请求打过去直接返回404。支持接收Prometheus Remote Write协议写入的Thanos组件是Thanos Receive,你根本没有部署这个模块。 - 对接InfluxDB时报错是因为端点路径配置错误:你默认套用了原生Prometheus的
/api/v1/write路径,但InfluxDB的Prometheus远程写入接口路径和原生Prometheus不一致,路径不匹配自然返回404。
修复方案
Thanos对接修复
- 修改Thanos Helm安装的values配置,将
receive组件的enabled参数设置为true,升级Helm release完成Thanos Receive组件的部署。 - 部署完成后确认Thanos Receive对应的Pod、Service正常运行,该组件默认HTTP服务端口为10908,对应的远程写入端点为
http://thanos-receive.<Thanos所在命名空间>:10908/api/v1/receive,注意Thanos Receive的写入路径是/api/v1/receive,不是原生Prometheus的/api/v1/write,不要写错路径。 - 将OpenTelemetry Collector中prometheusremotewrite exporter的endpoint替换为上述地址,重启Collector生效。
InfluxDB对接修复
- 先确认你使用的InfluxDB版本,使用对应版本的正确远程写入路径:
- 如果是InfluxDB 1.x版本,需要先在服务配置中开启
prometheus读写插件,写入端点格式为http://<InfluxDB服务地址>:<端口>/api/v1/prom/write?db=<目标数据库名> - 如果是InfluxDB 2.x版本,写入端点格式为
http://<InfluxDB服务地址>:8086/api/v2/write?org=<你的组织名>&bucket=<目标存储桶名>,同时需要在exporter配置中添加Authorization: Token <你的访问Token>请求头完成鉴权
- 如果是InfluxDB 1.x版本,需要先在服务配置中开启
- 配置生效前,可以先在OpenTelemetry Collector所在Pod内用curl命令请求对应端点,确认接口可正常访问、不会返回404后,再重启Collector加载配置。
通用注意点
prometheusremotewrite exporter的端点路径没有统一默认值,对接不同后端存储时,必须对应后端文档确认准确的监听端口、接口路径、鉴权要求,不能直接套用原生Prometheus的/api/v1/write路径。
内容的提问来源于stack exchange,提问作者Container-Man
相关产品推荐
相关产品推荐

