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

如何将OpenTelemetry Trace/Span ID关联至Google Cloud Logs?

解决方案:无需强制提交到OpenTelemetry Collector,直接添加元数据即可关联

你不需要将所有日志都提交到OpenTelemetry Collector,直接给日志条目添加Google可识别的元数据,就能实现OpenTelemetry追踪与Google Cloud日志的关联,步骤如下:

1. 从OpenTelemetry SpanContext提取必要信息

OpenTelemetry的SpanContext已经包含了Google Cloud需要的关联字段:

  • Trace ID:OTel的Trace ID是32字符的十六进制字符串,直接可用于Google Trace的trace字段格式中
  • Span ID:OTel的Span ID是16字符的十六进制字符串,完全符合Google Logging对spanId字段的格式要求(无需补零)
  • 采样标记:可选,提取traceFlags判断是否采样,对应Google日志的traceSampled字段

2. 给日志条目添加关联字段

针对结构化日志,直接添加以下字段:

  • trace:格式为projects/你的GCP项目ID/traces/OTEL_TRACE_ID
  • spanId:直接填入OTel的Span ID值
  • traceSampled:可选,值为true或false,对应OTel Span的采样状态

代码示例(Node.js)

const { trace, context } = require('@opentelemetry/api');

// 获取当前活跃的Span上下文
const activeSpan = trace.getSpan(context.active());
if (activeSpan) {
  const { traceId, spanId, traceFlags } = activeSpan.spanContext();
  // 构造Google可识别的日志元数据
  const gcpLogMetadata = {
    trace: `projects/your-gcp-project-id/traces/${traceId}`,
    spanId: spanId,
    traceSampled: traceFlags === trace.TraceFlags.SAMPLED
  };

  // 结合元数据打日志(以pino为例)
  logger.info('用户登录成功', gcpLogMetadata);
}

3. 额外场景:使用OpenTelemetry Collector的情况

如果你的架构已经在用Collector统一处理日志和追踪数据,也可以通过Collector的googlecloud exporter自动完成关联——只需确保日志数据中包含OTel的追踪上下文(trace_id、span_id字段),Collector会自动将其转换为Google Cloud日志所需的格式,无需手动处理。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 16:45:20