全部产品
云市场

采集部署

更新时间:2019-10-28 17:24:45

操作步骤(示例以Unix为主)

部署前必读

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

  • 解压后有两个目录:collector和javaagent。collector是统一收集server,单独部署在没有线上应用的服务器上(数据处理时避免对线上应用造成影响);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 server启动部署

  1. `./run.sh`

验证:查看collector/logs/collector.log日志,显示启动成功或报错信息

agent部署

1.启动前的配置

  • 确保环境变量已配置JAVA_HOME,否则设置 attach.sh 中 JAVA_HOME 地址为jdk的绝对路径
  • 配置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,执行启动:

./attach.sh -p ${pid}

查看javaagent目录下log文件,提示启动成功,应用有流量进入后,查看collector/data下有数据生成说明启动成功,并正确发送到collector

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

增加javaagent后重启应用即可

  1. ##以Unix下Tomcat为例:在catalina.sh 最后一个CATALINA_OPTS配置后面增加
  2. CATALINA_OPTS="$CATALINA_OPTS -javaagent:${javaagent_path}/javaagent-bootstrap.jar"

应用启动后查看应用的日志,显示Java Agent load successfully! 表示启动成功,如报错根据错误原因进行修改,如未显示任何agent信息表示配置路径不对导致未加载。

优缺点

启动方式 优点 缺点 适用场景
启动方式一 对全新应用无须重启即可设置agent监控 每次应用重启agent需手动启动; 启动agent的账号必须和应用保持一致 应用长期不重启且重启会造成业务影响
启动方式二 应用重启agent自动启动,应用采集连续;不用考虑账号权限问题 第一次需重启应用 应用可重启、持续采集(大多数场景)

补充说明

启动方式一

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

启动方式二

  • ${javaagent_path}替换为用户javaagent目录的绝对路径
  • 如果是windows系统,编辑.bat文件
  • 如果是Jboss,将CATALINA_OPTS替换为JAVA_OPTS

    1. JAVA_OPTS="$JAVA_OPTS -javaagent:/home/admin/javaagent/javaagent-bootstrap.jar"
  • 如果是Weblogic,将CATALINA_OPTS替换为JAVA_OPTIONS

    1. JAVA_OPTIONS="$JAVA_OPTIONS -javaagent:/home/admin/javaagent/javaagent-bootstrap.jar"
  • 如果是websphere

    1. 方式1 配置文件增加: JAVA_OPTS="$JAVA_OPTS -javaagent:/home/admin/javaagent/javaagent-bootstrap.jar"
    2. 方式2 页面配置: 通用 JVM 参数(Java Virtual Machine)加上:
    3. name:javaagent value:/home/admin/javaagent/javaagent-bootstrap.jar
  • 如果是k8s集群docker容器,将javaagent目录放入docker镜像中并对应增加-javaagent配置,一起打包镜像部署

其他说明

  • 当应用停止:无论方式一、二启动的监控,应用停止则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的数据如果打包到一起,上传会处理失败