You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从OpenTracing迁移至OpenTelemetry:如何实现原有链路追踪行为?

切换到OpenTelemetry后实现类似OpenTracing的span reported日志

1. 替换依赖

移除原有的OpenTracing及Jaeger Client依赖,改用OpenTelemetry官方的Spring Boot Starter和Jaeger Exporter依赖:

<dependency>
    <groupId>io.opentelemetry</groupId>
    <artifactId>opentelemetry-spring-boot-starter</artifactId>
    <version>1.32.0</version> <!-- 建议使用最新稳定版 -->
</dependency>
<dependency>
    <groupId>io.opentelemetry</groupId>
    <artifactId>opentelemetry-exporter-jaeger</artifactId>
    <version>1.32.0</version>
</dependency>

2. 配置追踪与日志上报

OpenTelemetry支持配置文件或代码两种方式实现对应原OpenTracing的行为:

方式一:配置文件实现(推荐)

在application.properties中添加以下配置,完全对应原逻辑:

# 服务名称,对应原代码中的"my-service"
otel.service.name=my-service

# 采样器配置:always_on对应原const类型100%采样率
otel.traces.sampler=always_on

# 开启Jaeger上报日志,对应原withLogSpans(true)
otel.exporter.jaeger.log-spans=true

OpenTelemetry默认支持从环境变量加载配置,无需额外处理fromEnv()的逻辑。

方式二:代码自定义配置(灵活场景)

如果需要更精细化的控制,可以通过代码创建OpenTelemetry Bean:

import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.exporter.jaeger.JaegerSpanExporter;
import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.trace.SdkTracerProvider;
import io.opentelemetry.sdk.trace.samplers.Sampler;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class OpenTelemetryConfig {

    @Bean
    public OpenTelemetry openTelemetry() {
        // 配置Jaeger Exporter并开启日志上报
        JaegerSpanExporter jaegerExporter = JaegerSpanExporter.builder()
                .setLogSpans(true)
                .build();

        // 配置100%采样率的采样器
        SdkTracerProvider tracerProvider = SdkTracerProvider.builder()
                .setSampler(Sampler.alwaysOn())
                .addSpanProcessor(io.opentelemetry.sdk.trace.export.SimpleSpanProcessor.create(jaegerExporter))
                .build();

        return OpenTelemetrySdk.builder()
                .setTracerProvider(tracerProvider)
                .buildAndRegisterGlobal();
    }
}

3. 验证效果

启动应用后,当收到外部请求时,OpenTelemetry会自动为请求生成Span,并在Span上报时输出类似原span reported的日志(日志格式会包含Span ID、Trace ID等信息,核心行为与原逻辑一致)。

内容的提问来源于stack exchange,提问作者ahrooran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 14:05:22