All Products
Search
Document Center

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

Last Updated:Nov 18, 2024

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 implement automatic monitoring data collection. APM agents developed by different vendors use different code to implement bytecode instrumentation. If you install two APM agents, bytecode instrumentation is performed twice on the code. Various issues such as slow application startup and data loss may occur due to code conflicts. Therefore, 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 in the period of transition. To increase the compatibility between the agents, ARMS has done a large number of compatibility tests. However, when the APM agents synchronously enhance a plug-in for an application, local conflicts may still be caused. To prevent the conflicts, you can disable the plug-in in the custom configurations of the application.

Note

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

In addition, the cache mechanism of SkyWalking affects compatibility. As a result, ARMS features such as Arthas becomes unavailable. If you migrate the monitoring solutions from SkyWalking to ARMS Application Monitoring, we recommend that you add the following parameters to the Java startup command during the transition period to disable the cache mechanism. For more information, see SkyWalking documentation.

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

If you have installed an ARMS agent and a SkyWalking agent, and encountered application startup errors or runtime business request errors, you can adjust the sequence of mounting the agents and restart them. Use one of the following methods:

  • Modify the startup parameters

    You need to modify the script and mount the SkyWalking agent before the ARMS agent in the script. Note that if the ARMS agent was automatically installed in a Container Service for Kubernetes (ACK) cluster, you can uninstall the agent, manually install an ARMS agent again, and then modify the script.

    Take Spring Boot as an example:

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

    For an ARMS agent automatically installed in an ACK cluster, you can also add JVM parameters to the ACK cluster to simplify modifications.

    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 of the SkyWalking agent and click Update.

      image.png

If you have installed an ARMS agent and another APM agent, such as a transmittableThreadLocal (TTL), a Pinpoint, or an OTel agent, and encountered application startup errors or runtime business request errors, you can adjust the sequence of mounting the agents and restart them by referring to the preceding steps. However, you need to change the agent package name and mount path based on your business requirements. For example, use one of the following methods for a TTL agent:

  • Modify the startup parameters

    You need to modify the script and mount the TTL agent before the ARMS agent in the script. Note that if the ARMS agent was automatically installed in an ACK cluster, you can uninstall the agent, manually install an ARMS agent again, and then modify the script.

    Take Spring Boot as an example:

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

    For an ARMS agent automatically installed in an ACK cluster, you can also add JVM parameters to the ACK cluster to simplify modifications.

    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 of the TTL agent and click Update.

      image

If you use an encryption tool to encrypt the bytecode, ensure that the agents meet the following requirements to avoid startup failures: