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

Spring Boot集成Micrometer与OpenTelemetry后追踪数据间歇性缺失

Spring Boot 对接OpenObserve时追踪记录间歇性缺失

我在Spring Boot应用中使用Micrometer Tracing + OpenTelemetry搭建分布式追踪,将数据发送至OpenObserve实例,但遇到了追踪记录仅间歇性生成的问题。

现有配置

pom.xml 依赖

<dependency> 
    <groupId>io.micrometer</groupId> 
    <artifactId>micrometer-registry-otlp</artifactId> 
</dependency>
<dependency> 
    <groupId>io.opentelemetry</groupId> 
    <artifactId>opentelemetry-exporter-otlp</artifactId> 
</dependency>
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-tracing</artifactId>
</dependency>
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-tracing-bridge-otel</artifactId>
</dependency>
<dependency> 
    <groupId>com.squareup.okio</groupId> 
    <artifactId>okio</artifactId> 
    <version>3.9.1</version>
</dependency>       
<dependency>
    <groupId>io.opentelemetry.instrumentation</groupId>
    <artifactId>opentelemetry-logback-appender-1.0</artifactId>
    <version>2.11.0-alpha</version>
</dependency>
<dependency>
    <groupId>io.opentelemetry</groupId>
    <artifactId>opentelemetry-exporter-otlp-logs</artifactId>
    <version>1.26.0-alpha</version>
</dependency>
<dependency>
    <groupId>io.opentelemetry</groupId>
    <artifactId>opentelemetry-sdk-logs</artifactId>
</dependency>

application.yml 配置

management:
  otlp:
    metrics: 
      export: 
        url: ${OPEN_OBSERVE_URL}/api/${OPEN_OBSERVE_ORG_NAME}/v1/metrics
        enabled: true 
        step: 1m
        headers: 
          enabled: true 
          Authorization: Basic ${OPEN_OBSERVE_PASSWORD}
          organization: default
          service: 
            name: default
    tracing: 
      export:
        enabled: true
        sampling:
            probability: 1.0
      endpoint: ${OPEN_OBSERVE_URL}/api/${OPEN_OBSERVE_ORG_NAME}/v1/traces
      headers: 
        active : true
        enabled: true  
        Authorization: Basic ${TECHBD_OPEN_OBSERVE_PASSWORD}
        organization: default
        stream-name: ${OPEN_OBSERVE_STREAM_NAME}-traces
        service: 
          name: default

已知信息

  • OPEN_OBSERVE_* 环境变量已正确配置,启动日志确认已解析到最终配置中
  • 使用logback-appender-1.0将追踪与跨度集成到现有日志,logback配置模式%-X{traceId}已验证可用

排查与修复建议

  • 修正配置层级错误
    原配置中tracing节点下的endpoint和headers层级不符合规范,且service.name不应放在headers中,修正后的配置:

    management:
      otlp:
        tracing:
          export:
            enabled: true
            sampling:
              probability: 1.0
            endpoint: ${OPEN_OBSERVE_URL}/api/${OPEN_OBSERVE_ORG_NAME}/v1/traces
            headers:
              Authorization: Basic ${TECHBD_OPEN_OBSERVE_PASSWORD}
              organization: default
              stream-name: ${OPEN_OBSERVE_STREAM_NAME}-traces
            batch:
              schedule-delay: 1000 # 1秒触发一次批量发送
      tracing:
        sampling:
          probability: 1.0
        service:
          name: default # 服务名称配置到此处
    
  • 调整OTLP批处理参数
    OpenTelemetry默认批量发送数据,若未达到阈值会延迟推送,添加批处理配置确保数据及时发送:

    management:
      otlp:
        tracing:
          export:
            batch:
              max-queue-size: 1000
              schedule-delay: 1000
              export-timeout: 5000
              max-exporter-batch-size: 512
    
  • 替换不稳定依赖
    当前使用的OpenTelemetry日志相关依赖为alpha版本,稳定性不足易导致数据丢失,建议替换为对应稳定版(对齐OpenTelemetry核心版本)。

  • 开启DEBUG日志排查发送问题
    开启OTLP导出和追踪模块的DEBUG日志,查看是否存在请求失败、超时等情况:

    logging:
      level:
        io.opentelemetry.exporter.otlp: DEBUG
        io.micrometer.tracing: DEBUG
    
  • 验证异步上下文传递
    若应用存在异步操作(线程池、@Async方法),需确保追踪上下文正确传递,例如为线程池添加上下文装饰器:

    @Bean
    public Executor asyncExecutor() {
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        executor.setCorePoolSize(5);
        executor.setMaxPoolSize(10);
        executor.setQueueCapacity(25);
        executor.setThreadNamePrefix("Async-");
        executor.setTaskDecorator(new ObservationTaskDecorator());
        executor.initialize();
        return executor;
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 23:37:06