部署运维系统运维专家

中间件增强框架之-CaptureFramework框架

2019-08-05  本文已影响42人  宜信技术学院

一、背景

应用服务监控是智能运维系统的重要组成部分。在UAV系统中,中间件增强框架(MOF)探针提供了应用画像及性能数据收集等功能,其中数据收集功能主要采集四类数据:实时数据、画像数据、调用链接数据生成以及线程数据分析数据。为实现实时数据采集,UAVStack设计了CaptureFramework框架,提供统一的数据抓取行为和生成抓取结果能力。

二、CaptureFramework运行原理

image

2.1 关键技术说明

2.2 架构说明

2.3 关键类说明

2.4 捕获点剖析

CaptureFrameWork框架提供了统一的捕获入口点,在UAVServer中分别提供了同步方法与异步方法:

2.4.1 同步与异步调用的差异分析

异步比同步多增加了一个参数CaptureContextMapFromAnotherThread,该参数若不为空,则需要合并上下文的信息。一般情况下在使用异步方法埋点时,在方法执行前调用异步捕获方法传入的CaptureContextMapFromAnotherThread为空,并返回封装好的上下文信息,在方法执行结束后调用异步捕获方法传入上下文信息,并进行上下文信息合并,再进行具体的捕获操作,具体可参考以下代码片段:

image image

2.5 抓取行为剖析

无论是同步捕获入口点还是异步捕获入口点都会执行doCapture方法,代码片段如下:

image

monitor.doCapture是调用了Monitor接口中的doCapture,其实现类是StandardMonitor。

StandardMonitor中的doCapture方法主要做了如下操作:

以ServerEndRespTimeCapHandler(服务端抓取行为)为例:

三、实时数据采集

3.1 什么是实时数据

即运行时数据,指的是在程序运行时产生的信息,程序占用的CPU、堆内存、JVM信息以及提供服务访问与客户端调用的相关统计信息(平均响应时间、访问计数等)。

3.2 服务端数据采集

DefaultMonitorSupporter的实现

image

服务端数据采集以DefaultMonitorSupporter.start为入口点,构建monitor实例:

image

默认构建service类型的StandardMonitor实例,其中包含StandardMonitorRepository实例,StandardMonitorRepository实例注册monitor,一个该实例包含多个MonitorElement实例,并将所有的MonitorElement实例保存在elemsMap属性中。

elemsMap属性根据不同的采集对象保存不同的采集类handler:

代码片段如下:

image image

3.3 客户端数据采集

DefaultClientMonitorSupporter的实现


image

客户端数据采集以DefaultClientMonitorSupporter.start为入口点,构建monitor实例:

image

默认构建client类型的StandardMonitor实例,其中包含StandardMonitorRepository实例,StandardMonitorRepository实例注册monitor,一个该实例包含多个MonitorElement实例,并将所有的MonitorElement实例保存在elemsMap属性中。

image

无论是客户端的数据采集还是服务端的数据采集,都会将monitor安装到DataObserver中;并且最后都会将构建成功的monitor绑定至指定的捕获方法(即precap和docap)。

3.4 DataObServer的实现

DataObServer提供了两种模式来暴露接口数据,分别为JMX和HTTP:

DataObServer还提供了安装与卸载monitor、增加与移除listener以及获取profile和monitor的方法:

image

官方网站:https://uavorg.github.io/main/

开源地址:https://github.com/uavorg

UAV MOF工作原理之Agent注入机制原理:http://college.creditease.cn/#/detail/199

作者:王林林

上一篇 下一篇

猜你喜欢

热点阅读