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

Spring Boot集成OpenTelemetry时如何排除健康检查URL

在Spring Boot中排除OpenTelemetry指定URL的链路追踪

方式一:通过配置文件直接排除

这是最简便的方法,OpenTelemetry的Spring Web自动 instrumentation提供了现成配置项用于排除指定URL。

使用application.properties

添加以下配置,支持Ant风格路径匹配(**表示任意层级路径),多个URL用逗号分隔:

# 排除健康检查及相关端点
otel.instrumentation.spring-web.excluded-urls=/actuator/health/**,/actuator/info

使用application.yml

对应YAML格式的配置:

otel:
  instrumentation:
    spring-web:
      excluded-urls: "/actuator/health/**,/actuator/info"

方式二:通过环境变量配置

如果是容器化部署或需要通过环境变量传递配置,将配置项转为大写,点替换为下划线:

OTEL_INSTRUMENTATION_SPRING_WEB_EXCLUDED_URLS="/actuator/health/**,/actuator/info"

方式三:自定义Span过滤(进阶场景)

如果需要更灵活的过滤逻辑(比如结合请求方法、请求头判断),可以自定义SpanProcessor过滤指定Span:

  1. 实现自定义SpanProcessor:
import io.opentelemetry.context.Context;
import io.opentelemetry.sdk.trace.ReadWriteSpan;
import io.opentelemetry.sdk.trace.ReadableSpan;
import io.opentelemetry.sdk.trace.SpanProcessor;

public class ExcludeHealthCheckSpanProcessor implements SpanProcessor {

    private static final String HEALTH_CHECK_PREFIX = "/actuator/health";

    @Override
    public void onStart(Context parentContext, ReadWriteSpan span) {
        // 获取请求路径属性
        String requestPath = span.getAttribute("http.target");
        if (requestPath != null && requestPath.startsWith(HEALTH_CHECK_PREFIX)) {
            // 直接结束Span,不记录该链路
            span.end();
        }
    }

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

    @Override
    public void onEnd(ReadableSpan span) {
        // 无需额外处理
    }

    @Override
    public boolean isEndRequired() {
        return false;
    }
}
  1. 注册自定义SpanProcessor到OpenTelemetry SDK:
import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.trace.SdkTracerProvider;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class OpenTelemetryConfig {

    @Bean
    public OpenTelemetrySdk openTelemetrySdk() {
        SdkTracerProvider tracerProvider = SdkTracerProvider.builder()
                .addSpanProcessor(new ExcludeHealthCheckSpanProcessor())
                // 这里添加你的其他配置,比如Span导出器等
                .build();

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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 11:55:20