GrowthBook集成OTEL对接Prometheus Pushgateway失败问题排查
问题解答
1. @opentelemetry/auto-instrumentations-node 引入后,指标的暴露/推送方式
@opentelemetry/auto-instrumentations-node 仅负责自动注入Node.js生态常见库的埋点逻辑(如Express、MongoDB等),本身不决定指标的传输方式,指标的暴露或推送完全由你配置的OpenTelemetry导出器决定:
- 若配置了OTLP导出器(通过
OTEL_EXPORTER_OTLP_ENDPOINT环境变量开启),指标会以主动推送的方式发送到指定OTLP端点; - 若使用Prometheus导出器(需额外安装
@opentelemetry/exporter-prometheus),指标会暴露在特定HTTP端点(默认/metrics),等待Prometheus主动拉取; - 若未配置任何导出器,指标仅临时存储在进程内存中,既不推送也不对外暴露。
你当前设置了OTEL_EXPORTER_OTLP_ENDPOINT,说明启用了OTLP主动推送模式,但核心问题是:Prometheus Pushgateway不支持OTLP协议。
2. 推送模式失败的可能原因
结合你的403/404报错和场景,主要原因如下:
- 协议不兼容:OTLP导出器发送OTLP格式请求(基于gRPC或HTTP/JSON),而Prometheus Pushgateway仅支持接收Prometheus文本格式请求,协议完全不匹配,直接对接必然报错;
- 路径不匹配:Pushgateway接收指标的合法路径为
/metrics/job/<job_name>(必须指定job名),而OTLP导出器默认推送路径是/v1/metrics,该路径在Pushgateway上不存在,触发404; - 权限认证问题:若Pushgateway配置了访问控制(如Basic Auth、TLS证书验证),但你未在OTEL环境变量中配置对应认证信息(比如
OTEL_EXPORTER_OTLP_HEADERS设置Basic Auth头),会返回403; - 环境变量配置细节错误:比如
OTEL_EXPORTER_OTLP_ENDPOINT未添加http://或https://前缀,或端口配置错误(即便curl能通,OTel的请求格式错误仍会触发报错)。
内容的提问来源于stack exchange,提问作者pkaramol
相关产品推荐
相关产品推荐

