近年来APM行业被越来越多的企业所关注,尤其是在2014年末,NewRelic的成功上市,更加激发了人们对这个行业前景的无限遐想。那么究竟什么是APM?APM的目的是什么?要求我们做什么?有不少企业对APM的理解其实是有偏差的,本文将向您阐述一个真正完整的APM概念。

APM 是Application Performance Managment的缩写,字面意思很容易理解,“应用性能管理”。它是由Gartner归纳抽象出的一个管理模型。注意,这个管理模型的由来,是经过大量调研与分析后的归纳与抽象,这些切实需求由来已久,IT从业者们对它的理解与实践也几乎是从IT诞生至今就已开始,这并不是一次发明。

从上图中可以清楚看到APM模型中一共分了五个层次,下面就这五个层次逐一说明。

1. End User Experience

What:终端用户体验。APM首先关注的是终端用户对应用性能的真实体验。

Why:不是监测点的,也不是骨干网核心机房的,而是真实用户的切实体验到的性能。可能一个电影播放服务的性能优化做得很棒,但是用户打开浏览器或打开APP,发现点播某个电影时却慢得离谱,问题会出在哪里呢?用户不清楚点击播放按钮之后,发生的一切事情,用户只是感知到了慢、不能播放、往复播放等等很多不好的体验,用户反馈了问题或投诉了,产品和研发不能准确重现,问题来了。

也许用户浏览器太过陈旧,也许是某个JS脚本的兼容性问题,也许用户本地网络丢包严重、首字节响应时间很长,也许是服务器集群网络不稳定、某组机器脱离了均衡池…… 太多也许了。而这些猜测是,最不好把控的,就是用户客户端环境,Server端好比自家的菜地,菜好菜赖总是清楚的,可再好的菜卖到饭馆,厨子怎么样菜农怎么知道?

帮助应用管理者准确、详尽地了解真实的用户体验是什么样子,这是APM首先要解决的问题。

How:对于Web应用来说,在用户请求到的每一个页面下面追加一段js脚本,用js收集并发回数据,是最普遍的做法;对于移动App来说,在APP发布前build进SDK,通过系统与语言Hook来收集数据,也是很直截了当的。至于这二者具体的做法,容后文再细聊,此篇不赘。下列简单截取了几张图片,来源透视宝。

2. Runtime Application Architecture

What:应用架构映射。

Why: 曾经与多名CTO深入探讨过这个问题(其中不乏已经上市的企业):你们有完整的应用架构图吗?得到的回答不少是闪烁其词的,有的CTO很直接地摇摇头。更有甚者是这么回答的,公司应用系统年代久远,就算目前所有的架构师专职绘图,也很难在短时间内完成全部的应用架构图。

大多数企业的应用架构,是黑盒或灰盒,这就是现状。

假如应用架构图是完整的,那么还有一个需求即:针对于某次故障请求的真实请求链路拓扑。是的,负载均衡一共分发了N台机器作为集群,但承接某次具体请求的是集群中的某些机器,那么,是哪些机器?它们当时的性能是什么样子?请求顺序是怎样的?

How: 云智慧透视宝实现了应用的完整架构:

与单次请求的应用架构:

可以看到,在上面的示例中,完美了解决了我们在应用架构层面遇到的问题。

具体做法,我们将在后续文章中单独介绍,其中包含了web容器插件、编程语言Hook插件等技术细节。

3. Business Transactions

What:应用事务分析

Why:当然这里说的事务不是DB事务。这里指应用与用户交互的操作事务。举个例子:用户登录网站后,使用搜索功能搜索了耳机,从耳机列表中,选择了自己喜欢的耳机,打开查看详情,款式音效价格看来都不错,放入购物车,然后打开购物车进行购买,完成支付。

整个例子中,我们所说的事务可以抽象为:

登录 -> 搜索 -> 挑选 -> 购买 -> 支付

所以,单纯的记录登录成功率、购买成功率的意义不会至于大到分析整个应用的健壮稳定程度,准确地分析出整体事务的相互影响象限,才会。

