应用性能监控实现当前行业有嵌入式插码、非嵌入式插码、日志、旁路网络流量四大主流监控技术,针对非嵌入式插码拿了网上认可度比较高的一款开源产品PINPOINT和旁路网络流量监控产品比对,旁路网络流量方式监控应用性能产品市面上产品功能趋于同质化,功能方面就拿一些通用的进行比对。
一、监控原理阐述
1.1 PINPOINT实现原理
采用JAVA字节码增强技术,在JAVA的JVM里面植入核心跟踪代码到无所不在的公共组件中,比如线程调用、控制流、RPC库。捕获事务开始到结束完整生命周期过程上下文信息,并进行调用关系标记。TraceId表示一个完整唯一的事务,一个事务包含0到N个服务调用。SpanId表示一次服务调用,如果服务里面再调用了服务SpandId为本次子服务调用,pSpanId为对应父服务的SpanId。一个事务的服务调用成树状关系,开枝散叶。
1.2 PINPOINT部署原理
由应用服务器的Agent数据采集-》Collector统一汇总数据-》非结构化数据库HBASE-》Web UI展示四部分组成
Agent,是和应用一起启动和应用共享JVM,定时发数据给Collector;
Collector, 收集应用中agent发送的数据并存储到数据库中;
数据存储HBASE,存储Collector发送的数据,供web服务调用;
Web UI,图表等方式为用户展示服务可视化数据。
1.3旁路网络流量监控实现原理
旁路网络流量监控是基于DPI(Deep Packet Inspection)深度包检测技术,是在传统IP数据包检测技术(OSI L2-L4之间包含的数据包元素的检测分析)之上增加了对应用层数据的应用协议识别,数据包内容检测与深度解码。
通过对网络通讯的原始数据包捕获,DPI技术可使用其三大类的检测手段:基于应用数据的“特征值”检测、基于应用层协议的识别检测、基于行为模式的数据检测。根据不同的检测方法对通信数据包可能含有的异常数据做逐一的拆包分析,深度挖据出宏观数据流中存在的细微数据变化。
1.4旁路网络流量监控部署原理
旁路网络流量监控部署图
二、应用场景
2.1产品背景
2.1.1 PINPOINT
随着互联网用户数量增加,服务规模越来越庞大,架构日趋复杂。传统的2层架构(前端web、后端数据库)或3层架构(前端web服务器、中间端应用服务器、后端数据库)无法满足业务发展需求,微服务应运而生,为了完成交易中的一个事务,会出现由多个服务提供能力,服务调用呈层级关系,由1级逐步演化到N层,并且不是单一的线性关系,而是庞大复杂的网状关系。在一个事务处理过程中,事务的完成时间由服务调用最慢那个决定,我们感知到事务满或者业务慢,但是并不能确定是哪个服务调调用慢,更不能搞清楚是那一个服务慢,需要去服务器看日志,来分析确认问题,对应传统架构来讲,服务调用关系相对简单,服务数量不会太多,这种方式排查问题,时间可能还可以接受,在复杂庞大的服务器群里面用此方法,效率极其低下、耗时耗力,无异于大海捞针。因此急需一个应用性能监控工具来捕获分析事务处理过程中的服务调用关系及其性能,PINPOINT应景而生。
2.1.2旁路网络流量监控
企业IT信息化建设不断完善,配套的监控手段也随之丰富,包括IT基础资源监控、数据库监控、应用服务监控等,传统的监控手段偏重底层监控,这些监控系统也是烟囱林立,分而治之,业务出现问题,需要在多个监控平台进行查看,信息传递缺少关联,无法快速点位问题故障点,是前端慢、或是中间端服务慢、或是后端数据库慢、或是网络慢,具体在哪一个服务器上,哪个资源慢。因此需要以业务视角贯穿整个排查过程,通过旁路网络流量数据包抓取分析业务信息,实现业务端到端性能监控。
2.2产品优势
2.2.1PINPOINT
1、分布式事务跟踪,跟踪跨分布式应用消息。
2、自动检测分布式应用拓扑,帮助你搞清楚应用的架构。
3、提供代码级别的可见性以便轻松定位失败点和瓶颈
4、水平扩展以便支持大规模服务器集群
5、使用字节码增强技术,新增功能无需修改代码
2.2.2旁路网络流量监控
1、业务端到端性能监控,跟踪分析业务整理效率,每一端效率,精准发现问题。
2、分布式部署,对应用0影响,对应用网络0影响,不增加服务器性能损耗,
3、提供业务可视化以方便快速定位业务问题及性能瓶颈
4、多维度多层级呈现系统业务性能,适用不同岗位人员比如系统运维、业务开发、业务使用方
2.3产品主要功能
2.3.1 PINPOINT
1、应用服务调用拓扑图,展示服务调用关系、调用次数。
2、服务请求成功失败数,统计汇总和散点图表示。红色表示失败,绿色表示成功。
3、请求时长统计,横坐标表示请求时长,纵坐标表示数量。
4、响应时长统计,横坐标表示请求时长,纵坐标表示数量。
5、事务跟踪详情,服务调用树状关系展示,调用开始时间,处理时长、错误异常信息字体红色显示。支持不同视角查看,调用树、服务图、时间轴等。
6、可以查看服务器的CPU、内存、堆栈等信息。
2.3.2 旁路网络流量监控
1、业务端到端性能监控,
2、客户感知分析,客户访问区域、客户端浏览器、客户端操作系统
3、客户行为分析,业务转化率、异常行为分析等
4、客户业务回溯,还原业务受理过程,为投诉等界定职责。
6、服务资源统计,统计最慢及效率低的URL、API、SQL
7、网络分析,网络质量、网络流量、网络性能分析回溯
2.4适用对象
2.4.1 PINPOINT
开发人员、专业运维人员
2.4.2 旁路网络流量监控
信息化管理岗、系统运维、业务开发、业务使用方
2.5产品劣势
2.5.1 PINPOINT
1、对服务器性能有损耗,一般宣传3%的耗损;
2、web页面英文,有一定的学习成本。
3、以服务为维度,缺乏层次结构,对应用整体情况无法做评估及客户端的感知分析。
4、二次开发对技术要求高,涉及到JAVA的JVM公共组件的改造,引起应用故障风险高。
2.5.2 旁路网络流量监控
1、对业务厂家不是透明的,需要业务厂家配合,对业务厂家有一定的依赖,相对来讲比较脆弱。
2、完整应用拓扑形成,需要人工介入分析确认,半自动化。
3、可定位问题故障点,需要业务厂家定位具体原因。