为Java应用安装探针后,ARMS即可开始监控Java应用,您可以查看应用拓扑、调用链路、异常事务、慢事务和SQL分析等一系列监控数据。本文介绍如何为Java应用手动安装探针。
对于部署在Kubernetes环境的应用,不推荐手动安装探针,建议通过安装组件的方式接入ARMS。具体操作,请参见容器服务ACK环境自动安装探针以及通用Kubernetes环境自动安装探针。
前提条件
检查您的网络环境。具体要求,请参见Java应用监控网络配置。
检查您的JDK版本。具体要求,请参见支持的JDK版本。
进程最大堆内存需大于256 MB。
安装探针
登录ARMS控制台,在左侧导航栏单击接入中心。
单击Java应用监控卡片,然后单击手动安装。
下载探针。
方法一:手动下载。在Java应用监控面板根据提示下载对应的探针。
方法二:使用wget命令下载。根据您的地域下载对应的探针安装包。
解压探针。
进入探针安装包所在目录,并执行以下命令将安装包解压到任意工作目录下。
unzip AliyunJavaAgent.zip -d /{user.workspace}/
说明{user.workspace}是示例目录,请替换为真实的目录。
添加AppName和LicenseKey参数。
在Java应用监控面板获取到对应的LicenseKey。AppName代表接入到ARMS的哪一个应用中,您可以根据需要自定义您的应用名,在分布式架构中,同一个应用内可以包含多个对等的实例。
请通过下列两种方式,添加AppName与LicenseKey。
方法一:将接入脚本中的
{LicenseKey}
与{AppName}
替换为您从控制台获得的LicenseKey以及该应用对应的AppName。方法二:脚本中不填写LicenseKey和AppName的相关信息,在探针包的arms-agent.config文件中添加以下配置。
arms.licenseKey={LicenseKey} arms.appName={AppName}
将接入命令添加到启动命令中。
将
{user.workspace}
替换成实际探针安装包的解压目录,将demoApp.jar替换为真实的JAR包地址。说明如果您使用的探针版本在2.7.3.5以下,请将本文中的AliyunJavaAgent/aliyun-java-agent.jar替换为ArmsAgent/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}/AliyunJavaAgent/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}/AliyunJavaAgent/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}/AliyunJavaAgent/aliyun-java-agent.jar -Darms.licenseKey={LicenseKey} -Darms.appName={AppName}
Resin
启动Resin进程时,在
conf/resin.xml
或conf/resin.conf
中添加以下标签。<server-default> <jvm-arg>-javaagent:{user.workspace}/AliyunJavaAgent/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}/AliyunJavaAgent/aliyun-java-agent.jar -Darms.licenseKey={LicenseKey} -Darms.appName={AppName}
在conf/app-default.xml文件中添加以下标签。
<library-loader path="{user.workspace}/AliyunJavaAgent/plugin"/>
如需在一台服务器上部署同一应用的多个实例,可以通过-Darms.agentId参数(逻辑编号)来区分接入的JVM进程,例如:
java -javaagent:/{user.workspace}/AliyunJavaAgent/aliyun-java-agent.jar -Darms.licenseKey={LicenseKey} -Darms.appName={AppName} -Darms.agentId=001 -jar demoApp.jar
重启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/AliyunJavaAgent.zip" -O AliyunJavaAgent.zip
# 解压探针。
RUN unzip AliyunJavaAgent.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/AliyunJavaAgent/aliyun-java-agent.jar -Darms.licenseKey='${arms_licenseKey}' -Darms.appName='${arms_appName}
### 检查JAVA_TOOL_OPTIONS环境变量。
RUN env | grep JAVA_TOOL_OPTIONS
### 在下方添加自定义Dockerfile逻辑。
### ......
结果验证
约一分钟后,若Java应用出现在
页面中且有数据上报,则说明接入成功。