APM浅析
APM(Application Performance Management & Monitoring)一种基于云的性能监控服务(SaaS),以非侵入式监听探针,收集应用关键指标,生成分析报表展现,并且提供监控告警服务等。支持移动端、浏览器、服务器等多角度监控。提供了最终用户体验监控,应用拓扑的发现与可视化,用户自定义业务分析,应用组件深度监控,IT运营分析等五个功能维度提供服务。相较于传统的zabbix、nagios等运维监控工具,更专业、更深入应用细节、更方便定位问题细节、更精确洞悉故障代价。
国外比较知名的公司有new relice,国内有OneAPM、听云、透视宝、云智慧、监控宝等。各家所提供服务同质化严重、差异不大,整个市场可谓是群魔乱舞、多方角逐。其中以new relice作为行业领军,创立于2008年,于2014年顺利IPO,管理层12人拥有70%的投票权,创始人Cirne持有24.2%的股份,也是最大股东。并由此开创了APM这一行业。
APM核心功能
最终用户体验监控:测量应用和终端用户之间所有交互方式的响应时间、健康状况。
应用拓扑映射:自动检测和展示所有应用集群所涉及的组件。需要知道在任意指定时间内使用了哪些应用组件,特别是当某个问题对用户造成影响的时候。
业务事务分析:检测和测量由单个用户发起的请求所涉及的所有应用组件活动中的响应时间。提供分析仪表板很容易地看出哪一个交易失败的受到影响的用户是谁。这与测量单个web页面的响应时间是不同的维度。
应用组件深度监控:检测和测量代码在应用容器中执行耗时,离线转储分析,自动检测线程死锁,线程状态,资源等待,线程堆栈内容和代码分析等。
IT运营分析:预测分析和容量规划,以实现积极主动的管理。面向APM的生命周期管理,经验上技术运行团队总是疲于应对生产故障。支持性能预测,趋势和容量的分析,当前阶段的APM解决方案帮助技术运行团队,及早进行性能分析,在应用性能出现瓶颈实现解决问题,减少停机、提高性能和优化利用资源。
性能衰减
当然做到如此细致入微的监控,其本身也带来了一定幅度的性能衰减。笔者在云服务平台执行对比测试,采用如下配置:
| 类型 | 硬件 | 软件&配置 |
| 应用服务 | 8核8G |
java1.866 JAVA_OPTS="$JAVA_OPTS -Xms3200m -Xmx3200m -XX:NewRatio=3 -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=82 -XX:+CMSClassUnloadingEnabled" tomcat7.0.67 protocol="org.apache.coyote.http11.Http11NioProtocol" |
| 缓存服务 | 4G | Redis2.8.17 |
| 数据库 | 8核16G | MySQL-5.5 |
测试场景:以查询为主,查询缓存与查询数据频率为1:1。
测试策略:利用jmeter作为测试工具。
以下为是否启用监控探针对比结果图:




笔者只使用过听云所提供的服务,以下为通过官网描述收集到的对比结果:
| 指标 | New Relic | 听云 | OneAPM | 云智慧 | 监控宝 | 透视宝 |
| Ruby | O | X | O | O | O | O |
| Python | O | O | O | O | O | O |
| Java | O | O | O | O | O | O |
| .Net | O | O | O | O | O | O |
| PHP | O | O | O | O | O | O |
| Node.js | O | O | O | O | O | O |
| Android | O | O | O | O | O | O |
| IOS | O | O | O | O | O | O |
| win Phone | X | X | X | X | X | X |
| Browser | O | O | O | O | O | O |
| Apache | X | X | O | O | O | O |
| NGINX | X | X | O | O | O | O |
| Lighttpd | X | X | X | O | O | O |
| Resin | X | X | X | O | X | X |
| IIS | X | X | X | O | O | X |
| Tomcat | X | X | O | X | O | O |
| WebLogic | X | X | O | O | O | O |
| WebSphere | X | X | O | O | O | X |
| JBOSS | X | X | X | O | O | O |
| Exchange-Server | X | X | X | O | O | X |
| EQMail-Server | X | X | X | O | O | X |
| 标准Email | X | X | X | O | O | X |
| Tuxedo | X | X | X | O | O | X |
| MSMQ | X | X | X | O | X | X |
| IBM MQ | X | X | X | O | X | X |
| FioranoMQ server | X | X | X | O | X | X |
| RabbitMQ | O | X | X | X | X | X |
| Redis | O | O | O | O | O | O |
| Memcached | X | X | O | O | O | O |
| MySQL | O | O | O | O | O | O |
| Postgres | O | X | X | O | X | O |
| MongoDB | O | X | O | O | O | O |
| ORACLE | X | O | X | O | O | O |
| MS SQL Server | X | O | X | O | O | O |
| DB2 | X | X | X | O | X | X |
| Backup SQL | X | X | X | O | X | X |
| Informix | X | X | X | O | X | O |
| SQLite | X | X | X | O | X | X |
| Docker | X | X | X | X | X | O |
整体来说虽然New Relic作为行业领军,但是国外的网站有被墙的风险。国内多家公司群雄逐鹿,俨然已是一片红海。既然是卖服务,国内的公司相对而言更接地气一点。相比较而言,云智慧所提供的监听指标更多,
但同时适合企业自身的才是最好的。接触过听云的销售人员,个人感觉对于自身产品的了解程度都不够深入,给予我们的产品讲解也没有说明白。卖服务整体市场要能给予良好的服务体验,明确的指导用户使用。
总结
New Relic的创业故事里提到,他凑够10万美元启动资金,独自耗时1年开发出产品雏形。换算为人民币则大致为60万,在此简单推算作为国内企业而言,如果购买APM服务一年花费30万,其实就可以考虑自主开发。适合企业自身需求定制,同时为大数据驱动的企业商业智能提供了庞大的数据支持。
APM浅析的更多相关文章
- 老生常谈系列之Aop--Spring Aop原理浅析
老生常谈系列之Aop--Spring Aop原理浅析 概述 上一篇介绍了AspectJ的编译时织入(Complier Time Weaver),其实AspectJ也支持Load Time Weaver ...
- SQL Server on Linux 理由浅析
SQL Server on Linux 理由浅析 今天的爆炸性新闻<SQL Server on Linux>基本上在各大科技媒体上刷屏了 大家看到这个新闻都觉得非常震精,而美股,今天微软开 ...
- 【深入浅出jQuery】源码浅析--整体架构
最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...
- 高性能IO模型浅析
高性能IO模型浅析 服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(Blocking IO):即传统的IO模型. (2)同步非阻塞IO(Non-blocking ...
- netty5 HTTP协议栈浅析与实践
一.说在前面的话 前段时间,工作上需要做一个针对视频质量的统计分析系统,各端(PC端.移动端和 WEB端)将视频质量数据放在一个 HTTP 请求中上报到服务器,服务器对数据进行解析.分拣后从不同的 ...
- Jvm 内存浅析 及 GC个人学习总结
从诞生至今,20多年过去,Java至今仍是使用最为广泛的语言.这仰赖于Java提供的各种技术和特性,让开发人员能优雅的编写高效的程序.今天我们就来说说Java的一项基本但非常重要的技术内存管理 了解C ...
- 从源码浅析MVC的MvcRouteHandler、MvcHandler和MvcHttpHandler
熟悉WebForm开发的朋友一定都知道,Page类必须实现一个接口,就是IHttpHandler.HttpHandler是一个HTTP请求的真正处理中心,在HttpHandler容器中,ASP.NET ...
- 【深入浅出jQuery】源码浅析2--奇技淫巧
最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...
- 浅析匿名函数、lambda表达式、闭包(closure)区别与作用
浅析匿名函数.lambda表达式.闭包(closure)区别与作用 所有的主流编程语言都对函数式编程有支持,比如c++11.python和java中有lambda表达式.lua和JavaScript中 ...
随机推荐
- Java中Properties集合总结
一:定义 表示一个持久的集,可以存在流中或者从流中加载.用来读取Java的配置文件,在Java中为.properties为后缀名的文本文件. 二:特点 是 Hashtable子类,map集合方法都可以 ...
- yum被锁定:Another app is currently holding the yum lock; waiting for it to exit…
yum被锁定无法使用,错误信息截图如下: 解决方法:rm -rf /var/run/yum.pid 来强行解除锁定,然后你的yum就可以运行了
- 破解webstorm
补丁下载链接:http://idea.lanyus.com/ 第一步:将补丁复制到安装目录的bin目录下 第二步:修改同目录下的 WebStorm.exe.vmoptions 和WebStorm64. ...
- 解题(PockerCompare-扑克牌比较大小)
题目描述 扑克牌游戏大家应该都比较熟悉了,一副牌由54张组成,含3~A.2各4张,小王1张,大王1张.牌面从小到大用如下字符和字符串表示(其中,小写joker表示小王,大写JOKER表示大王):3 4 ...
- Java System
从jdk10中摘录自认为几个比较重要的方法 系统类包含几个有用的属性和方法.它不能被实例化. 系统类提供的工具包括标准输入.标准输出和错误输出流:对外部定义的属性和环境变量的访问:加载文件和库的方法: ...
- jquery+jquery.pagination+php+ajax 无刷新分页
<!DOCTYPE html> <html ><head><meta http-equiv="Content-Type" content= ...
- PL/SQL Dev连接Oracle弹出空白提示框的解决方法分享
第一次安装Oracle,装在虚拟机中,用PL/SQL Dev连接远程数据库的时候老是弹出空白提示框,网上找了很久,解决方法也很多,可是就是没法解决我这种情况的. 出现这种问题,解决方法大概有这几种: ...
- maven 常用参数使用详解
前言 作为java开发按人员,使用maven构建似乎成为了工作中平常的事情,但有时会遇到一些问题,感到困惑,于是我整理出来,方便其他同学更好的使用,以后会慢慢更新这个文章. 命令介绍 -DskipTe ...
- Visual Studio 2015 自动生成 的大文件xxx.vc.db的删除问题
用vs2015创建Visual C++项目,编写生成后,每次都会生成一个project_name.VC.db文件,而且会随着你工程修改运行变的越来越大. project_name.VC.db是sqli ...
- 【Linux 线程】常用线程函数复习《四》
1.线程属性的设置 /************************************************************************* > File Name: ...