本文主要从以下几个列举对APM的认识:

-什么是APM工具

-为什么要用APM工具,APM工具的价值在哪里;

-什么样的APM工具适合于传统金融业;

-如何用好APM工具;

   -精准告警

   -深入分析

   -可视化展示

-如何与传统监控融合

-APM工具与大数据之间的探讨

注:文中APM的一些解释来自互联网运维大牛的干货,比较零散,不一一列举出处。

1、什么是APM工具,它的分类有哪些

APM,应用性能管理,通过对关键业务系统进行监测、告警与优化,不断改善业务可靠性与稳定性,为客户提供良好的服务,提升核心竞争力。

最早的APM主要是网络为中心,对基础设备的性能数据进行收集与加工,并提供给企业客户,相当于提供一种事后数据的简单处理与告警监控功能。随着APM市场的发展,目前的APM工具在性能监控的基础上有了进化,更加关注于运维数据分析,比如客户端到端的体验情况怎么样?性能瓶颈在哪里?而且当前的APM工具以数据分析为中间实现了更好的可视化,更快更精准预警,更强的问题关联定位等特性。

2、为什么要用APM工具,APM工具的价值在哪里

我们运维人员经常会遇到这样一些场景:

-客户投诉系统慢了或无法访问;

-看资源、查日志、查数据库;

-找开发、找客服、找业务、找客户问情况;

-偶发性?无法定位或定位不准?应急方案?重启试试?

……

上述场景在运维当中很普遍,遇到上面的困难后往往会完善监控提高故障告警及时率,通过额外代码开发量增加各种各样的日志格式,完善手册、培训、应急演练等等方式去提高故障应急处理能力。

APM的出现可以改善上面提到的繁琐的运维工作,提高应用运行质量:

于IT管理层:用户体验可量化,并建立以用户体验的考核体系,并与同业的性能体验比较可以发现自身差距并进行优化,提升客户满意度;

于IT运维人员:实现了以应用运行情况分析为核心的运维,提高运维价值,对运维数据可视化,更快发现、更准确定位、更精准的做出应急决策;

于业务:掌握用户体验关键业务的关系,提高业务决策。

3、什么样的APM工具适合于传统金融业

根据应用性能监控的目标不同,APM工具主要可以分为2大类,一类是客户端、一类是服务端:

以下是听云技术副总裁吴静涛对上述几类APM工作的定义:

1)客户端类

主动模拟拨测:主动式监控,客户端监控。主要通过覆盖全面的监测网络,部署自动化的监测工具。

页面插入代码:被动式、客户端监控。主要通过在客户端浏览器插入JavaScript代码以采集最终用户的性能体验,W3C推出了Web性能API标准,现在已经可以做大非常细粒度的监控。

客户端插件采集:因为移动端应用有多种方式,原生应用、Hybrid App以及Web App,因此监控的方式也多样化,有通过手机浏览器自动拨测、嵌入SDK、HTML5页面内插件、JSBridge等方式。

2)服务端类

服务端旁路:部署定位后通过SPAN,TAP旁路应用访问流量进行Sniffer,解析网络报文后再进行各类TCP协议分析和性能采集(NPM)。它的优点是非侵入式,对生产影响最小,缺点是难以适配多种协议,无法定位到问题代码等。

应用服务器端代理:通过在应用代码中埋点来实现性能监控BCI(ByteCode Instrumentation)技术。优点是可实现代码级的监控,缺点是它是侵入式的,对性能有轻微影响。

对于传统的金融企业,在系统性能分析与监控上我们经常会面临以下困难:

-规模越来越大,运维成本越来越大:我们部署了大量应用系统,这些应用系统的架构往往是100个系统就有100个架构,涉及的开发团队各异,我们希望有一些更方便的方式进行系统性能分析与监控,比如不需要应用改造、有简单的可视化配置、不影响现有系统的性能等;

