You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python OTLP Exporter向Tempo Cloud发送带认证的追踪数据?

解决OTLPSpanExporter向Tempo Cloud发送追踪数据的认证与404问题

我成功实现过这个功能,你的问题主要出在端点路径错误和认证编码方式不对,下面是正确的配置方案:

核心问题纠正

  1. 认证编码错误:你用了urllib.parse.quote_plus,但Basic Auth需要的是base64编码,而且格式是用户名:API密钥(Tempo Cloud允许用户名为空,所以写成:你的API密钥即可)
  2. 端点路径错误:GRPC和HTTP的端点格式完全不同,之前的路径导致了404或头部错误

正确代码示例

第一步:处理认证编码

先把API密钥转成符合Basic Auth要求的格式:

import base64

# 替换成你的Tempo Cloud API密钥
tempo_api_key = "XXXX"
# 生成Basic Auth字符串(用户名为空,所以前缀是冒号)
auth_str = base64.b64encode(f":{tempo_api_key}".encode("utf-8")).decode("utf-8")

GRPC版本配置

GRPC exporter不需要加https://前缀,端口必须是443,且不需要指定Content-Type:

from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter

otlp_exporter = OTLPSpanExporter(
    endpoint="tempo-us-central1.grafana.net:443",
    headers={
        "Authorization": f"Basic {auth_str}"
    }
)

HTTP版本配置

HTTP必须使用完整的推送路径,这是你之前404的关键原因:

from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter

otlp_exporter = OTLPSpanExporter(
    endpoint="https://tempo-us-central1.grafana.net/tempo/api/v1/push",
    headers={
        "Authorization": f"Basic {auth_str}"
    }
)

额外注意事项

  • 确保安装了对应依赖:GRPC版本装opentelemetry-exporter-otlp-proto-grpc,HTTP版本装opentelemetry-exporter-otlp-proto-http
  • API密钥要从Grafana Cloud的Tempo实例详情页获取(和你截图里的对应)
  • GRPC的endpoint不要带https://,否则会导致头部无效错误

内容的提问来源于stack exchange,提问作者Marco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 23:55:20