All Products
Search
Document Center

Application Real-Time Monitoring Service:Is the ARMS agent compatible with other APM agents such as SkyWalking?

Last Updated:Mar 01, 2026

Similar to other mainstream application performance management (APM) services, the Application Real-Time Monitoring Service (ARMS) agent uses bytecode instrumentation based on the ASM framework to collect monitoring data automatically. APM agents developed by different vendors implement bytecode instrumentation differently. If two APM agents are installed, bytecode instrumentation is performed twice on the code. Various issues such as slow application startup and data loss may occur due to code conflicts. We recommend that you do not install multiple APM agents.

If you migrate your monitoring solutions from a third-party APM service to ARMS Application Monitoring, two APM agents may coexist during the transition. The sections below describe how to resolve common conflicts.

Resolve plug-in conflicts during migration

ARMS has performed extensive compatibility testing for migration scenarios. However, when two APM agents simultaneously enhance the same plug-in for an application, local conflicts may still occur. To prevent these conflicts, disable the conflicting plug-in in the custom configurations of the application.

Note

Even if no local conflicts exist, multiple APM agents still affect application performance. Make sure only the ARMS agent remains installed after migration is complete.

SkyWalking agent

Disable the SkyWalking cache mechanism

The cache mechanism of SkyWalking affects compatibility. As a result, ARMS features such as Arthas become unavailable. During the transition from SkyWalking to ARMS Application Monitoring, add the following parameters to the Java startup command to disable the cache mechanism:

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

For more information, see SkyWalking documentation.

Fix startup or runtime errors

If application startup errors or runtime business request errors occur when both the ARMS agent and the SkyWalking agent are installed, change the agent loading order so that SkyWalking loads before ARMS. Use one of the following methods.

Method 1: Modify startup parameters

Mount the SkyWalking agent before the ARMS agent in the startup script.

Spring Boot example:

-javaagent:/home/admin/apache-skywalking-apm-bin/agent/skywalking-agent.jar -javaagent:/{user.workspace}/ArmsAgent/aliyun-java-agent.jar
Note

If the ARMS agent was automatically installed in a Container Service for Kubernetes (ACK) cluster, uninstall the agent, manually reinstall the ARMS agent, and then modify the startup script.

Method 2: Add JVM parameters in an ACK cluster

For an ARMS agent automatically installed in an ACK cluster, add JVM parameters directly in the ACK console:

  1. Log on to the ACK console. Go to the Deployments page of the cluster, find the application, and click Edit in the Actions column.

  2. In the Environment Variables section, add the JVM parameters for the SkyWalking agent, and click Update.

    image.png

TTL, Pinpoint, and OTel agents

The same loading-order principle applies to other APM agents, including TransmittableThreadLocal (TTL), Pinpoint, and OTel. The third-party agent must load before the ARMS agent. Adjust the agent package name and mount path for each agent.

Fix startup or runtime errors

Use one of the following methods to change the agent loading order.

Method 1: Modify startup parameters

Mount the third-party agent before the ARMS agent in the startup script.

TTL example (Spring Boot):

-javaagent:/home/admin/transmittable-thread-local-2.14.2.jar -javaagent:/{user.workspace}/ArmsAgent/aliyun-java-agent.jar
Note

If the ARMS agent was automatically installed in an ACK cluster, uninstall the agent, manually reinstall the ARMS agent, and then modify the startup script.

Method 2: Add JVM parameters in an ACK cluster

For an ARMS agent automatically installed in an ACK cluster, add JVM parameters directly in the ACK console:

  1. Log on to the ACK console. Go to the Deployments page of the cluster, find the application, and click Edit in the Actions column.

  2. In the Environment Variables section, add the JVM parameters for the third-party agent, and click Update.

    image

Bytecode encryption tools

If you use an encryption tool to encrypt bytecode, make sure the following requirements are met to avoid startup failures:

  • The custom agent must run before the ARMS agent.

  • The ARMS agent version must be 4.x or later.

For version details, see Release notes of the ARMS agent for Java.