-我们有监控工具实现应用可用性的监控,但对于应用性能我们运维能力很弱:我们部署了大量从基础设施、服务器硬件、系统服务、应用服务可用性的监控,但是对于应用在数据中心内运行得到底快不快并不知情,更不用说客户体验方面的性能问题,我们希望在应用性能监控方面可以更快发现、更接近客户体验;

-运维的量在增加、人员在减少,我们需要一个更加自动化的性能分析能力:以应用性能告警为例,它应该包括从数据采集、分析、告警、辅助定位、应急等能力,这就需要我们在应用性能分析过程中需要有告警动态基限自动学习能力、自动告警、高度可视化、渠道节点关联的能力,以此来提高运维人员的性能分析能力;

针对上述的问题,再看看上面提到的5个APM工具的比较:

-主动模拟拨测:适合于网络问题的带来的问题,是采用样本监控分析的方式,更适合互联网应用,是主动监控方式。

-页面插入代码:侵入式,需要在浏览器上嵌入代码,是被动监控方式。

-客户端插件采集:侵入式(需要开发部门配合),需在页面代码中插入插件,可以实现代码级的监控,效果依赖开发部门的支持。

-应用服务器端代理:侵入式,需要开发部门配合,可以实现代码级的监控,效果依赖开发部门的支持。

-服务端旁路:非侵入式,运维部门便可以推广使用,能获得服务及应用、交易级别的监控;

综上,基于传统金融企业现存系统多,IT运维开发能力相对弱的现状,服务端旁路的APM工具更适合优先引入解决企业应用系统的性能问题。

下面的议题主要从服务端旁路APM工具进行分析.

4、如何用好APM工具

在IT企业内部,我们会发现有一些好的工具因为没有用好而被废弃,有些可能是因为工具本身不满足预期需求,有些可能是因为人员变动;有些则可能推广使用慢导致技术过时;对于APM工具也同样会有这样的问题,那么应该如何将APM工具使用好呢?

在讲如何使用好APM工具前,我先简单讲讲从IT运维向IT运营分析的转型,即通过监控的分析,更快、更准确的发现问题;通过应用性能分析提前发现潜在问题,并提供可视化的分析工具降低故障定位时间、提升用户体验;通过大数据平台提供更深入的运维、业务数据分析,指导运维、业务的决策。基于IT运营分析的定位,APM工具的使用目标可以考虑以下:

-整合一个可视化的应用性能面板,方便运维技术人员、运维管理人员、应用运营人员在任意时间看到应用性能情况,包括:应用服务是否可用;应用交易量、成功率等维度指标是否正常;应用是否变慢等等;同时,应用性能面板还能监控到服务节点到节点之间的运行性能。

-以应用系统为节点,将应用系统的运行情况是否健康通过综合的分析抽象出来,而不需要运维人员通过复杂的方式整合分析某个应用系统性能是否正常;

-对关键的渠道类应用系统的性能问题进行关联配置,提供更快的告警,并提供问题定位的辅助手段,提高故障应急解决效率,实时的知道甚至预测何时可能出现问题,在用户还没有察觉前解决问题。如果做得更好的话,APM还能提供故障自愈的功能;

-提供多维、自定义的应用系统运行性能报表与实时交易级的数据监控,提供给不同层面的人员;

-为大数据分析提供数据,不仅从运维角度看数据,还要从业务角度看数据,通过APM工具将业务数据、性能信息进行整合,提供大数据平台分析,进一步挖掘指导业务的数据;

对于上述的目标,建议采用以下方式用好工具:

1)精准告警

(1)应用可用性:以应用服务为节点,判断应用服务是否崩溃,实现了交易服务级的监控告警;

(2)应用间交易错误:对业务接口的致命异常报错信息,以及异常整体信息进行汇总分析并进行告警;

(3)网络请求响应时间:至少实现数据中心内部服务节点间的网络请求响应耗时分析,对出现短板的节点性能问题进行告警;

(4)自动故障定位:通过对交易流的数据进行采集并关联,自动判断触发告警的根源节点,并告警问题原因;

(5)利用好动态告警阀值:根据历史数据快速学习告警阀值,自动调整告警阀值在不同时间、不同接收者的设置;

