在 Spring AI Alibaba 接入 ARMS 时需要注入 GlobalOpenTelemetry.get() 作为 Bean,原因如下:
- Micrometer 默认行为:Micrometer 自身会初始化一个新的 OpenTelemetrySdk 实例,用于本地追踪和指标
- Java Agent 提供实例:Aliyun Java Agent(ARMS)通过 GlobalOpenTelemetry 注册了一个自己的 SDK 实例,其中包含正确的采样器、导出器、License Key 等配置
- 实例冲突:如不覆盖,Spring 使用的 SDK 与 Java Agent 使用的 SDK 不一致,数据可能无法正确上报或链路信息断裂
通过 Bean 覆盖:
@Bean
public OpenTelemetry openTelemetry() {
return GlobalOpenTelemetry.get();
}
可以让 Spring 应用中的可观测数据统一使用 Java Agent 提供的 SDK,实现端到端的完整链路。




