本文介绍了采集部署的流程

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的ip profiler.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的数据不能打包到一起,否则上传会报错。

下一步 上传应用画像