什么是真正的APM(一)

云智慧(北京)科技有限公司高驰涛

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

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

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

1. EndUser Experience

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

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

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

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

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

2. RuntimeApplication Architecture

What:应用架构映射。

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

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

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

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

与单次请求的应用架构:

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

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

关于作者:

高驰涛(Neeke),云智慧高级架构师,PHP开发组成员,同时也是PECL/SeasLog等多个开源软件作者与贡献者。8年研发管理经验,早期从事大规模企业信息化研发架构,09年涉足互联网数字营销领域并深入研究架构与性能优化。对高并发、高性能、高可用系统设计实现有丰富经验。崇尚规范、敏捷、高效、GettingReal。目前在云智慧致力于APM产品的架构与研发。主要负责PHP、Python、Go等语言的底层扩展与SmartAgent的架构研发。

时间: 2024-11-08 20:31:17

什么是真正的APM(一)的相关文章

[APM] 2个实例+5个维度解读APM技术

为了加深EGO会员之间的相互了解,同时也为大家提供更多线上相互学习交流的机会,EGO正式启动会员群线上分享活动.本文是根据陈靖华分享主题“APM的价值”的内容整理而成. 第二期分享嘉宾:陈靖华,EGO会员.听云CTO.北京基调网络股份有限公司联合创始人之一. 今天我们来聊聊APM技术,首先APM是应用性能监控(Application Performance Monitoring)或应用性能管理(Application Performance Management)的缩写.所谓应用性能管理,就是指

APM,云时代的应用性能优化神器

我们都知道,当今的时代是一个新技术蓬勃发展的时代:大数据.云计算.移动互联网.物联网--作为应用服务开发者的我们,有了很多很好的选择:我们的传统的应用基础架构也开始向云端迁移:我们看一下,现在企业应用IT架构是什么样? 很典型,从用户一直到硬件,很立体的六个层面,从用户到CDN,到防护墙,防护墙内有一堆的服务器,跑的是你的代码,还有一堆的硬盘做数据存储,这是咱们传统企业的应用架构.到了云的时代,因为我要讲的是云时代的APM,架构就变成这样了,后端防火墙的一些东西都隐化了,到了云时代背后的一般都变

apm驱动与板级驱动

apm版本的驱动放在libraries文件夹下,另外一个原生代码版本,在PX4Frimware/src/drivers目录下.注意,对于Pixhawk,apm代码使用的是Pixhawk原生驱动,因为原生驱动已经做得很好了.在非PX4平台上,我们使用AP_InertialSensor_MPU6000.cpp驱动,在PX4平台上,我们就用PX4原生驱动AP_InertialSensor_PX4.cpp

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

在讲了APM的历史.作用和实际案例之后,下面我们来了解一下APM技术分类和实现方式以及它未来的发展趋势.在这之前,我们首先需要了解一下典型的互联网或移动互联网应用的整个应用交付链. 图1 上面这张示意图给出的就是一种典型的互联网应用的应用交付链,在这个应用交付链最左端是部署在机房或云服务商上的相对可控的区域,例如负载均衡.Web服务.应用服务器.数据库.消息总线.存储.等等.越往右就是离应用的最终用户越近的部分,会涉及到机房或云服务的链路,第三方的服务(例如云服务.CDN.推送.地图等等),用户

提升业务价值 创见卓越用户体验 ——APM应用与整合分享

提升业务价值 创见卓越用户体验 --APM应用与整合分享 本文整理自GOPS2016全球运维大会 上海站 APM专场杭州数云运维总监罗兴峰的演讲. 我的分享和前面几位的出发点不太一样,我实际上是APM的用户,前面大家的思路都是如何实现,在腾讯这边他们也是APM的用户,只不过最终自己来解决问题.我自己并不是做互联网技术的公司,我们是一个做业务型的公司,但是我是业务型公司里面的运维,我要保证我们的公司能够很好卖业务的时候才选择了技术. 我今天来的时候碰到了一个情况,和我今天讲的这个事情其实有关系.来

.net C# 中的APM异步编程方式

APM(Asynchrocous Programming Model)方式: 通过委托类异步调用方法: 1.定义一个委托类型: delegate int MyDeletateType(string s); 2.实例化一个委托实例,构造时候传入需要异步调用的函数FuncA var del = new MyDeletateType(FuncA); int FuncA(string a){Console.WriteLine(a);return 1;} 或者 var del = new MyDeleta

揭开移动 APM 的五大神秘面纱

众所周知,移动应用市场总带给人们惊喜,挣钱快.开发门槛低.用户参与感强是移动时代的最大特点.根据 GigaOm 等研究报道,2013年 eBay 3600万新用户中,有40%是移动端用户,总交易额达350亿美元--相比去年增长了88%. 然而,如何在移动端更好地吸引用户则是个非常棘手的问题.因为移动用户非常专注与应用互动,在一个小小的屏幕上触发强烈的交互.用户的指尖面临着多种选择,以至于他们完全无法容忍那些设计不良或效果很差的应用.传言 iTunes 的应用商店共计有120万个应用在线上.And

封装WebService的APM为Async、Await模式利于Asp.Net页面调用

Wcf针对Async.Await指令直接可以返回Task<T>结果,但是老旧的系统中还是会有很多是在用Soap的Webservice.直接在Asp.Net页面调用APM方法确实比较麻烦,其实可以直接用TaskFactory封装APM模式为.Net4.5的async await模式,便于页面调用. 下面上实现代码,不多废话,注意注释: using System; using System.Collections.Generic; using System.Linq; using System.T

Windows平台下利用APM来做负载均衡方案 - 负载均衡(下)

概述 我们在上一篇Windows平台分布式架构实践 - 负载均衡中讨论了Windows平台下通过NLB(Network Load Balancer) 来实现网站的负载均衡,并且通过压力测试演示了它的效果,可以说还是非常的理想的.同时我们也收集到了不少的问题,比如说如何在这种分布式的架构下使用Session,NLB中有一台服务器挂掉了会导致对外暴露的地址无法访问,如果实现服务器之间的同步,如果更好的进行热修复等等,还有我们在上一篇中也提到了NLB所提供的功能是非常简单的,为了回答我们前面提到的问题

C# 异步编程1 APM模式异步程序开发

C#已有10多年历史,单从微软2年一版的更新进度来看活力异常旺盛,C#中的异步编程也经历了多个版本的演化,从今天起着手写一个系列博文,记录一下C#中的异步编程的发展历程.广告一下:喜欢我文章的朋友,请点下面的“关注我”.谢谢 我是2004年接触并使用C#的,那时C#版本为1.1,所以我们就从就那个时候谈起.那时后在大学里自己看书写程序,所写的程序大都是同步程序,最多启动个线程........其实在C#1.1的时代已有完整的异步编程解决方案,那就是APM(异步编程模型).如果还有不了解“同步程序.