近年来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模型中五个层次的认识与支持程度:

转自:什么是真正的APM? - 让编程成为一种习惯 - 博客园

【转】从五个方面解读APM相关推荐

  1. 重磅指挥棒!2023年国资委央企指标考核体系从两利四率到一利五率变化解读

    前几天,2023年的第三个工作日,国资委召开了中央企业负责人会议,提出了优化中央企业经营考核指标体系的六个指标 -- 一利五率,目标是一增一稳四提升.一增,就是确保利润总额增速高于全国GDP增速.一稳 ...

  2. [APM] 解读APM技术分类和实现方式

    在讲了APM的历史.作用和实际案例之后,下面我们来了解一下APM技术分类和实现方式以及它未来的发展趋势.在这之前,我们首先需要了解一下典型的互联网或移动互联网应用的整个应用交付链. 图1 上面这张示意 ...

  3. 深度学习核心技术精讲100篇(五十五)-深度解读分布式定时任务框架

    前言 我们先思考下面几个业务场景的解决方案: 支付系统每天凌晨1点跑批,进行一天清算,每月1号进行上个月清算 电商整点抢购,商品价格8点整开始优惠 12306购票系统,超过30分钟没有成功支付订单的, ...

  4. 企业获客的五种方式解读

    传统的获客方式是被动的,主要分为以下几种 地推:地推是地面推广人员的简称,指针对以街道.高校和社区为主要组成部分的各种地面市场资源,实地宣传来进行传播的一种市场营销推广方式.这种方式是最普遍的一种,不 ...

  5. Flume环境搭建_五种案例(转)

    Flume环境搭建_五种案例 http://flume.apache.org/FlumeUserGuide.html A simple example Here, we give an example ...

  6. 基因组浏览器IGV的安装和图形解读

    IGV (Itegrative Genomics Viewer)是一款功能强大的综合性基因组学可视化工具,能够将基因组的变异情况进行可视化,因此广泛应用于基因组学的研究中.IGV的开发得到了美国国立癌 ...

  7. 第一章 Arm 架构科普解读(2023新)

    第一章 启发式 Arm 科普解读 第二章 CPU微架构 第三章 系统微架构 第四章 总线微架构 第五章 监控微架构 第六章 安全微架构 第七章 虚拟化微架构 第八章 Armv9-A 架构 第九章 Ar ...

  8. [机缘参悟-29]:鬼谷子-内揵篇-与上司交往的五种层次

    目录 前言: 一.原文 二.五种层次解读 第一种层次:揵而反之(刚者易折.对抗双输) 第二种层次:因危与之(君子不立危墙.趋利避害) 第三种层次:飞之(欲擒故纵.以退为进) 第四种层次:迎而御之(充分 ...

  9. #(四)、(五)拟合数学方法的发展简介

    以现代数学直角坐标系的眼光评价历史上的拟合公式,我们可以看到从简单到复杂的过程:直线.线段.平面图形(二分.三角.正方.圆).弧.抛物线.螺旋线(曲线).复杂曲线.多项式.幂次.立体几何(三维).四维 ...

最新文章

  1. 关于新冠肺炎的一切|回形针
  2. og-bin=mysql-bin_init_connect + binlog 记录 mysql 操作日志
  3. webshpere下载地址
  4. [转] 学习,思维三部曲:WHAT、HOW、WHY(通过现象看本质)
  5. SQL Server 问题之 排序规则(collation)冲突
  6. synchronized【Java】中使用的demo
  7. linux系统里常用的抓图工具,Linux系统下屏幕截图常用方法
  8. 安卓虚拟机与Hyper-V冲突
  9. 互逆的压缩与解压(洛谷P1319、P1320题题解,Java语言描述)
  10. 「小程序JAVA实战」小程序的留言和评价功能(70)
  11. 报纸、电商、PC互联网颠覆传统行业,带来新的生态,自媒体也一样
  12. 30天自制操作系统之叠加处理
  13. 申请美国J1签证加急最快多久办好?
  14. charset参数 sqluldr2_SQL*Loader 的使用sqlldr和sqluldr2方法详解
  15. 【肌电信号】基于matlab GUI MUAP波形【含Matlab源码 736期】
  16. CenterOS7安装redis
  17. access 链接mysql数据库教程_ACCESS实例教程(数据库的编程)
  18. javax.validation.ValidationException: HV000028: Unexpected exception during isValid call.出错怎么办
  19. layer弹出层自适应高度,垂直水平居中
  20. c语言中正弦函数的定义,三角函数基本概念 | 玄数

热门文章

  1. BSOJ 4062 -- 【清华集训2012】串珠子
  2. 利用GridView显示SD卡的图片和两段文字
  3. Open Source Talk 01期 |邵赛赛《我的开源之旅》
  4. MySQL的DDL语言和DML语言(增删改)
  5. 单片机学习笔记————51单片机实现按住一个独立按键不松手的加速匀速触发
  6. windows操作系统的自启动项
  7. 是什么决定了项目经理的高度?
  8. AI生成小说 开源项目
  9. 孙鑫源java_「 孙鑫源 」孙鑫源的名字解释 - 名字网
  10. 人人都在说的数据中台是什么?附9张架构图优质模板!