(6)复合告警指标:设置更为符合业务特点的告警指标;

2)深入分析

(1)一笔业务从开始到结束将经过多个节点,比如一笔秒杀业务缓慢,可能是秒杀系统应用、数据库、中间件的性能问题,也可能是关联系统的性能问题,也可能是资源、带宽、运营商的问题。用好APM,就要将重要的渠道系统进行完整的配置,实现端到端交易追踪,反映每一笔业务在各自应用服务节点中实际经过的路径,各路径所消耗时间、处理结果,运维人员可以按需找到交易的处理情况进而判断交易问题出现在什么地方;

(2)完成重要交易的配置整合后,需要结合分析策略,以及前面提到的精准告警结合起来,实现自动告警、问题定位的分析;

3)可视化展示

(1)工具的功能再强大,如果难上手的话将很容易被抛弃,所以需要针对不同的人员提供多维度的可视化信息展示,并溶合在日常运维工作过程中;

(2)可视化的信息展示,包括报警信息的查看与处理、实时交易检索与整体分析的报告、以及工具的后台简易的配置功能。

5、如何与传统监控融合

APM不是万能的。

传统金融企业内部肯定会有很多关于监控的工具,这些工具通过一定时间的积累,为企业各种应用系统定制了监控指标及自动化监控解决方案,构成了企业IT运行情况最重要的一面镜子。

而APM工具往往是采用一种通用的方案进行开发,它更适用于一些监控、分析方案比较通用的运维场景,同时传统监控工具在服务器、硬件、系统软件等方面的数据采集也更优于APM工具。

所以APM工具是现有企业里监控系统的一个补充,补充监控系统在应用业务级、客户体验、故障定位、性能运行情况等方面的监控。另外,APM工具的成本也推荐主要用于重要的渠道类应用系统。

6、与大数据之间的探讨

服务端旁路的APM工具中,往往可以获取以下信息:

-交易报文类的信息:返回码、交易码、操作码、成功率、渠道标识、交易响应率、交易笔数、响应时间、流水号、金融交易里的金额、账户等关键数据

-网络通讯信息:丢包、TCP重传、带宽、连接成功率

-系统软件信息:数据库、中间件使用响应、并发、连接数情况

从上述获取的数据来看,APM己经初步具备了向大数据提供数据来源的基础,APM采集的这类数据相比应用日志的数据有以下优势:

-采集数据的同时不影响应用系统性能

-采集的数据格式更为统一规范

-采集的数据更快

这些数据可以梳理应用架构、服务访问关系、应用交易指标变化、交易追踪等数据分析,将有助于IT运维向IT运营分析转型。

但如果要让APM工具为大数据提供更多业务级的数据,以此为业务分析支撑、风险控制等提供帮助,还需要APM工具更进一步,比如为应用系统提供一些简易的服务,让应用系统更为简易的提供交易级的数据。

