我们正在尝试使用OpenTelemetry Transform Processor[1]设置TraceID。
有一种方法可以像这样用硬编码值[2]设置TraceID(示例显示了一个SpanID,但TraceID也可以)。
traces:
set(span_id, SpanID(0x0000000000000000))
我们希望将其设置为存储在属性中的值。我们尝试
traces:
set(trace_id, attributes["traceID"])
其中attributes["traceID"]
是字符串0x00000000000000000000000000000000
。
这行不通,但是如果我们尝试
traces:
set(trace_id,TraceID(attributes["traceID"]))
收集器甚至不会启动,因为我们试图给出一个String,其中需要一个字节片
collector server run finished with error: invalid configuration: processor "transform" has invalid configuration: invalid argument at position 1 invalid argument for slice parameter at position 0, must be a byte slice literal
我们尝试了不同的方法将String类型强制转换为字节数组,但没有一种方法有效。
有人有什么想法吗?
提前感谢,致以亲切的问候!
[1] https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/fbb8ff9658b3bac7892dea6c7d49f40afe154bd8/processor/transformprocessor[2] https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/pkg/ottl update-a-spans-id
我们找到了答案:
- set(trace_id.string,attributes["traceID"])
可以正常工作:)