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

Spring Boot集成OTEL+Honeycomb:Trace环境标签添加失败排查

Spring Boot集成OpenTelemetry上报Honeycomb时添加环境标签失败问题

场景说明

在Spring Boot集成OpenTelemetry(OTEL)并将链路数据上报至Honeycomb.io的场景中,尝试给每个Trace添加环境标签,自定义了EnvironmentSpanProcessor类并标注为@Component,但标签未成功添加。

自定义SpanProcessor代码

@Component
public class EnvironmentSpanProcessor implements SpanProcessor {

  @Value("${ENVIRONMENT}")
  private String environment;

  Queue<SpanData> spans = new LinkedBlockingQueue<>(50);

  @Override
  public void onStart(Context context, ReadWriteSpan readWriteSpan) {
    readWriteSpan.setAttribute("env", environment);
  }

  @Override
  public boolean isStartRequired() {
    return false;
  }

  @Override
  public void onEnd(ReadableSpan readableSpan) {
    this.spans.add(readableSpan.toSpanData());
  }

  @Override
  public boolean isEndRequired() {
    return true;
  }
}

通过@Value注入环境变量,在onStart方法中设置env属性,但启动后该方法断点从未触发,尽管该Bean可在Actuator中查到。

同时,OtelAutoConfiguration中的如下方法断点也未触发:

SdkTracerProvider otelTracerProvider(SpanLimits spanLimits, ObjectProvider<List<SpanProcessor>> spanProcessors,
            SpanExporterCustomizer spanExporterCustomizer, ObjectProvider<List<SpanExporter>> spanExporters,
            Sampler sampler, Resource resource, SpanProcessorProvider spanProcessorProvider) {
        SdkTracerProviderBuilder sdkTracerProviderBuilder = SdkTracerProvider.builder().setResource(resource)
                .setSampler(sampler).setSpanLimits(spanLimits);
        List<SpanProcessor> processors = spanProcessors.getIfAvailable(ArrayList::new);
        processors.addAll(spanExporters.getIfAvailable(ArrayList::new).stream()
                .map(e -> spanProcessorProvider.toSpanProcessor(spanExporterCustomizer.customize(e)))
                .collect(Collectors.toList()));
        processors.forEach(sdkTracerProviderBuilder::addSpanProcessor);
        return sdkTracerProviderBuilder.build();
    }

当前状态

项目能正常生成并上报Trace,但环境标签始终未添加成功。

pom.xml相关依赖

<dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-sleuth</artifactId>
      <exclusions>
        <exclusion>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-sleuth-brave</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-sleuth-otel-autoconfigure</artifactId>
    </dependency>
    <dependency>
      <groupId>io.opentelemetry</groupId>
      <artifactId>opentelemetry-exporter-otlp</artifactId>
    </dependency>
    <dependency>
      <groupId>io.opentelemetry</groupId>
      <artifactId>opentelemetry-extension-trace-propagators</artifactId>
    </dependency>
    <dependency>
      <groupId>io.grpc</groupId>
      <artifactId>grpc-netty-shaded</artifactId>
      <version>1.47.0</version>
    </dependency>

application.yaml配置

sleuth:
    enabled: true
    web:
      additional-skip-pattern: /readiness|/liveness
      client.skip-pattern: /readiness
    sampler:
      probability: 1.0
      rate: 100
    propagation:
      type: OT_TRACER
    otel:
      config:
        trace-id-ratio-based: 1.0
      log.exporter.enabled: true
      exporter:
        otlp:
          endpoint: https://api.honeycomb.io
          headers:
            x-honeycomb-team: ${TELEMETRY_API_KEY}
            x-honeycomb-dataset: app-telemetry
        sleuth-span-filter:
          enabled: true
      resource:
        enabled: true

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 02:45:33