文档

ARMS探针和其他APM产品探针(例如SkyWalking)是否兼容?

更新时间:

ARMS的探针和其他主流APM产品的探针一样,都是基于ASM等框架对字节码进行插桩,以实现监控信息自动采集。同时安装两个APM探针相当于对您的代码插桩两次,由于不同厂家的插桩代码实现不同,代码冲突可能造成各类问题(例如应用启动缓慢以及监控信息丢失),因此建议您不要同时安装多个APM探针。

在替换监控方案的迁移过渡期(例如从使用其他APM产品,全面转向ARMS应用监控)可能会存在应用同时安装两个APM的需求,因此ARMS做了大量的探针兼容性测试,尽可能的提升迁移过渡期的探针兼容性。但在探针共存的情况下,依然存在ARMS探针和其他APM探针同时增强某个插件造成的局部冲突可能性。在这种情况下,您可以在ARMS的应用自定义配置中单独关闭这个插件的开关,以规避冲突。

说明

即使没有局部冲突,同时安装多个探针也会导致应用性能受到影响。请确保迁移过渡期结束后,只保留ARMS的探针。

SkyWalking的Cache机制会导致探针兼容性问题,导致ARMS的Arthas等能力无法使用,如果您从SkyWalking迁移到ARMS应用监控,在过渡期建议在Java启动命令中增加如下参数关闭Skywalking的Cache机制。更多信息,请参见SkyWalking官方文档

-Dskywalking.agent.is_cache_enhanced_class=true -Dskywalking.agent.class_cache_mode=MEMORY  

如果您同时安装了两个APM探针,在应用启动或者应用运行时期存在问题,例如启动过程报错、业务请求报错等情况,您可以优先考虑调整探针挂载顺序进行重启。推荐的探针挂载顺序调整方式如下:

  • 手动接入方式调整启动参数

    如果您是容器服务ACK环境自动安装探针的方式,可以尝试使用手动安装探针方式;如果您已经是手动安装探针方式,可以调整接入脚本中开源探针与ARMS探针的挂载顺序,保证ARMS探针在后。

    Spring Boot场景示例:

    -javaagent:/home/admin/apache-skywalking-apm-bin/agent/skywalking-agent.jar -javaagent:/{user.workspace}/ArmsAgent/aliyun-java-agent.jar 
  • 自动接入方式添加JVM参数

    如果您是容器服务ACK环境自动安装探针的方式,改用手动安装探针方式修改接入脚本的工作量较大,可以使用在容器环境中添加JVM参数的方式。

    1. 登录容器服务管理控制台,在目标集群的无状态页面,单击接入ARMS应用右侧的编辑

    2. 环境变量中添加SkyWalking探针参数,然后单击保存

      image.png