您在使用Logtail采集日志时,可以使用processor_otel_trace插件将采集到的日志转成SLS Trace。本文介绍processor_otel_trace插件的参数说明和配置示例。
功能入口
当您需要使用Logtail插件处理日志时,您可以在创建或修改Logtail采集配置时,添加插件配置。具体操作,请参见处理插件概述。
配置说明
Logtail 1.7.1及以上版本支持processor_otel_trace插件。
表单配置方式
配置处理器类型为Log转Trace,相关参数说明如下表所示。
参数说明
参数
说明
SourceKey
原始字段名。
Format
转换后的格式,可选值:
protobuf
json
protojson
NoKeyError
当日志中没有对应的原始字段时,是否报错。默认值为false。
TraceIDNeedDecode
是否对TraceID进行Base64解码,默认值为false。
设置Format为protojson时,如果TraceID已进行过Base64编码,则需要设置TraceIDNeedDecode为true,否则将导致转换失败。
SpanIDNeedDecode
是否对SpanID进行Base64解码。默认值为false。
设置Format为protojson时,如果SpanID已进行过Base64编码,则需要设置SpanIDNeedDecode为true,否则将导致转换失败。
ParentSpanIDNeedDecode
是否对ParentSpanID进行Base64解码。默认值为false。
设置Format为protojson时,如果ParentSpanID已进行过Base64编码,则需要设置ParentSpanIDNeedDecode为true,否则将导致转换失败。
配置示例
原始日志
INFO OtlpJsonLoggingSpanExporter - {"resource":{"attributes":[]},"scopeSpans":[{"scope":{"name":"io.opentelemetry.spring-webmvc-3.1","version":"1.26.0-alpha","attributes":[]},"spans":[{"traceId":"a7adbcb0921fa4a5b90615d0ad38ef95","spanId":"eecaa7e1b63c9f61","parentSpanId":"fa85fcee7fe0e0e8","name":"HelloWorldController.sayHello","kind":1,"startTimeUnixNano":"1696659118615748056","endTimeUnixNano":"1696659128701715998","attributes":[{"key":"thread.id","value":{"intValue":"48"}},{"key":"thread.name","value":{"stringValue":"http-nio-18080-exec-1"}}],"events":[],"links":[],"status":{}}]},{"scope":{"name":"io.opentelemetry.tomcat-7.0","version":"1.26.0-alpha","attributes":[]},"spans":[{"traceId":"a7adbcb0921fa4a5b90615d0ad38ef95","spanId":"fa85fcee7fe0e0e8","name":"GET /hello","kind":2,"startTimeUnixNano":"1696659118479360000","endTimeUnixNano":"1696659128703706165","attributes":[{"key":"http.status_code","value":{"intValue":"200"}},{"key":"user_agent.original","value":{"stringValue":"curl/7.84.0"}},{"key":"net.host.name","value":{"stringValue":"localhost"}},{"key":"http.response_content_length","value":{"intValue":"12"}},{"key":"http.target","value":{"stringValue":"/hello"}},{"key":"net.sock.peer.addr","value":{"stringValue":"127.0.0.1"}},{"key":"net.host.port","value":{"intValue":"18080"}},{"key":"net.sock.peer.port","value":{"intValue":"53649"}},{"key":"thread.id","value":{"intValue":"48"}},{"key":"thread.name","value":{"stringValue":"http-nio-18080-exec-1"}},{"key":"http.route","value":{"stringValue":"/hello"}},{"key":"net.sock.host.addr","value":{"stringValue":"127.0.0.1"}},{"key":"net.protocol.name","value":{"stringValue":"http"}},{"key":"net.protocol.version","value":{"stringValue":"1.1"}},{"key":"http.scheme","value":{"stringValue":"http"}},{"key":"http.method","value":{"stringValue":"GET"}}],"events":[],"links":[],"status":{}}]}],"schemaUrl":"https://opentelemetry.io/schemas/1.19.0"}
Logtail插件处理配置
处理结果
JSON配置方式
配置type为processor_otel_trace,detail说明如下表所示。
参数说明
参数
类型
是否必选
说明
SourceKey
String
是
原始字段名。
Format
String
是
转换后的格式,可选值:protobuf、json、protojson。
NoKeyError
Boolean
否
当日志中没有对应的原始字段时,是否报错。默认值为false。
TraceIDNeedDecode
Boolean
否
是否对TraceID进行Base64解码,默认值为false。
设置Format为protojson时,如果TraceID已进行过Base64编码,则需要设置TraceIDNeedDecode为true,否则将导致转换失败。
SpanIDNeedDecode
Boolean
否
是否对SpanID进行Base64解码。默认值为false。
设置Format为protojson时,如果SpanID已进行过Base64编码,则需要设置SpanIDNeedDecode为true,否则将导致转换失败。
ParentSpanIDNeedDecode
Boolean
否
是否对ParentSpanID进行Base64解码。默认值为false。
设置Format为protojson时,如果ParentSpanID已进行过Base64编码,则需要设置ParentSpanIDNeedDecode为true,否则将导致转换失败。
配置示例
原始日志
INFO OtlpJsonLoggingSpanExporter - {"resource":{"attributes":[]},"scopeSpans":[{"scope":{"name":"io.opentelemetry.spring-webmvc-3.1","version":"1.26.0-alpha","attributes":[]},"spans":[{"traceId":"a7adbcb0921fa4a5b90615d0ad38ef95","spanId":"eecaa7e1b63c9f61","parentSpanId":"fa85fcee7fe0e0e8","name":"HelloWorldController.sayHello","kind":1,"startTimeUnixNano":"1696659118615748056","endTimeUnixNano":"1696659128701715998","attributes":[{"key":"thread.id","value":{"intValue":"48"}},{"key":"thread.name","value":{"stringValue":"http-nio-18080-exec-1"}}],"events":[],"links":[],"status":{}}]},{"scope":{"name":"io.opentelemetry.tomcat-7.0","version":"1.26.0-alpha","attributes":[]},"spans":[{"traceId":"a7adbcb0921fa4a5b90615d0ad38ef95","spanId":"fa85fcee7fe0e0e8","name":"GET /hello","kind":2,"startTimeUnixNano":"1696659118479360000","endTimeUnixNano":"1696659128703706165","attributes":[{"key":"http.status_code","value":{"intValue":"200"}},{"key":"user_agent.original","value":{"stringValue":"curl/7.84.0"}},{"key":"net.host.name","value":{"stringValue":"localhost"}},{"key":"http.response_content_length","value":{"intValue":"12"}},{"key":"http.target","value":{"stringValue":"/hello"}},{"key":"net.sock.peer.addr","value":{"stringValue":"127.0.0.1"}},{"key":"net.host.port","value":{"intValue":"18080"}},{"key":"net.sock.peer.port","value":{"intValue":"53649"}},{"key":"thread.id","value":{"intValue":"48"}},{"key":"thread.name","value":{"stringValue":"http-nio-18080-exec-1"}},{"key":"http.route","value":{"stringValue":"/hello"}},{"key":"net.sock.host.addr","value":{"stringValue":"127.0.0.1"}},{"key":"net.protocol.name","value":{"stringValue":"http"}},{"key":"net.protocol.version","value":{"stringValue":"1.1"}},{"key":"http.scheme","value":{"stringValue":"http"}},{"key":"http.method","value":{"stringValue":"GET"}}],"events":[],"links":[],"status":{}}]}],"schemaUrl":"https://opentelemetry.io/schemas/1.19.0"}
Logtail插件处理配置
{ "processors": [ { "type": "processor_split_log_regex", "detail": { "PreserveOthers": true, "SplitKey": "content", "SplitRegex": "INFO\\sOtlpJsonLoggingSpanExporter\\s.+" } }, { "type": "processor_regex", "detail": { "SourceKey": "content", "Regex": "INFO\\sOtlpJsonLoggingSpanExporter\\s-(\\s.+)", "Keys": [ "trace_data" ] } }, { "detail": { "SourceKey": "trace_data", "Format": "protojson", "NoKeyError": true }, "type": "processor_otel_trace" } ] }
处理结果