This commit is contained in:
lingxiao865
2026-02-10 08:54:10 +08:00
parent b230d23173
commit e394f2b51f
27 changed files with 345 additions and 146 deletions

View File

@@ -0,0 +1,22 @@
package com.example.springboot4.config;
import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.instrumentation.logback.appender.v1_0.OpenTelemetryAppender;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;
@Component
class InstallOpenTelemetryAppender implements InitializingBean {
private final OpenTelemetry openTelemetry;
InstallOpenTelemetryAppender(OpenTelemetry openTelemetry) {
this.openTelemetry = openTelemetry;
}
@Override
public void afterPropertiesSet() {
OpenTelemetryAppender.install(this.openTelemetry);
}
}

View File

@@ -0,0 +1,38 @@
package com.example.springboot4.config;
import io.micrometer.tracing.TraceContext;
import io.micrometer.tracing.Tracer;
import jakarta.annotation.Nullable;
import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.filter.OncePerRequestFilter;
import java.io.IOException;
@Component
class TraceIdFilter extends OncePerRequestFilter {
private final Tracer tracer;
TraceIdFilter(Tracer tracer) {
this.tracer = tracer;
}
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
String traceId = getTraceId();
if (traceId != null) {
response.setHeader("X-Trace-Id", traceId);
}
filterChain.doFilter(request, response);
}
private @Nullable String getTraceId() {
TraceContext context = this.tracer.currentTraceContext().context();
return context != null ? context.traceId() : null;
}
}

View File

@@ -38,4 +38,24 @@ server:
port: 9000
jetty:
threads:
max: 1000
max: 1000
management:
otlp:
metrics:
export:
url: http://192.168.1.14:9090/api/v1/otlp/v1/metrics #Prometheus otlp协议 http地址
step: 30s
opentelemetry:
tracing:
export:
otlp:
endpoint: http://192.168.1.14:4317/v1/traces #Jaeger otlp协议 grpc地址
transport: grpc
# endpoint: http://localhost:4318/v1/traces
# transport: http
logging:
export:
otlp:
endpoint: http://192.168.1.14:32664/otlp/v1/logs #Loki otlp协议 grpc地址
# transport: grpc

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<appender name="OTEL" class="io.opentelemetry.instrumentation.logback.appender.v1_0.OpenTelemetryAppender">
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="OTEL"/>
</root>
</configuration>