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浅析的更多相关文章

  1. 老生常谈系列之Aop--Spring Aop原理浅析

    老生常谈系列之Aop--Spring Aop原理浅析 概述 上一篇介绍了AspectJ的编译时织入(Complier Time Weaver),其实AspectJ也支持Load Time Weaver ...

  2. SQL Server on Linux 理由浅析

    SQL Server on Linux 理由浅析 今天的爆炸性新闻<SQL Server on Linux>基本上在各大科技媒体上刷屏了 大家看到这个新闻都觉得非常震精,而美股,今天微软开 ...

  3. 【深入浅出jQuery】源码浅析--整体架构

    最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...

  4. 高性能IO模型浅析

    高性能IO模型浅析 服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(Blocking IO):即传统的IO模型. (2)同步非阻塞IO(Non-blocking  ...

  5. netty5 HTTP协议栈浅析与实践

      一.说在前面的话 前段时间,工作上需要做一个针对视频质量的统计分析系统,各端(PC端.移动端和 WEB端)将视频质量数据放在一个 HTTP 请求中上报到服务器,服务器对数据进行解析.分拣后从不同的 ...

  6. Jvm 内存浅析 及 GC个人学习总结

    从诞生至今,20多年过去,Java至今仍是使用最为广泛的语言.这仰赖于Java提供的各种技术和特性,让开发人员能优雅的编写高效的程序.今天我们就来说说Java的一项基本但非常重要的技术内存管理 了解C ...

  7. 从源码浅析MVC的MvcRouteHandler、MvcHandler和MvcHttpHandler

    熟悉WebForm开发的朋友一定都知道,Page类必须实现一个接口,就是IHttpHandler.HttpHandler是一个HTTP请求的真正处理中心,在HttpHandler容器中,ASP.NET ...

  8. 【深入浅出jQuery】源码浅析2--奇技淫巧

    最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...

  9. 浅析匿名函数、lambda表达式、闭包(closure)区别与作用

    浅析匿名函数.lambda表达式.闭包(closure)区别与作用 所有的主流编程语言都对函数式编程有支持,比如c++11.python和java中有lambda表达式.lua和JavaScript中 ...

随机推荐

  1. Java的二分查找

    今天学习了二分查找,虽然代码简单,但还是要有必要,记录一下今天的学习的. public class TestBrinarySeach { public static void main(String[ ...

  2. Genomic signatures of evolutionary transitions from solitary to group living(独居到社会性的转变)

    1.摘要 群居性的进化是进化的主要过渡之一,但其背后的基因组变化是未知的.我们比较了10种蜜蜂的基因组,它们的社会复杂性各不相同,代表了社会进化中的多种独立过渡,并报告了三项主要发现. 第一,许多重要 ...

  3. Java中的冒泡排序和选择排序

    //冒泡排序 public class Test5 { public static void main(String[] args) { int[] arr = {12,2,25,89,5}; bub ...

  4. js中获取一个对象里面的方法和属性的javascript

    <script type="text/javascript"> var obj = { attribute:1, method:function() { alert(& ...

  5. leetcode 数组类型题总结

    1,removeDuplicates(I) int removeDuplicatesI(vector<int>& nums){ // 重新组织数组,同 removeDuplicat ...

  6. jenkins权限控制

    一.插件安装 插件:Role-based Authorization Strategy版本:2.3.2 二.全局安全配置 进入Jenkins后点击系统管理进入全局安全配置 当插件安装好的时候,授权策略 ...

  7. python网络爬虫《http和https协议》

    一.HTTP协议 1.官方概念: HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文 ...

  8. MongoDB之$关键字及$修改器$set $inc $push $pull $pop

    一.查询中常见的  等于   大于  小于  大于等于  小于等于 等于:用':' 大于:用'$gt' 小于:用'$lt' 大于等于:用'$gte' 小于等于:用'$lte' MongoDB的操作就是 ...

  9. 关于vs2010开发的ASP项目部署到XPSP2系统上出现找不到Reportviewer.XX.文件的解决方案

    尝试方法如下: 1.将webform.dll.winform.dll.common.dll三个引用直接复制到服务器的Bin目录,未解决问题,提示无法正确加载,程序及已关闭等. 2.SQLSysClrT ...

  10. PTA 7-2 符号配对(栈模拟)

    请编写程序检查C语言源程序中下列符号是否配对:/*与*/.(与).[与].{与}. 输入格式: 输入为一个C语言源程序.当读到某一行中只有一个句点.和一个回车的时候,标志着输入结束.程序中需要检查配对 ...