How:熟悉GA的朋友都知道,GA花费了大量的力量以实现上述我们所描述的应用事务。但令开发者痛苦的是,必须要在代码中“埋点”,即在代码中的关键位置写入一行代码,以实现在关键位置的追踪,而业务总不是一成不变的,于是随着业务发展,“埋点”这个事情使得应用总在不停地修改、发布、修改、发布。

其实,用户在客户端(浏览器、APP)所进行的所有操作,很明显,是有序的。要完成应用事务的记录,要完成的需求其实只是两个惟一性:

1、确定上下文的事务操作,是同一个用户;

2、确定所有事务操作的每一个步骤,是惟一一个动作。

于是我们便可对某一个应用取得的数据分析出以下应用事务,而整个过程中,用户不需要修改任何一行代码(无须埋点)。具体的实现细节,后续会专门出文介绍。

4. Deep Dive Component Monitoring

What:深度应用诊断

Why:关键词是“深度”。比如某在线商城,接到了上海用户的反馈,登录慢,不响应。这其中可能出现问题的环节太多了:CDN可能有问题、Web Server或DB Server负载可能过高、业务代码中可能有bug、中间件可能不响应、甚至任何一个环节的物理磁盘或物理网卡可能出现了故障,等等。想要准确地找到问题所在,即使不经一番寒彻骨,八成也要先打个冷战。

How:这里有几个难点是:

1、在不修改用户代码的前提下,取得代码运行时性能数据;

2、终端用户数据、运行时性能数据、物理指标数据、服务运行指标数据,有效关联;

3、有太多需关注的点,怎样方便快捷地部署采集端;

4、不影响或很少影响原应用性能。

以上也正是APM提出的需求。

一键式的、无干预的安装部署与更新升级,以替代繁琐的部署与升级;采用各个语言的底层Hook来针对性地编写语言Agent插件,以此实现不修改用户代码而取得运行时性能数据;通过主机、应用、服务、请求的惟一标识,来进行有效的数据关联;通过特有的数据采样算法来达到2%以下的性能影响;一体化的数据模型,以替代密集的数据孤岛。这段特征,描述的是云智慧透视宝的Smart Agent。(同样,实现细节请待后文。)

5. Analytics / Reporting

What:分析与报告

Why:简单地讲,APM对数据有两点要求:

1、数据处理要及时,必要时候要做到实时的处理,问题可能随时都会发生;

2、数据的分析报告要精确,大量的数据本身是无价值的,按照业务模型进行精确分析、预测才有其价值体现。

How:APM数据是天然的大数据,符合4V特征。因此难点几乎与大数据处理的难点相重合:

1、数据模型语言要统一

2、数据存储与查询

3、大量复杂数据的关系建模

可以看到,云智慧透视宝架构中Pipe Cluster的设计是对流数据的处理的核心部分,分布式、集群部署的Pipe Worker可实现实时的消息消费,同时基于此架构的Data Platform与Alter Engine可实时对任意维度的数据进行分析与预警。目前数据采集量720亿条/每天,共存储200,000亿条数据。(后续将对此架构进行专文介绍。)

下图是对比了国内外APM行业的各厂商对以上APM模型中五个层次的认识与支持程度:

转载于:https://www.cnblogs.com/beautiful-code/p/6124558.html

