手动安装探针

Java应用安装探针后,ARMS即可开始监控Java应用,您可以查看应用拓扑、调用链路、异常事务、慢事务和SQL分析等一系列监控数据。本文介绍如何为Java应用手动安装探针。

说明

对于部署在Kubernetes环境的应用,不推荐手动安装探针,建议通过安装组件的方式接入ARMS。具体操作,请参见容器服务ACK环境自动安装探针以及通用Kubernetes环境自动安装探针

前提条件

安装探针

  1. 登录ARMS控制台,在左侧导航栏选择应用监控 > 应用列表

  2. 应用列表页面顶部选择目标地域,然后单击接入应用

  3. 接入中心页面单击Java应用监控,然后选择手动安装

  4. 下载探针。

    • 方法一:手动下载。在Java应用监控面板根据提示下载对应的探针。

    • 方法二:使用wget命令下载。根据您的地域下载对应的探针安装包。

      查看各地域对应的探针安装包下载命令

      地域

      公网地址

      VPC地址

      华东1(杭州)

      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

      华东2(上海)

      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

      华北1(青岛)

      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

      华北2(北京)

      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

      华北3(张家口)

      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

      华北5(呼和浩特)

      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

      华北6(乌兰察布)

      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

      华南1(深圳)

      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

      华南2(河源)

      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

      华南3(广州)

      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

      西南1(成都)

      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

      中国(香港)

      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

      新加坡

      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

      亚太东南2(悉尼)关停中

      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

      亚太东南3(吉隆坡)

      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

      亚太东南5(雅加达)

      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

      亚太东北1(东京)

      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

      欧洲中部1(法兰克福)

      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

      欧洲西部1(伦敦)

      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

      美国东部1(弗吉尼亚)

      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

      美国西部1(硅谷)

      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

      华东1金融云

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

      华东2金融云

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

      华南1金融云

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

      政务云

      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. 解压探针。

    进入探针安装包所在目录,并执行以下命令将安装包解压到任意工作目录下。

    unzip ArmsAgent.zip -d /{user.workspace}/ 
    说明

    {user.workspace}是示例目录,请替换为真实的目录。

  6. 添加AppNameLicenseKey参数。

    Java应用监控面板获取到对应的LicenseKeyAppName代表接入到ARMS的哪一个应用中,您可以根据需要自定义您的应用名,在分布式架构中,同一个应用内可以包含多个对等的实例。

    请通过下列两种方式,添加AppNameLicenseKey。

    • 方法一:将接入脚本中的{LicenseKey}{AppName}替换为您从控制台获得的LicenseKey以及该应用对应的AppName。

    • 方法二:脚本中不填写LicenseKeyAppName的相关信息,在探针包的arms-agent.config文件中添加以下配置。

      arms.licenseKey={LicenseKey} 
      arms.appName={AppName}
  7. 添加接入脚本。

    {user.workspace}替换成实际探针安装包的解压目录,将demoApp.jar替换为真实的JAR包地址。

    说明
    • 如果您使用的探针版本在2.7.3.5以下,请将本文中的aliyun-java-agent.jar替换为arms-bootstrap-1.7.0-SNAPSHOT.jar。建议您尽快将探针升级至最新版本。

    • Windows操作系统中,请将脚本中的/替换为\,并将.sh文件替换为.bat文件。

    • v2.7.1.4及以上版本探针已支持在接入应用监控时开通应用安全,如果需要开通应用安全,请在脚本中添加-Darms.appsec.enable=true。应用安全的计费规则,请参见计费说明

    运行环境

    步骤

    Spring Boot或其他通过java -jar命令启动的Java应用

    在启动命令后加上-javaagent参数。请确保-javaagent参数写在-jar参数之前。

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

    Tomcat

    {TOMCAT_HOME}/bin/setenv.sh文件中添加以下配置。

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

    如果您的Tomcat版本没有setenv.sh配置文件,请打开{TOMCAT_HOME}/bin/catalina.sh文件,并在JAVA_OPTS后添加上述配置,具体示例,请参见catalina.sh的第256行。

    Jetty

    {JETTY_HOME}/start.ini配置文件中添加以下配置。

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

    Resin

    1. 启动Resin进程时,在conf/resin.xmlconf/resin.conf中添加以下标签

      <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> 

      如果您使用的是conf/resin.properties配置,也可以在该文件中添加以下标签

      jvm_args : -javaagent:{user.workspace}/ArmsAgent/aliyun-java-agent.jar -Darms.licenseKey={LicenseKey} -Darms.appName={AppName}
    2. conf/app-default.xml文件中添加以下标签。

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

    如需在一台服务器上部署同一应用的多个实例,可以通过-Darms.agentId参数(逻辑编号)来区分接入的JVM进程,例如:

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

  8. 重启Java应用。

(可选)Docker环境安装参考

对于Docker环境,可以参考以下Dockerfile示例修改您的Dockerfile文件。

# 将{original-docker-image:tag}替换为您的镜像地址。
FROM {original-docker-image:tag}
# 可以根据需要替换工作目录。
WORKDIR /root/
# 参考安装探针的第4步,获得所在地域的探针下载地址,请注意公网地址和VPC地址的区别。
RUN wget "http://arms-apm-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/ArmsAgent.zip" -O ArmsAgent.zip
# 解压探针。
RUN unzip ArmsAgent.zip -d /root/
# 参考安装探针的第6步,将LicenseKey和AppName写入环境变量中。
ENV arms_licenseKey={LicenseKey}
ENV arms_appName={AppName}
# 拼接必要的启动脚本,追加到JAVA_TOOL_OPTIONS环境变量中。
ENV JAVA_TOOL_OPTIONS ${JAVA_TOOL_OPTIONS} '-javaagent:/root/ArmsAgent/aliyun-java-agent.jar -Darms.licenseKey='${arms_licenseKey}' -Darms.appName='${arms_appName}
### 检查JAVA_TOOL_OPTIONS环境变量。
RUN env | grep JAVA_TOOL_OPTIONS

### 在下方添加自定义Dockerfile逻辑。
### ......

结果验证

约一分钟后,若Java应用出现在应用列表页面中且有数据上报,则说明接入成功。