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. 根据获取的窗口句柄遍历窗口Edit控件

    网上说遍历窗口控件有两种方法: 1),使用EnumChildWindows,没有深究,     学习网址如下:http://blog.sina.com.cn/s/blog_60ac1c4b010116 ...

  2. 03_java基础(六)之CRUD实现

    1.简单实现 package com.day01.station.dao; /** * Created by Administrator on 2018/2/1. */ import java.sql ...

  3. springboot-day02-整合mybatis与简单使用

    前言:该文章是紧接上一篇文章springboot-day01-引入如何读取配置文件以及helloWorld 1.springboot整合mybatis 1.添加jar包依赖 <?xml vers ...

  4. Jenkins+svn+ant+tomcat持续集成

    转载自 http://www.cnblogs.com/liuhaixia/p/7267473.html Jenkins是基于Java开发的一种持续集成工具,用于监控秩序重复的工作.通过Jenkins+ ...

  5. 【Scheme】序列的操作

    1.序列的表示 序列 序列(表)是由一个个序对组合而成的,具体来说就是让每个序对的car部分对应这个链的条目,cdr部分则是下一个序对. 对于1->2->3->4这个序列我们可以表示 ...

  6. cdh5.13.1 升/降级SPARK2 (parcel安装的同理)

    下载相关的CSD包与parcel包.parcel包SHA 放置在相关位置. 注意:重启cloudera-scm-server 从parcel 里删除旧包,启用新包 csd目录里其它JAR包要删除

  7. matlab画图标题自定义字体大小

    title('标题','fontname','Times New Roman','Color','b','FontSize',20);字体是Times New Roman,颜色是蓝色('b'即blue ...

  8. CentOS 查看是否安装软件包

    1. rpm包安装的,可以用rpm -qa看到,如果要查找某软件包是否安装,用 rpm -qa | grep "软件或者包的名字" 2. deb包安装的,可以用dpkg -l能看到 ...

  9. CentOS 安装Oracle

    转自----------------https://www.cnblogs.com/startnow/p/7580865.html 环境:VM12+centos7 x86_64 minimal - 最 ...

  10. python字典设置初始值setdefault()与get()

    L = ['you','me','you','me','you','me','you'] D = {} for i in L: D[i] += 1 print(D) 执行以下代码会发生错误 Trace ...