SpringBoot/Jersey与Splunk/OTel Collector冲突致K8s探针失败求助
Spring Boot + Jersey 集成 Splunk OTel Agent 致 Actuator 探针失败问题
已知类似场景与排查方案
Servlet 拦截路径冲突
Splunk OTel Java Agent 默认拦截所有 Servlet 请求,包括 Actuator 端点。你的应用中 Actuator 路径为/api/users/actuator/*,Jersey 处理/api/users/v2/*,Agent 可能误将 Actuator 请求导向 Jersey,或干扰 Spring MVC 的请求映射逻辑。可通过配置排除 Actuator 路径:otel.instrumentation.servlet.exclude-paths=/api/users/actuator/*过滤器执行顺序异常
启用 OTel Agent 后,可能改变了 Servlet 容器内 Jersey 与 Spring MVC 的过滤器优先级,导致 Actuator 请求被 Jersey 拦截却无法处理。可调整 Jersey 过滤器的执行顺序,让 Spring MVC(Actuator)的过滤器先运行:@Configuration public class JerseyConfig extends ResourceConfig { public JerseyConfig() { // 原有Jersey配置逻辑 } @Bean public FilterRegistrationBean<ServletContainer> jerseyFilterRegistration(ServletContainer servletContainer) { FilterRegistrationBean<ServletContainer> registration = new FilterRegistrationBean<>(servletContainer); registration.setOrder(2); // 数值越大执行越晚,确保Spring MVC过滤器(默认Order=1)优先 return registration; } }Jersey 增强模块干扰
Splunk OTel Agent 内置了 Jersey 的 instrumentation 模块,可能在增强 Jersey 时破坏了 Spring Boot 上下文初始化流程。可尝试禁用该模块:otel.instrumentation.jersey.enabled=false注意:此操作会丢失 Jersey 端点的链路追踪能力,若需追踪可后续单独配置自定义采集规则。
Actuator 指标采集冲突
OTel Agent 会自动采集 Actuator 指标,采集过程可能导致端点响应异常。可禁用 Actuator 相关的 instrumentation:otel.instrumentation.spring-boot-actuator.enabled=false
验证建议
- 在 K8s Pod 的环境变量中添加上述配置项,重新部署应用
- 查看 Pod 日志,确认 Actuator 端点请求是否返回 200 状态码
- 检查 Agent 日志(容器内通常可通过
kubectl logs <pod-name> -c splunk-otel-agent查看),排查是否存在请求拦截或初始化错误
内容的提问来源于stack exchange,提问作者KJ0797
相关产品推荐
相关产品推荐

