All Products
Search
Document Center

Application Real-Time Monitoring Service:Manually install an ARMS agent

Last Updated:Mar 12, 2024

After you install an Application Real-Time Monitoring Service (ARMS) agent for a Java application, ARMS starts to monitor the Java application. Then, you can view the monitoring data of the Java application, such as the application topologies, traces, abnormal transactions, slow transactions, and SQL analysis. This topic describes how to manually install an ARMS agent for a Java application.

Note

For applications deployed in Kubernetes environments, we recommend that you install the ack-onepilot component rather than manually install an ARMS agent. For more information, see Automatically install an ARMS agent in ACK and Automatically install an ARMS agent in a Kubernetes environment.

Prerequisites

  • The security group of the ECS instance allows outbound traffic for TCP ports 8442, 8443, 8883, 9092, and 9093. For more information, see Add a security group rule.

    Note

    You can use Application Monitoring to monitor applications deployed on ECS instances or on other public network servers.

  • The version of the JDK is supported by Application Monitoring. For more information, see Java components and frameworks supported by ARMS.

Install an ARMS agent

  1. Log on to the ARMS console. In the left-side navigation pane, choose Application Monitoring > Applications.

  2. On the Applications page, select a region in the top navigation bar and click Add Application.

  3. In the Backend Applications section of the Integration Center panel, click Java. In the Integrate Java panel, click Manual Installation (Recommended).

  4. Download an ARMS agent.

    • Method 1: Manually download an ARMS agent. In the STEP1 section of the Integrate Java panel, download the ARMS agent based on the required JDK version.

    • Method 2: Run the wget command. Download the installation package based on your region.

      wget commands in different regions

      Region

      Public URL

      VPC URL

      China (Hangzhou)

      wget "http://arms-apm-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip
      wget "http://arms-apm-cn-hangzhou.oss-cn-hangzhou-internal.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip

      China (Shanghai)

      wget "http://arms-apm-cn-shanghai.oss-cn-shanghai.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip
      wget "http://arms-apm-cn-shanghai.oss-cn-shanghai-internal.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip

      China (Qingdao)

      wget "http://arms-apm-cn-qingdao.oss-cn-qingdao.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip
      wget "http://arms-apm-cn-qingdao.oss-cn-qingdao-internal.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip

      China (Beijing)

      wget "http://arms-apm-cn-beijing.oss-cn-beijing.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip
      wget "http://arms-apm-cn-beijing.oss-cn-beijing-internal.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip

      China (Zhangjiakou)

      wget "http://arms-apm-cn-zhangjiakou.oss-cn-zhangjiakou.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip
      wget "http://arms-apm-cn-zhangjiakou.oss-cn-zhangjiakou-internal.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip

      China (Hohhot)

      wget "http://arms-apm-cn-huhehaote.oss-cn-huhehaote.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip
      wget "http://arms-apm-cn-huhehaote.oss-cn-huhehaote-internal.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip

      China (Ulanqab)

      wget "http://arms-apm-cn-wulanchabu.oss-cn-wulanchabu.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip
      wget "http://arms-apm-cn-wulanchabu.oss-cn-wulanchabu-internal.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip

      China (Shenzhen)

      wget "http://arms-apm-cn-shenzhen.oss-cn-shenzhen.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip
      wget "http://arms-apm-cn-shenzhen.oss-cn-shenzhen-internal.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip

      China (Heyuan)

      wget "http://arms-apm-cn-heyuan.oss-cn-heyuan.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip
      wget "http://arms-apm-cn-heyuan.oss-cn-heyuan-internal.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip

      China (Guangzhou)

      wget "http://arms-apm-cn-guangzhou.oss-cn-guangzhou.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip
      wget "http://arms-apm-cn-guangzhou.oss-cn-guangzhou-internal.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip

      China (Chengdu)

      wget "http://arms-apm-cn-chengdu.oss-cn-chengdu.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip
      wget "http://arms-apm-cn-chengdu.oss-cn-chengdu-internal.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip

      China (Hong Kong)

      wget "http://arms-apm-cn-hongkong.oss-cn-hongkong.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip
      wget "http://arms-apm-cn-hongkong.oss-cn-hongkong-internal.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip

      Singapore

      wget "http://arms-apm-ap-southeast-1.oss-ap-southeast-1.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip
      wget "http://arms-apm-ap-southeast-1.oss-ap-southeast-1-internal.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip

      Australia (Sydney)

      wget "http://arms-apm-ap-southeast-2.oss-ap-southeast-2.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip
      wget "http://arms-apm-ap-southeast-2.oss-ap-southeast-2-internal.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip

      Malaysia (Kuala Lumpur)

      wget "http://arms-apm-ap-southeast-3.oss-ap-southeast-3.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip
      wget "http://arms-apm-ap-southeast-3.oss-ap-southeast-3-internal.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip

      Indonesia (Jakarta)

      wget "http://arms-apm-ap-southeast-5.oss-ap-southeast-5.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip
      wget "http://arms-apm-ap-southeast-5.oss-ap-southeast-5-internal.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip

      Japan (Tokyo)

      wget "http://arms-apm-ap-northeast-1.oss-ap-northeast-1.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip
      wget "http://arms-apm-ap-northeast-1.oss-ap-northeast-1-internal.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip

      Germany (Frankfurt)

      wget "http://arms-apm-eu-central-1.oss-eu-central-1.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip
      wget "http://arms-apm-eu-central-1.oss-eu-central-1-internal.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip

      UK (London)

      wget "http://arms-apm-eu-west-1.oss-eu-west-1.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip
      wget "http://arms-apm-eu-west-1.oss-eu-west-1-internal.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip

      US (Virginia)

      wget "http://arms-apm-us-east-1.oss-us-east-1.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip
      wget "http://arms-apm-us-east-1.oss-us-east-1-internal.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip

      US (Silicon Valley)

      wget "http://arms-apm-us-west-1.oss-us-west-1.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zipwget "http://arms-apm-us-west-1.oss-us-west-1-internal.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip
      wget "http://arms-apm-us-west-1.oss-us-west-1-internal.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip

      India (Mumbai)

      wget "http://arms-apm-ap-south-1.oss-ap-south-1.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip
      wget "http://arms-apm-ap-south-1.oss-ap-south-1-internal.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip

      China East 1 Finance

      None

      wget "http://arms-apm-cn-hangzhou-finance.oss-cn-hzjbp-b-internal.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip

      China East 2 Finance

      None

      wget "http://arms-apm-cn-shanghai-finance-1.oss-cn-shanghai-finance-1-internal.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip

      China South 1 Finance

      None

      wget "http://arms-apm-cn-shenzhen-finance-1.oss-cn-shenzhen-finance-1-internal.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip

      China North 2 Ali Gov 1

      wget "http://arms-apm-cn-north-2-gov-1.oss-cn-north-2-gov-1.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip
      wget "http://arms-apm-cn-north-2-gov-1.oss-cn-north-2-gov-1-internal.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip
  5. Decompress the installation package.

    Go to the directory of the installation package. Run the following command to decompress the installation package to a working directory:

    unzip ArmsAgent.zip -d /{user.workspace}/ 
    Note

    {user.workspace} is a sample directory. Replace the sample directory with the actual directory.

  6. Add the AppName and LicenseKey parameters.

    In the STEP2 section of the Integrate Java panel, you can obtain the LicenseKey parameter. AppName specifies the application that is integrated into ARMS. Enter a custom application name based on your needs. In a distributed architecture, an application can contain multiple peer application instances.

    Use one of the following methods to add the AppName and LicenseKey parameters.

    • Method 1: Replace the {LicenseKey} parameter with the license key obtained from the console and replace the {AppName} parameter with the application name.

    • Method 2: Do not specify the LicenseKey and AppName parameters in the script. Add the following configurations to the arms-agent.config file of the installation package.

      arms.licenseKey={LicenseKey} arms.appName={AppName}
  7. Add the script.

    Replace {user.workspace} with the directory to which the ARMS agent is decompressed. Replace demoApp.jar with the path to the actual JAR package.

    Note
    • If you use an ARMS agent earlier than 2.7.3.5, replace aliyun-java-agent.jar in the preceding code with arms-bootstrap-1.7.0-SNAPSHOT.jar. We recommend that you upgrade the agent to the latest version at the earliest opportunity.

    • In Windows, replace / in the script with \ and replace the .sh file with the .bat file.

    • The ARMS agent V2.7.1.4 allows you to activate Application Security when you connect your application to Application Monitoring. If you need to activate Application Security, add -Darms.appsec.enable=true in the script. For information about the billing rules of Application Security, see Billing rules.

    Application type

    Procedure

    Spring Boot applications or other Java applications started by running the java -jar command

    Append the -javaagent parameter to the startup command. Make sure that the -javaagent parameter is written before the -jar parameter.

    java -javaagent:/{user.workspace}/ArmsAgent/aliyun-java-agent.jar -Darms.licenseKey={LicenseKey} -Darms.appName={AppName} -jar demoApp.jar

    Tomcat

    Append the following configurations to the {TOMCAT_HOME}/bin/setenv.sh file:

    JAVA_OPTS="$JAVA_OPTS -javaagent:/{user.workspace}/ArmsAgent/aliyun-java-agent.jar -Darms.licenseKey={LicenseKey} -Darms.appName={AppName} " 

    If your Tomcat service does not contain the setenv.sh configuration file, open the {TOMCAT_HOME}/bin/catalina.sh file and append the preceding configurations to the JAVA_OPTS parameter. For more information, see Row 256 in the catalina.sh file.

    Jetty

    Append the following configurations to the {JETTY_HOME}/start.ini configuration file:

    aliyun-java-agent.jar --exec
    -javaagent:/{user.workspace}/ArmsAgent/aliyun-java-agent.jar
    -Darms.licenseKey={LicenseKey}
    -Darms.appName={AppName} 

    Resin

    When you start the Resin process, append the following tag to the conf/resion.xml configuration file:

    <server-default>
        <jvm-arg>-javaagent:{user.workspace}/ArmsAgent/aliyun-java-agent.jar</jvm-arg>
        <jvm-arg>-Darms.licenseKey={LicenseKey}</jvm-arg>
        <jvm-arg>-Darms.appName={AppName}</jvm-arg>
    </server-default> 

    Append the following tag to the conf/app-default.xml file:

    <library-loader path="{user.workspace}/ArmsAgent/plugin"/> 

    To deploy multiple instances of the same application on a server, set the -Darms.agentId parameter to a logical number to differentiate the JVM processes. Example:

    java -javaagent:/{user.workspace}/ArmsAgent/aliyun-java-agent.jar -Darms.licenseKey={LicenseKey} -Darms.appName={AppName} -Darms.agentId=001 -jar demoApp.jar

  8. Restart the Java application.

