如何通过微米跟踪启用 Spring MVC 和 Spring Data 自动检测

问题描述 投票:0回答:1

使用 OpenTelemetry Java 代理或

opentelemetry-spring-starter
时,它可以自动检测 Spring MVC 和 Spring Data。这为控制器方法和存储库操作提供了跨度,然后您可以在 Grafana Tempo 或 Jaeger 等工具中对其进行可视化。但是,当我尝试使用 Spring 推荐的方法(具体而言,以
micrometer-tracing
opentelemetry-exporter-otlp
作为桥梁时),我只能获得 HTTP 请求检测。我还没有找到使用此设置为 Spring MVC 或数据库层添加跨度的方法。

我发现的存储库检测的唯一解决方案是包含以下依赖项,它将数据库层详细信息添加到跨度中,但该库看起来还不成熟:

<dependency>
    <groupId>net.ttddyy.observation</groupId>
    <artifactId>datasource-micrometer-spring-boot</artifactId>
</dependency>

即便如此,我仍然没有看到任何与Spring MVC相关的信息。

micrometer-tracing
可以达到这种水平的仪器吗?

目前,直接 OpenTelemetry 方法似乎提供了更丰富的开箱即用跨度。

java spring spring-boot micrometer open-telemetry-java
1个回答
0
投票

如果您想使用 OpenTelemetry 进行 Micrometer 跟踪,则需要手动配置。

1- 包括

Micrometer tracing
OpenTelemetry
的依赖项:

<dependencies>
    <!-- Micrometer Tracing -->
    <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-tracing-bridge-otel</artifactId>
        <version>1.0.0</version>
    </dependency>
    <dependency>
        <groupId>io.opentelemetry</groupId>
        <artifactId>opentelemetry-exporter-otlp</artifactId>
        <version>1.10.0</version>
    </dependency>
    <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-tracing</artifactId>
        <version>1.0.0</version>
    </dependency>
    <!-- Spring Boot Starter for Web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- Spring Boot Starter for Data JPA -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <!-- Optional: Additional library for database-layer instrumentation -->
    <dependency>
        <groupId>net.ttddyy.observation</groupId>
        <artifactId>datasource-micrometer-spring-boot</artifactId>
        <version>1.0.0</version>
    </dependency>
</dependencies>

2- 配置 Micrometer 跟踪并打开遥测导出器:

在您的 application.propeties 中添加此内容,但请填写正确的 otlp 端点:

management.tracing.enabled=true
management.tracing.sampling.probability=1.0
management.tracing.exporter.otlp.endpoint=http://localhost:4317

3- 添加必要的 Spring 配置:

import io.micrometer.tracing.Tracer;
import io.micrometer.tracing.exporter.SpanExporter;
import io.micrometer.tracing.exporter.otlp.OtlpSpanExporter;
import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.api.trace.TracerProvider;
import io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporter;
import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.trace.SdkTracerProvider;
import io.opentelemetry.sdk.trace.export.BatchSpanProcessor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class TracingConfiguration {

    @Bean
    public SpanExporter spanExporter() {
        return new OtlpSpanExporter(OtlpGrpcSpanExporter.builder().setEndpoint("http://localhost:4317").build());
    }

    @Bean
    public TracerProvider tracerProvider(SpanExporter spanExporter) {
        SdkTracerProvider sdkTracerProvider = SdkTracerProvider.builder()
                .addSpanProcessor(BatchSpanProcessor.builder(spanExporter).build())
                .build();
        return sdkTracerProvider;
    }

    @Bean
    public OpenTelemetry openTelemetry(TracerProvider tracerProvider) {
        return OpenTelemetrySdk.builder().setTracerProvider(tracerProvider).build();
    }

    @Bean
    public Tracer tracer(OpenTelemetry openTelemetry) {
        return openTelemetry.getTracer("io.micrometer.tracing");
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.