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

OpenShift中Spring应用多数OpenTelemetry Instrumentation禁用问题求助

OpenShift中OpenTelemetry Java Agent多数Instrumentation自动禁用问题排查

问题描述

通过Kubernetes Operator在OpenShift的Spring应用中注入OpenTelemetry Java Agent后,多数instrumentation处于禁用状态,无法生成完整链路追踪。仅Lettuce instrumentation可正常工作并上报追踪数据到OpenTelemetry Collector。

环境信息

  • OpenTelemetry Agent镜像:ghcr.io/open-telemetry/opentelemetry-operator/autoinstrumentation-java:1.28.0
  • JAVA版本:openjdk 11.0.15
  • Kubernetes版本:v1.25.10+3fe2906

现象细节

开启OTEL_JAVAAGENT_DEBUG=true后,日志显示多数instrumentation被禁用,示例日志:

...
[otel.javaagent 2023-07-26 11:36:50:133 -0300] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation executors [class io.opentelemetry.javaagent.instrumentation.executors.ExecutorsInstrumentationModule]
[otel.javaagent 2023-07-26 11:36:50:133 -0300] [main] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation executors is disabled
[otel.javaagent 2023-07-26 11:36:50:133 -0300] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation internal-application-logging [class io.opentelemetry.javaagent.instrumentation.internal.logging.ApplicationLoggingInstrumentationModule]
[otel.javaagent 2023-07-26 11:36:50:133 -0300] [main] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Instrumentation internal-application-logging is disabled
...

Lettuce instrumentation正常工作的日志片段:

...
[otel.javaagent 2023-07-26 11:36:50:838 -0300] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation lettuce [class io.opentelemetry.javaagent.instrumentation.lettuce.v4_0.LettuceInstrumentationModule]
[otel.javaagent 2023-07-26 11:36:50:842 -0300] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation lettuce [class io.opentelemetry.javaagent.instrumentation.lettuce.v5_0.LettuceInstrumentationModule]
[otel.javaagent 2023-07-26 11:36:50:908 -0300] [main] DEBUG io.opentelemetry.javaagent.tooling.instrumentation.InstrumentationLoader - Loading instrumentation lettuce [class io.opentelemetry.javaagent.instrumentation.lettuce.v5_1.LettuceInstrumentationModule]
...
[otel.javaagent 2023-07-26 11:37:07:128 -0300] [main] DEBUG io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule - Applying instrumentation: lettuce [class io.opentelemetry.javaagent.instrumentation.lettuce.v5_1.LettuceInstrumentationModule] on org.springframework.boot.loader.LaunchedURLClassLoader@64db4967
...

已尝试操作

  1. 设置环境变量启用默认及指定instrumentation,但未生效:
OTEL_INSTRUMENTATION_COMMON_DEFAULT_ENABLED=true
OTEL_INSTRUMENTATION_TOMCAT_ENABLED=true
  1. 测试设置OTEL_INSTRUMENTATION_LETTUCE_ENABLED=false可成功禁用Lettuce instrumentation,说明配置生效逻辑无问题。
  2. 该Java Agent在Azure和AWS Kubernetes集群中可正常工作,推测问题与OpenShift集群相关。

可能的解决方向

1. 检查OpenShift Security Context约束(SCC)

OpenShift默认SCC可能限制Java Agent的字节码增强能力。尝试为应用ServiceAccount添加对应权限的SCC(优先最小权限原则):

oc adm policy add-scc-to-user anyuid -z <你的服务账户名> -n <命名空间>

注:字节码增强需要Agent具备修改类定义的权限,部分SCC的严格限制会导致Instrumentation无法加载。

2. 验证Agent挂载路径与权限

检查Operator注入的Agent Jar包路径是否有足够读取权限:

oc exec <Pod名称> -n <命名空间> -- ls -l /otel-auto-instrumentation/javaagent.jar

若权限不足,可在Instrumentation资源中配置volumeMounts的权限参数。

3. 确认Operator配置优先级

OpenTelemetry Operator的默认配置可能覆盖自定义环境变量。检查Instrumentation资源的spec.java.env字段,确保自定义启用规则已正确注入:

apiVersion: opentelemetry.io/v1alpha1
kind: Instrumentation
metadata:
  name: my-instrumentation
spec:
  java:
    env:
      - name: OTEL_INSTRUMENTATION_COMMON_DEFAULT_ENABLED
        value: "true"
      - name: OTEL_INSTRUMENTATION_TOMCAT_ENABLED
        value: "true"

同时通过oc describe pod <Pod名称>确认环境变量已正确生效。

4. 升级Operator与Agent版本

当前使用的Agent版本为1.28.0,尝试升级至1.30+版本,同步升级OpenTelemetry Operator——部分OpenShift兼容性问题已在新版本中修复。

5. 调整Spring Boot类加载器配置

Spring Boot的LaunchedURLClassLoader可能导致部分Instrumentation无法加载,尝试添加环境变量指定需要增强的包路径:

OTEL_JAVAAGENT_INCLUDE_PREFIXES=org.springframework,javax.servlet,org.apache.tomcat

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 18:29:59