Appdynamics
是什么
Appdynamics 是一种服务性能监控/管理工具,主要包含两种功能:
- 终端用户性能体验监控
- 计算资源监控
类似的工具
在 这篇文章 中详细分析了微服务技术选型的内容,其中服务监控部分截图如下
为什么
微服务本身的复杂度带来的问题
微服务的特点决定了功能模块的部署是分布式的,以往在单应用环境下,所有的业务都在同一个服务器上,如果服务器出现错误和异常,我们只要盯住一个点,就可以快速定位和处理问题,但是在微服务的架构下,大部分功能模块都是单独部署运行的,彼此通过总线交互,都是无状态的服务,这种架构下,前后台的业务流会经过很多个微服务的处理和传递,我们难免会遇到这样的问题:
- 分散在各个服务器上的日志怎么处理?
- 如果业务流出现了错误和异常,如何定位是哪个点出的问题?
- 如何快速定位问题?
- 如何跟踪业务流的处理顺序和结果?
我们发现,以前在单应用下的日志监控很简单,在微服务架构下却成为了一个大问题,如果无法跟踪业务流,无法定位问题,我们将耗费大量的时间来查找和定位问题,在复杂的微服务交互关系中,我们就会非常被动。
微服务时代 运维监控是难点
下面是 appdynamics 官方介绍视频中给出的例子,从中可以看出,一个简单的登陆请求,跨越了 5 个服务节点。
appdynamics 会收集同一个一段时间内的处理情况,从中可以查看是否存在性能问题
怎么用
打开 官网
- 点击 What is AppDynamics,查看介绍视频
- 点击 What is AppDynamics,注册之后开始试用
根据网站说明注册账户,注册之后,会收到 appdynamics 发来的注册确认邮件。
根据邮件上的步骤提示,前往个人 SaaS,填写用户名密码,便可以查看 appdynamics Dashboard,根据第三步的提示,前往 appdynamics agent 的安装下载页面。
下面,尝试搭建一个 service,注册到 appdynamics 上,看 service 的运行状况。
为了方便起见,使用 spring.io 上的例子,选取一个简单的 REST service 作为试验使用,执行下面的命令克隆并构建 jar 包
git clone https://github.com/spring-guides/gs-rest-service.git
cd gs-rest-service
cd complete
./gradlew build
将下载的 java agent 压缩包解压后放到 complete 的目录下,重命名为 appagent
,最后使用 java 命令指定 agent 运行上一步构建的 jar 包。这里 是 appdynamics java agent 的使用说明,如果在下面的安装使用过程中遇到问题,请参考解决。
java -javaagent:./appagent/javaagent.jar -jar build/libs/gs-rest-service-0.1.0.jar
在启动的过程中,spring boot 的日志输出与 appdynamics 的输出交互打印。从下面可以看出,spring boot 服务器已经启动了,但是 appdynamics 的输出还在持续。
等到日志停止输出,如果发下没有错误提示,就说明已经正常启动,接下来打开 appdynamics 查看,此时可以发现已经监控了我们使用 agent 监控的服务。
给刚刚启动的服务发送几次请求
上面就是一个简单的 appdynamics java agent 的简单搭建使用过程,复杂的使用情景,请参照官网文档学习使用。
关于文中提到的 java agent,相关概念可以参看 这里 和 这里。
本文了参考以下资源:
- https://www.cnblogs.com/wintersun/p/6747355.html
- https://www.youtube.com/watch?v=sFuFotJD1vM
- https://mp.weixin.qq.com/s/zFJokAv8lSQejGFTGJTJeQ
- https://www.appdynamics.com/
- https://36kr.com/p/5115119.html
- http://www.infoq.com/cn/articles/javaagent-illustrated
- https://zeroturnaround.com/rebellabs/how-to-inspect-classes-in-your-jvm/