如何使用Python OTLP Exporter向Tempo Cloud发送带认证的追踪数据?
解决OTLPSpanExporter向Tempo Cloud发送追踪数据的认证与404问题
我成功实现过这个功能,你的问题主要出在端点路径错误和认证编码方式不对,下面是正确的配置方案:
核心问题纠正
- 认证编码错误:你用了
urllib.parse.quote_plus,但Basic Auth需要的是base64编码,而且格式是用户名:API密钥(Tempo Cloud允许用户名为空,所以写成:你的API密钥即可) - 端点路径错误: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
相关产品推荐
相关产品推荐