什么是真正的APM?相关推荐

  1. 开源性能监控工具APM之Skywalking和Pinpoint的实测对比

    作者:zollty,资深程序员和架构师,私底下是个爱折腾的技术极客,架构师社区合伙人! 零,什么是APM? APM(ApplicationPerformance Management)是一种应用性能监 ...

  2. AppDynamics赵宇辰:硅谷APM独角兽,打造DevOps领域的智能大脑

    近来,关于机器学习的报道很多,国内外的大型互联网企业都在着手对机器学习的研究.对应用性能的高效管理,首先要了解应用的一手数据,通过传统的数据获取方式已经不能满足企业的发展和市场环境,这就需要借助机器学 ...

  3. 阿里云应用性能管理(APM)产品-应用实时监控服务(ARMS)技术解密 资料下载...

    直播大纲 1. 应用性能管理(APM)背景介绍 2. 分布式链路追踪的现状与使用场景 3. ARMS分布式链路追踪的技术实现 4. 最佳实践 (1) 全息排查+场景链路 (2) 前端监控与应用监控融合 ...

  4. 云智慧CEO:APM技术难点在于前端数据采集与后端数据分析的结合

    应用性能管理(APM)可能对于大多数国内企业来说,还比较陌生.企业用户利用APM可以对自身的关键业务应用进行监测.告警与优化,并不断改善业务可靠性与稳定性,提升核心竞争力.然而在研发出一款成功的APM ...

  5. apm最高的记录_2020年秋季APM专业课推荐

    APM专业课 APM専門科目/APM Major 日基课=日文名 英基课=英文名 会计与金融(AF) 市场营销(M) 创新与经济学(IE) 经营战略与管理(SMO) 日本語基準 Japanese Ba ...

  6. PHP APM fiery 更新 v0.5.8.0

    PHP APM fiery v0.5.8.0 发布了,更新如下: fixed logpusher repush the log bug fixed server jamed by lock bug l ...

  7. 开源APM监控Pinpoint的快速部署和使用

    版权声明:本文为博主原创文章,未经博主允许不得转载.欢迎访问我的博客 https://blog.csdn.net/smooth00 Pinpoint是用于大规模分布式系统的APM工具.它是在Dappe ...

  8. APM之基于事件的异步模式(EAP)-2

    EAP是针对Windows窗体开发提供的方便使用的异步模式,可以在IDE中可视化的设计和使用 // The System.Net.WebClient class supports the Event- ...

  9. 阿里巴巴陈武:通过亿级用户App的实践验证,锤炼高质量APM体系

    在这个飞速运转的移动App时代,有一句格言--快总比慢好.这也使得对移动App性能的管理.优化需求变得越来越急切,不可忽视. \\ 2016年8月18-19日,由极客邦.InfoQ和听云联合主办的AP ...

  10. WebRTC音频预处理单元APM的整体编译及使用

    正文 然而本次优化仍然没能用上整套VoE,因为VoE不仅仅包含音频预处理,它将音频编码模块.传输模块一并融入了引擎,而bill的项目需要使用既有的编码.传输层,因此使用整个VoE对我来说显得冗余且不可 ...

最新文章

  1. Nacos 1.3.0 发布,一个修炼内功的版本:全新内核构建!
  2. Windows 全部调试符号包下载
  3. 递归和分治思想及其应用
  4. 前端学习(1189):事件基本使用
  5. 记一次生产频繁出现 Full GC 的 GC日志定位
  6. 分布式系统:SrpingBoot整合Zookeeper和Dubbo的版本匹配问题
  7. Python数据分析:pandas玩转Excel(二)
  8. php开发环境配置 iis6+php-5.2.1-Win32+mysql-5.0.18-win32+phpMyAdmin-2.7.0-pl2快速安装
  9. 【水果识别分类】基于matlab形态学水果识别分类【含Matlab源码 1132期】
  10. 缩短bch码能用matlab,BCH码编译码matlab仿真.doc
  11. 360安全卫士 免杀
  12. C语言中对程序设计的理解,浅论《C语言程序设计》的学习方法
  13. BP神经网络分类算法
  14. 8.2 自制操作系统: risc-v Machine寄存器说明mstatus和mstatush
  15. shell加密工具shc的安装
  16. 【python】牛客竞赛语法入门班选择结构习题 python解法
  17. matlab中电压跟踪型pwm,新型数字锁相环实现对电压信号的无差跟踪
  18. 《稀缺》塞德希尔·穆来纳森 / 埃尔德·沙菲尔
  19. 双系统(win10Ubuntu16.04)开机引导设置
  20. Win10 WiFi连接不上,如何重新配置DNS地址

热门文章

  1. 关于iOS沙盒的目录结构和获取
  2. iOS Hacker Xcode7免登录开发者账号打包ipa
  3. 线程安全与可重入函数
  4. 【Linux】gcc和g++的区别
  5. Leetcode题库 19.删除链表的倒数第N个结点(双指针法 C实现)
  6. [BUUCTF-pwn]——wdb_2018_2nd_easyfmt
  7. c语言编译成功,[C/CPP系列知识] 那些程序C语言可以编译通过但C++无法编译成功 Write a C program that won’t compile in C++...
  8. java iterator如何倒序输出
  9. Drools学习 入门实例
  10. 嵌入式系统开发怎样快速度入门