平时做开发、测试,遇到bug无疑是让人头痛的事情,哼哧哼哧调试好半天才搞定,浪费了本该逍遥快活的大好时间。
今天推荐一个Gartner魔力象限的APM应用性能监控产品AppDynamics,一个应用可以一直免费使用。
本文主要包含以下4部分内容
- 注册AppDynamics Saas账号
- 安装监控代理Agent
- 监控效果简介
- 使用AppDynamics进行故障排查
注册AppDynamics Saas账号
AppDynamics官网地址:
https://www.appdynamics.com/
在官网首页右上角,有一个大大的紫色按钮“START FREE TRIAL”,点它开始注册账号。(如果已经注册并登陆了,点它便是打开账号管理界面)
注册界面如下,注意选择注册类型为Saas,“CREATE A FREE ACCOUNT”注册账号
注册成功后登陆账号,在首页点击紫色按钮“START FREE TRIAL”进入管理控制界面
在管理控制界面选择SAAS菜单,等待一会儿初始化完后,可以看到有一个14天的试用期限,在14天内java、.net、PHP、Node.js、Python以及浏览器,手机APP监控等都各有5个试用许可。试用时间14天完了过后每种类型就只能使用一个了,而且历史数据只能看到一天的。不过对于开发测试来说,一天的数据完全够了,而且还可以一直免费使用国际一流产品;
“Show Controller Login Info”可以查看AppDynamics主界面Controller的连接信息,后面可以直接使用下面的URL打开Controller控制台
点击“Launch AppDynamics”打开Controller控制台,进入监控平台主界面
安装监控代理Agent
从菜单Home→Getting Started→Getting Started Wizard进入配置向导
本次以JAVA应用为例
在配置向导中注意第2步,选择使用的JDK类型,IBM或非IBM的JDK。然后下载Agent代理
解压代理程序包(我目前下载的Agent版本是4.4.3.22593,不同时间注册的版本号可能会不同)
编辑AppServerAgent-4.4.3.22593\ver4.4.3.22593\conf目录下的controller-info.xml文件
添加应用名、模块名(当多个节点组成集群时,模块名起成一样的)、节点名
在应用容器中引入AppDynamics代理
以Tomcat为例
修改Tomcat bin目录下的cataline.bat文件,在第一行加入以下内容,以引入javaagent.jar参数
set CATALINA_OPTS=%CATALINA_OPTS% -javaagent:"F:\software\Appdynamics\AppServerAgent-4.4.3.22593\ver4.4.3.22593\javaagent.jar"
保存,重启Tomcat应用。
注意,这种修改方法适用于通过startup.bat脚本方式启动Tomcat的情况。
重启完成后打开Controller控制台,在Applications中看到应用信息,则表示代理配置成功。
监控效果简介
应用仪表板
事务TOP排名
事务评分
应用整体访问量,以及慢事务、错误事务所占比例以不同颜色显示
所有事务
使用AppDynamics进行故障排查
慢事务追踪
从Troubleshoot中去查看所有慢事务,选择一条双击进行故障追踪
可以看到该操作有访问数据库,数据库访问消耗456ms占总时长的22.6%,77.4%的时间消耗在应用内部,点击Drill Down继续追踪
此处可以看到该请求在后台执行时的堆栈调用过程,查询了13次数据库
查看慢方法排行,可以看出是newLinkedHashSet这个方法耗时占比较高
看到这里,我已知道这个请求慢的原因,因为这是一个数据报表查询操作,在后台处理时,由于结果不能通过一个SQL语句查询出来,所以分了多次操作,每查询一次都要做一次结果处理,然后再以这个处理结果做为条件去数据库查询数据……
错误事务排查
我在测试程序时发现有表格数据总是删除不了,到这里看找到了删除失败的那个操作,双击追踪
继续Drill Down
看错误日志是删除的表格数据有外键关联,未做级联删除造成的
AppDynamics的使用体验暂时只写这么多。
AppDynamics Saas平台目前只能注册国外的服务器,国内目前还没有,由于其已被Cisco收购,今年国内的Saas平台也有望上线。
国内可以访问 http://www.appdynamics.cn打400寻求支持。