一、什么是应用级监控系统
所谓应用级监控,也有被称做应用监控、交易监控、业务监控。与传统的面向服务器、网络、操作系统、数据库等系统级监控相区别的是,应用级监控更关注从应用角度来进行监控,包括对应用程序(应用进程、端口、应用队列等)、交易处理(交易量、交易耗时、交易成功率、返回码等)、业务处理(业务统计、业务体验)等方面的监控。
二、为什么要有应用级监控系统
在传统的运维中,由于开放式平台标准化产品的特点,通过使用IBM tivoli、HP OpenView、Oracle EM等标准化的商用监控产品,数据中心能够方便快捷地实现面向主机、服务器、网络、存储、环境动力、操作系统、数据库、中间件等标准化软硬件产品的监控,并实现了各个专业的监控事件和容量性能数据的集中展现和处理。
但是近年来,随着用户体验要求的不断增强,传统这种标准软硬件产品的系统级监控工具,已经远远不能满足高标准下的运维要求了。这是因为:
1)很多故障发生时,在基础服务层面并未明显体现出来。比如说业务在使用系统时,发现有交易或业务处理非常缓慢,但监控系统并没有收到关于操作系统、网络、数据库、中间件等层面的自动报警。
2)系统级监控缺少对各业务应用交易的运行情况(交易量、成功率、平均响应时间等)的监控,难以全面、准确、及时地掌握业务应用系统的运行情况。
3)系统级监控无法自动发现应用拓扑关系和交易访问路径,并以此为基础实现故障应用系统的自动定位
4)系统级监控无法将操作系统、中间件、数据库、存储、网络、环境动力等IT基础设施专业事件与各应用系统的业务交易或系统交易事件关联起来进行自动故障树分析。
上述系统级监控的缺陷,导致了IT运维中专业事件处理量大、业务影响分析困难、故障根源定位慢、故障节点难以自动隔离恢复等问题。相比于系统级监控,应用级监控更贴近用户和业务,更能够在第一时间反映出用户体验、业务使用和交易处理的真实情况,是在系统级监控基础上的进一步发展和提升。
三、如何建设应用级监控系统
与系统级监控一样,应用级监控只是一个统称,前面也提到了,应用级监控包含了对应用程序(应用进程、端口、应用队列等)、交易处理(交易量、交易耗时、交易成功率、返回码等)、业务处理(业务统计、业务体验)等多方面、多指标、多维度的监控。针对不同的需求,有不同的实现思路、方法和工具。因此,建设一个应用级监控系统,首先需要考虑的是我们的监控需求、想要监控的对象和实现的监控目标到底是什么,然后才能有针对性的建设应用级监控系统。需求不明确,不能针对性地选择实现方法和工具,最终得到的结果肯定与预期是大相径庭的。
从应用级监控的实现方式上,可以分为如下几大类:
1)在服务端实现的应用级监控
服务端旁路:部署定位后通过SPAN,TAP旁路应用访问流量进行Sniffer,解析网络报文后再进行各类TCP协议分析和性能采集(NPM)。它的优点是非侵入式,对生产影响最小,缺点是难以适配多种协议,无法定位到问题代码等。运维部门方便推广使用,能获得服务及应用、交易级别的监控。使用服务器端旁路进行应用监控的典型产品是天旦公司的BPC。
应用服务器端代理:通过在应用代码中埋点来实现性能监控BCI(ByteCode
Instrumentation)技术。优点是可实现代码级的监控,缺点是它是侵入式的,对性能有轻微影响,可以实现代码级的监控,效果依赖开发部门的支持。使用应用服务器端代理的典型产品包括DynaTrace、听云等。
应用日志分析:通过对文本的应用日志进行实时的采集,提炼出需要的各个字段和记录,进行加工、清洗、分析、计算等,实现精确到秒级的应用级监控功能。优点是非侵入式,只收集和分析日志,对生产影响小,缺点是监控的详细程度依赖于应用日志中记录的内容,有时需要对应用日志进行适应性改造。使用日志分析的典型产品包括splunk、日志易等,开源工具方面有ELK。
数据库流水分析:通过监控工具连接到数据库流水表,定时抽取流水表中的记录导入到工具平台中,再对流水记录进行处理,实现应用级监控功能。优点是流水表记录已经是格式化的数据,比较方便分析和计算;缺点是数据抽取可能会对源系统有一定的性能影响,且实时性上会有分钟级的延时。
2)在客户端实现的应用级监控
主动模拟拨测:主动式、客户端监控。主要通过在部署客户端部署自动化的监测工具,进行网页或网站的可用性和性能监测。适合于网络带来的问题,更适合互联网应用。比如博睿公司提供的网络监测服务。
页面插入代码:被动式、客户端监控。主要通过在客户端浏览器插入JavaScript代码以采集最终用户的性能体验,W3C推出了Web性能API标准,现在已经可以做大非常细粒度的监控。侵入式,需要在浏览器上嵌入代码,是被动监控方式。
客户端插件采集:因为移动端应用有多种方式,原生应用、Hybrid App以及Web App,因此监控的方式也多样化,有通过手机浏览器自动拨测、嵌入SDK、HTML5页面内插件、JSBridge等方式。
四、优秀的应用级监控产品推荐
由于应用级监控的范围很广,且由于应用的非标准化特点,市场上也没有一个产品能够涵盖应用级监控的方方面面。这里推荐几款适合做应用级监控的产品。这些产品各有特定的用途,在建设应用级监控系统时,可根据用户自身的需求选用合适的产品和工具:
1、splunk:日志分析类的工具的顶级产品。可以通过对应用日志进行实时的采集,提炼出需要的各个字段,进行加工、清洗、分析、计算等,实现精确到秒级的应用级监控功能。
2、ELK:开源的用于日志分析的工具,功能与splunk相似,对于数据量大、实时性要求高的监控系统,需要与Hadoop、Spark、Flume等大数据开源组件结合起来使用。
3、BPC:网络旁路流量分析工具。通过对网络报文的收集和解析,能够深入进行应用层的分析,实现交易在整条链路上的端到端的分析和监控,当交易发生异常或缓慢时快速发现具体是由哪个节点引起的。还能获得交易量、交易耗时、成功率、响应率、返回码、流水号等关键交易和业务指标数据。
4、DynaTrace:全栈式监测,包括模拟可用性监测、真实用户监测、移动应用分析、业务交易、应用性能管理、代码级可视化、深度应用监测等,对应用环境中的运营状况进行深入分析。不仅能实时跟踪从真实用户行为到应用性能的所有相关指标、以可视化方式呈现,深入到每一个单个交易。