![](/img/trans.png)
[英]How to add Azure Monitor OpenTelemetry-based auto-instrumentation to Spring Boot Application?
[英]Open Telemetry Logger MDC auto-instrumentation
以下 Open Telemetry starter 已添加到 Spring Boot 項目 ( v2.7.2
) 以檢測應用程序:
<dependency>
<groupId>io.opentelemetry.instrumentation</groupId>
<artifactId>opentelemetry-spring-boot-starter</artifactId>
<version>1.22.1-alpha</version>
</dependency>
<dependency>
<groupId>io.opentelemetry.instrumentation</groupId>
<artifactId>opentelemetry-jaeger-spring-boot-starter</artifactId>
<version>1.22.1-alpha</version>
</dependency>
跟蹤和跨度已成功導出到 Jaeger 收集器。 問題是那些跟蹤和跨度無法與日志語句關聯,因為日志不包含當前的trace_id
和span_id
。
按照文檔,我將logging.pattern.level
屬性添加到application.properties
,但似乎有關當前跨度的信息未注入到日志記錄事件的 MDC 副本中。
logging.pattern.level = trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p
例如:
log.info(
"traceId: {}, spanId: {}",
Span.current().getSpanContext().getTraceId(),
Span.current().getSpanContext().getSpanId());
2023-01-25 12:21:36.774 trace_id= span_id= trace_flags= INFO 34272 --- [nio-8080-exec-2] h.c.DemoController: traceId: 1bccb6a4fea8345026ca87a202f0091f, spanId: c49a5
我錯過了什么嗎?
opentelemetry-spring-boot-starter
現在缺少此功能(版本1.22.1-alpha
),但可以很容易地添加它。
首先,應將MDC Instrumentation for Logback依賴項添加到項目中。
<dependency>
<groupId>io.opentelemetry.instrumentation</groupId>
<artifactId>opentelemetry-logback-mdc-1.0</artifactId>
<version>OPENTELEMETRY_VERSION</version>
</dependency>
然后在classpath中添加一個自定義的logback.xml
配置,它會自動將span上下文中的上下文信息注入到日志事件中。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- Default logback configuration -->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
<include resource="org/springframework/boot/logging/logback/file-appender.xml"/>
<!-- -->
<appender name="OTEL" class="io.opentelemetry.instrumentation.logback.v1_0.OpenTelemetryAppender">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</appender>
<root level="INFO">
<appender-ref ref="OTEL"/>
</root>
</configuration>
最后,將屬性添加到application.properties
(如問題中所述):
logging.pattern.level = trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.