本文介绍了采集部署的流程。
1.预检查
确保collector部署在没有线上应用的独立服务器上。
确保已配置JAVA_HOME,JDK版本1.6+。
2.启动
Unix系统,在collector目录下执行:
`./run.sh`
Windows系统, 在collector目录下执行:
`start /b java -jar javaagent-collector.jar`
验证:查看collector/logs/collector.log日志,显示启动成功即部署成功。
如有报错,请参见应用采集器常见问题。
采集器javaagent
1.启动前的配置
确保环境变量已配置JAVA_HOME,否则设置 attach.sh 中 JAVA_HOME 地址为jdk的绝对路径(注意:如客户使用jre而非jdk,需要自己将tools.jar拷贝到${JAVA_HOME}/lib/目录下)。
配置javaagent.config:
profiler.collector.ip = 11.23.45.67
# collector的ipprofiler.collector.port = 9996
# collector的端口profiler.app.name = adamApp
#应用名,少于20个字符的字母、数字组合 。profiler.app.port = 8080
#应用启动端口,应用有很多个不同功能的端口,只配请求的那个端口即可,一个JVM下无论是否一个应用都只配置一个profiler.applicationservertype = TOMCAT
# 应用中间件容器类型,TOMCAT\JBOSS\WEBLOGIC等。
以下非必选配置
配置应用需要检测的Java代码的目录前缀。替换下面示例,多个目录用英文逗号分隔,每个至少2级目录,建议不超过5个;
应用采集时根据精准的调用栈信息,在数据库改动时能同步给出明确的应用改动建议。
如不能全部提供则可以不写,后续在阿里云Adam分析页面进行过滤设置。
`profiler.classpath.whitelist = com.alibaba.javaagent,com.alibaba.adam`
如上面白名单已填写,此处可忽略;如果不清楚白名单列表,填写黑名单也可过滤无用的调用栈信息。
`profiler.classpath.blacklist =org.apache,net.sf`
配置当cpu达到多少时暂停数据采集。
`profiler.cpu.threshold = 85`
系统信息收集间隔,默认15分钟。
`profiler.sys.send.interval = 15`
sql动态信息收集间隔,默认15分钟。
`profiler.sql.dynamic.send.interval = 15`
2.启动方式
启动方式一:不重启应用,agent单次临时监控
javaagent目录增加操作权限;确保agent启动的账号和应用启动账号一致;找到应用的进程号PID,在javaagent目录执行(将${pid}
整体替换为应用的进程号):
Unix系统,执行:
`./attach.sh -p ${pid}`
Windows系统,执行:
`java -cp "%JAVA_HOME%\lib\tools.jar;%cd%\javaagent-bootstrap.jar" com.alibaba.adam.javaagent.bootstrap.AgentAttacher -p ${pid}`
查看javaagent目录下log文件,提示启动成功,应用有流量进入后,查看collector的目录下有data目录且有数据,说明agent启动成功且正确发送数据到collector。如有报错,请参见应用采集器常见问题。
确保应用的PID获取正确。
启动agent的账号和应用启动账号保持一致,且权限也要一致,否则无法监控。(windows下注册表SYSTEM启动的应用无法通过启动方式一启动,原因是账号权限不一致)。
启动方式二:随应用一起启动监控(推荐)
应用增加javaagent配置重启即可(${javaagent_path}
整体替换为javaagent的目录)。
Unix系统
Tomcat:在catalina.sh启动文件最后一个CATALINA_OPTS配置后面增加:
CATALINA_OPTS="$CATALINA_OPTS -javaagent:${javaagent_path}/javaagent-bootstrap.jar"
Jboss:在run.conf启动文件最后一个JAVA_OPTS配置后面增加:
JAVA_OPTS="$JAVA_OPTS -javaagent:${javaagent_path}/javaagent-bootstrap.jar"
Weblogic:在startWebLogic.sh启动文件最后一个JAVA_OPTIONS配置后面增加:
JAVA_OPTIONS="$JAVA_OPTIONS -javaagent:${javaagent_path}/javaagent-bootstrap.jar"
Websphere:
方式1 配置文件增加: JAVA_OPTS="$JAVA_OPTS -javaagent:/home/admin/javaagent/javaagent-bootstrap.jar"
方式2 页面配置: 通用JVM参数(Java Virtual Machine)加上:
name:javaagent value:/home/admin/javaagent/javaagent-bootstrap.jar
k8s集群docker容器:
将javaagent目录放入docker镜像中并对应增加-javaagent配置,一起打包镜像部署。
Windows系统
Tomcat:在catalina.bat启动文件最后一个CATALINA_OPTS配置后面增加:
CATALINA_OPTS="$CATALINA_OPTS -javaagent:${javaagent_path}/javaagent-bootstrap.jar"
Jboss:在run.conf启动文件最后一个JAVA_OPTS配置后面增加:
JAVA_OPTS="$JAVA_OPTS -javaagent:${javaagent_path}/javaagent-bootstrap.jar"
Weblogic:在startWebLogic.cmd启动文件最后一个JAVA_OPTIONS配置后面增加:
JAVA_OPTIONS="$JAVA_OPTIONS -javaagent:${javaagent_path}/javaagent-bootstrap.jar"
Websphere:
方式1 配置文件增加: JAVA_OPTS="$JAVA_OPTS -javaagent:/home/admin/javaagent/javaagent-bootstrap.jar"
方式2 页面配置: 通用JVM参数(Java Virtual Machine)加上:
name:javaagent value:/home/admin/javaagent/javaagent-bootstrap.jar
应用启动后查看应用的日志,显示Java Agent load successfully!
表示启动成功,如报错根据错误原因进行修改,如未显示任何agent信息表示配置路径不对导致未加载。
优缺点
启动方式 | 优点 | 缺点 | 适用场景 |
---|---|---|---|
启动方式一 | 对全新应用无须重启即可设置agent监控。 | 每次应用重启agent需手动启动; 启动agent的账号必须和应用保持一致。 | 应用长期不重启且重启会造成业务影响。 |
启动方式二 | 应用重启agent自动启动,应用采集连续;不用考虑账号权限问题。 | 第一次需重启应用。 | 应用可重启、持续采集(大多数场景)。 |
其他说明
当应用停止:无论方式一、二启动的监控,应用停止则agent停止。
agent主动停止监控:
方式一:重启应用或通过命令./attach.sh -p ${pid} -s。
方式二:去掉配置的javaagent后重启应用。
agent停止监控后想再次做监控,必须重启应用。
方式一:待应用重启后手动启动agent。
方式二:agent随应用重启而启动。
Jboss区分社区版和企业版,如果有jboss.modules.system.pkgs配置项,则无论用方式一、二,都需要先增加com.alibaba.adam.javaagent目录并重启应用才能生效。
数据收集(一般收集1-7天数据)
进入collector目录,将data/下的文件按appname打zip包,分别独立上传ADAM-应用画像,切记一个应用对应一个应用画像,一个应用下不同IP的数据可以打包到一起,但不同appname的数据不能打包到一起,否则上传会报错。
下一步上传应用画像。