聊聊对APM的理解的更多相关文章

  1. java并发:AQS的简单理解

    简介: AQS全称 AbstractQueuedSynchronizer,提供了一个基于FIFO(先进先出)队列,可以用于构建锁或者其他相关同步装置的基础框架. ReentrantLock.Semap ...

  2. 什么是真正的APM?

    近年来APM行业被越来越多的企业所关注,尤其是在2014年末,NewRelic的成功上市,更加激发了人们对这个行业前景的无限遐想.那么究竟什么是APM?APM的目的是什么?要求我们做什么?有不少企业对 ...

  3. 170413、怎么精确理解leader布置的任务(技术外的话)

    [缘起] 和一个同学交代了一个很重要的事情,结果执行的结果并不是自己想要的,微微生气之余,简单的聊聊“如何精确的理解leader布置的任务”. [员工角度的潜在困惑] 1)leader讲了很多,脑子记 ...

  4. AQS源码的简单理解

    概念 AQS全称 AbstractQueuedSynchronizer. AQS是一个并发包的基础组件,用来实现各种锁,各种同步组件的.它包含了state变量.加锁线程.等待队列等并发中的核心组件. ...

  5. [C1W4] Neural Networks and Deep Learning - Deep Neural Networks

    第四周:深层神经网络(Deep Neural Networks) 深层神经网络(Deep L-layer neural network) 目前为止我们学习了只有一个单独隐藏层的神经网络的正向传播和反向 ...

  6. web前端知识点

    一.CSS问题 1.flex布局 display:flex; 在父元素设置,子元素受弹性盒影响,默认排成一行,如果超出一行,按比例压缩 flex:1; 子元素设置,设置子元素如何分配父元素的空间,fl ...

  7. OpenTelemetry - 云原生下可观测性的新标准

    CNCF 简介 CNCF(Cloud Native Computing Foundation),中文为"云原生计算基金会",CNCF是Linux基金会旗下的基金会,可以理解为一个非 ...

  8. 聊聊高并发(二十五)解析java.util.concurrent各个组件(七) 理解Semaphore

    前几篇分析了一下AQS的原理和实现.这篇拿Semaphore信号量做样例看看AQS实际是怎样使用的. Semaphore表示了一种能够同一时候有多个线程进入临界区的同步器,它维护了一个状态表示可用的票 ...

  9. google开发新人入职100天,聊聊自己的经验&教训 个人对编程和开发的理解 技术发展路线

    新人入职100天,聊聊自己的经验&教训 这篇文章讲了什么? 如题,本屌入职100天之后的经验和教训,具体包含: 对开发的一点感悟. 对如何提问的一点见解. 对Google开发流程的吐槽. 如果 ...

随机推荐

  1. Python写自己主动化之邮件发送(匿名)

    为了可以实现邮件发送功能.首先.我们须要了解一下邮件的发送过程是什么样子的,此处不再具体说明,请大家自行搜索或查看p=438">http://www.sogouqa.com/?p=43 ...

  2. tomcat7项目启动报错java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory

     报这个错说明用的是tomcat7 打开myeclipse,Preferentces->MyEclipse->Servers->Tomcat->Tomcat 6.x ,载入 ...

  3. C#递归累计到父行

    搞了半天 写了一个算法,希望能帮到需要的朋友 效果如下 水电费用是由 就是部门水费和电费累加的,而部门水费由科室水费累加起来的 表结构 DataTable dt = new DataTable(); ...

  4. Mac下删除安装的pkg

        Mac下的安装和删除都比windows更加简单清晰,这点在dmg方式下非常明显,但很多时候我们会使用pkg来进行安装,这样的安装想删除就有点麻烦了. 比如,我安装了Golang这个pkg用于g ...

  5. OSX下git diff/merge 可视化工具 P4Merge 环境配置步骤

    先下载 step1:首先,把要运行的命令放入外部包装脚本中,创建一个merge包装脚本,名字叫做extMerge,让它带参数调用P4Merge. $ cat >> /usr/local/b ...

  6. 关于Cocos2d-x中音效重复播放问题的解决

    在做一些动作的时候,有时候只希望播放一次音效,但是触发音效的前提条件是要按着某个按钮,如果直接把播放音效的语句写在MOVED的case中,就会重复播放音效 解决方法就是把播放音效的语句写在BEGAN的 ...

  7. spring 优点

    spring 的优点?1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦 2.可以使用容易提供的众多服务,如事务管理,消息服务等 3.容器提供单例模式支持 4.容器提供了AOP技术,利用它很容易实 ...

  8. e1087. 用For循环做数组的遍历

    The for statement can be used to conveninently iterate over the elements of an array. The general sy ...

  9. C++ 有用的书籍

    C++ 有用的书籍Essential C++ 中文版C++ Primer Plus 第6版中文版C++ Primer中文版(第5版) #include <iostream> /* run ...

  10. Graphviz 对网状结构进行可视化

    Graphviz 是一款开源的,免费的图结构的可视化软件,只需要描述清楚图中的顶点,边的信息,Graphviz 可以自动化的对图进行布局,生成对应的图片: Graphviz 采用DOT 的这种语言来描 ...