(Optional) Sample Dockerfile

For a Docker environment, you can refer to the following sample Dockerfile to install an ARMS agent.

# Replace {original-docker-image:tag} with your image address. 
FROM {original-docker-image:tag}
# Replace the working directory based on your business requirements. 
WORKDIR /root/
# Obtain the public endpoint or virtual private cloud (VPC) where you can download the installation package of the ARMS agent in the desired region. For more information, see Step 4 of the "Install an ARMS agent" section. 
RUN wget "http://arms-apm-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip
# Decompress the installation package of the ARMS agent. 
RUN unzip ArmsAgent.zip -d /root/
# Write the LicenseKey and AppName parameters to environment variables. For more information, see Step 6 of the "Install an ARMS agent" section. 
ENV arms_licenseKey={LicenseKey}
ENV arms_appName={AppName}
# Add the startup script to the JAVA_TOOL_OPTIONS environment variables. 
ENV JAVA_TOOL_OPTIONS ${JAVA_TOOL_OPTIONS} '-javaagent:/root/ArmsAgent/aliyun-java-agent.jar -Darms.licenseKey='${arms_licenseKey}' -Darms.appName='${arms_appName}
### Check the JAVA_TOOL_OPTIONS environment variables. 
RUN env | grep JAVA_TOOL_OPTIONS

### Add custom Dockerfile logic. 
### ......

Verify the result

After about 1 minute, if your application is displayed on the Applications page and some data records are sent, your application is monitored by ARMS.