全部产品

采集部署

更新时间:2020-02-10 12:17:43

部署前必读

  • 支持sun/oracle JDK、open JDK1.6及以上版本,不支持IBM JDK

  • 解压后有两个目录:collector和javaagent。collector是统一收集器,单独部署在没有线上应用的服务器上(数据处理时避免对线上应用造成影响);javaagent目录拷贝到需要监控的应用服务器上,和应用部署在一起,用于采集数据;

  • 确保collector和agent具有操作权限(windows系统无须关注,unix/linux需要对目录增加级联操作权限chmod -R 775 collector/

  • collector相当于server端,可对应1-20个agent,一个应用服务器部署一个agent;如应用是分布式多机器,根据负载均衡的情况,只抽样几台部署agent即可

  • 先部署collector,后部署应用agent,应用要与collector网络可达(用于推送数据做集中脱敏等处理),部署collector的机器需要JDK 1.6+版本,JVM内存4G以上。磁盘与监控的应用数量、监控时长、业务活跃度、sql数量及sql大小有关,不会出现爆发式增长,可观察半天来估算,一般一个应用监控7天数据量在1G以下。

  • agent要求:应用部署在JDK1.6及以上版本,待监控的应用有300M的可用JVM heap空间。服务容器支持tomcat/jboss/weblogic,也支持k8s集群docker容器镜像部署,对于websphere支持

  • agent监控访问oracle数据库的sql和代码调用栈,请确保agent监控周期内的操作覆盖全。如有周期性任务,需在有这些任务运行时监控,否则数据采集不全

统一收集器collector

1.预检查

  • 确保collector部署在没有线上应用的独立服务器上
  • 确保已配置JAVA_HOME,JDK版本1.6+

2.启动

  1. Unix系统,在collector目录下执行:
  2. `./run.sh`
  3. Windows系统, collector目录下执行:
  4. `start /b java -jar javaagent-collector.jar`

验证:查看collector/logs/collector.log日志,显示启动成功即部署成功。

如有报错参考常见问题 https://help.aliyun.com/knowledge_detail/142336.html?spm=a2c4g.11186623.6.558.25112f93DLWln8

采集器javaagent

1.启动前的配置

  • 确保环境变量已配置JAVA_HOME,否则设置 attach.sh 中 JAVA_HOME 地址为jdk的绝对路径(注意:如客户使用jre而非jdk,需要自己将tools.jar拷贝到${JAVA_HOME}/lib/目录下)
  • 配置javaagent.config:
    1. `profiler.collector.ip = 11.23.45.67` # collector的ip
    2. `profiler.collector.port = 9996` # collector的端口
    3. `profiler.app.name = adamApp` #应用名,少于20个字符的字母、数字组合
    4. `profiler.app.port = 8080` #应用启动端口,应用有很多个不同功能的端口,只配请求的那个端口即可,一个JVM下无论是否一个应用都只配置一个
    5. `profiler.applicationservertype = TOMCAT` # 应用中间件容器类型,TOMCAT\JBOSS\WEBLOGIC等

以下非必选配置

  1. 配置应用需要检测的java代码的目录前缀。替换下面示例,多个目录用英文逗号分隔,每个至少2级目录,建议不超过5个;
  2. 应用采集时根据精准的调用栈信息,在数据库改动时能同步给出明确的应用改动建议。
  3. 如不能全部提供则可以不写,后续在阿里云Adam分析页面进行过滤设置
  4. `profiler.classpath.whitelist = com.alibaba.javaagent,com.alibaba.adam`
  5. 如上面白名单已填写,此处可忽略;如果不清楚白名单列表,填写黑名单也可过滤无用的调用栈信息
  6. `profiler.classpath.blacklist =org.apache,net.sf`
  7. 配置当cpu达到多少时暂停数据采集
  8. `profiler.cpu.threshold = 85`
  9. 系统信息收集间隔,默认15分钟
  10. `profiler.sys.send.interval = 15`
  11. sql动态信息收集间隔,默认15分钟
  12. `profiler.sql.dynamic.send.interval = 15`

2.启动方式

启动方式一:不重启应用,agent单次临时监控

javaagent目录增加操作权限;确保agent启动的账号和应用启动账号一致;找到应用的进程号pid,在javaagent目录执行(将${pid}整体替换为应用的进程号):

  1. Unix系统,执行:
  2. `./attach.sh -p ${pid}`
  3. Windows系统,执行:
  4. `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。如有报错参考常见问题 https://help.aliyun.com/knowledge_detail/142336.html?spm=a2c4g.11186623.6.558.25112f93DLWln8

  • 确保应用的pid获取正确
  • 启动agent的账号和应用启动账号保持一致,且权限也要一致,否则无法监控。(windows下注册表SYSTEM启动的应用无法通过启动方式一启动,原因是账号权限不一致)

启动方式二:随应用一起启动监控(推荐)

应用增加javaagent配置重启即可(${javaagent_path}整体替换为javaagent的目录)

Unix系统
  1. Tomcat:在catalina.sh启动文件最后一个CATALINA_OPTS配置后面增加:
  2. CATALINA_OPTS="$CATALINA_OPTS -javaagent:${javaagent_path}/javaagent-bootstrap.jar"
  3. Jboss:在run.conf启动文件最后一个JAVA_OPTS配置后面增加:
  4. JAVA_OPTS="$JAVA_OPTS -javaagent:${javaagent_path}/javaagent-bootstrap.jar"
  5. Weblogic:在startWebLogic.sh启动文件最后一个JAVA_OPTIONS配置后面增加:
  6. JAVA_OPTIONS="$JAVA_OPTIONS -javaagent:${javaagent_path}/javaagent-bootstrap.jar"
  7. Websphere:
  8. 方式1 配置文件增加: JAVA_OPTS="$JAVA_OPTS -javaagent:/home/admin/javaagent/javaagent-bootstrap.jar"
  9. 方式2 页面配置: 通用 JVM 参数(Java Virtual Machine)加上:
  10. name:javaagent value:/home/admin/javaagent/javaagent-bootstrap.jar
  11. k8s集群docker容器:
  12. javaagent目录放入docker镜像中并对应增加-javaagent配置,一起打包镜像部署
Windows系统
  1. Tomcat:在catalina.bat启动文件最后一个CATALINA_OPTS配置后面增加:
  2. CATALINA_OPTS="$CATALINA_OPTS -javaagent:${javaagent_path}/javaagent-bootstrap.jar"
  3. Jboss:在run.conf启动文件最后一个JAVA_OPTS配置后面增加:
  4. JAVA_OPTS="$JAVA_OPTS -javaagent:${javaagent_path}/javaagent-bootstrap.jar"
  5. Weblogic:在startWebLogic.cmd启动文件最后一个JAVA_OPTIONS配置后面增加:
  6. JAVA_OPTIONS="$JAVA_OPTIONS -javaagent:${javaagent_path}/javaagent-bootstrap.jar"
  7. Websphere:
  8. 方式1 配置文件增加: JAVA_OPTS="$JAVA_OPTS -javaagent:/home/admin/javaagent/javaagent-bootstrap.jar"
  9. 方式2 页面配置: 通用 JVM 参数(Java Virtual Machine)加上:
  10. 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-应用画像,切记一个应用对应一个应用画像,不同appname的数据如果打包到一起,上传会处理失败