您的位置:首页 > 产品设计 > 产品经理

SODBASE CEP学习进阶篇(二)续:日志采集之外的APM探针方法

2015-07-03 16:36 525 查看
CEP因其高效的规则管理能力和卓越的定制化能力,常作为服务监控或应用监控系统的核心。监控系统中,除了前文介绍的日志采集方法,还有一种APM探针的方法。APM探针和日志采集一样不需要修改原有系统,同时能够得到一些日志中不方便监测的数据。

本文示例基于Java探针。对其它开发语言如PHP、.Net C#、HTML、Objective C等构建的系统,探针原理类似。也是不改动原有系统的前提下,使用工具加一些监测代码。

1. 示例操作步骤

(1)下载(“数据采集示例”)sodbase-dataadaptor-apm工程,下载(“SODBASE Studio示例模型”)服务器端CEP模型apm.sod

下载SODBASE Studio

(2)解压SODBASE Studio打开,导入apm.sod模型,作用就是把采集上来的监测数据屏幕打印输出。

在左侧模型列表中点击apm,在工作面板右键,点击测试运行。

(3)解压sodbase-dataadaptor-apm工程,导入Eclipse。打开com.example.apm包下的TimeCostTest.java,它是被监测程序。

Run As Run Configuration...配置VM Arguments,-javaagent:lib/apm.jar -Dpackagemonitored=com -Dcep_home=cep_home



2.4输出结果

在SODBASE Studio中可看到输出结果



2. 工作原理

2.1 探针程序

APM探针的原理其实比较简单,主要因为现代编译解释虚拟机(JVM,.net framework等)已经提供了一项功能:在不影响原程序的同时,可以在线增加一些监测度量代码。

示例的探针程序的源代码也在sodbase-dataadaptor-apm工程中,使用了Javassist工具来在线添加监测代码。Javassist几乎提供了编写探针用到的所有功能。
例如,添加新的方法和类、修改系统类(rt.jar中的类,当然要遵循Oracle Java的许可)、修改方法中的一部分(如打印异常堆栈传输到服务器)。使用之前建议读者参考Javassist的官方教程。

本文示例中用的是javaagent方式,在启动被监测的时候加启动参数。lib/apm.jar是探针程序 -Dpackagemonitored是要监测的包前缀,-Dcep_home是放置SODBASE CEP配置文件的目录。

另外,也可以在被监测程序运行过程中,通过进程ID来Attach。具体方法读者可参考Java Instrumentation相关文章。

2.2 传送数据到监测服务器

传送数据到监测服务器有两个挑战

(1)传送程序不能阻塞原来系统正常运行,因为需要是异步传输

(2)并不一定所有数据都要传送。选择需要的数据如执行时间超过1秒的数据,或者定时传送统计数据

为解决这两个挑战,我们在探针采集端用了一个嵌入式SODBASE CEP引擎,从而实现了

(1)异步传输

(2)通过cep_home/files/apmagent.xml的EPL语句来控制数据传输

示例中目前是全部数据传输。如传输时间超过1秒的数据,可将XML中SODSQL修改为

CREATE QUERY apmagent SELECT * FROM T1:collectdata PATTERN T1 WHERE T1.timecost>1000  WITHIN 0
EPL写法请参考类流式计算中的类SQL语言EPL一文。

之前我们在“SODBASE CEP学习进阶篇(二):日志采集”一文直接用了SocketUtil类的API传输数据,这是因为flume一定程度上解决了上述两个挑战。如果想进一步升级,也建议采用本文嵌入式SODBASE CEP引擎方式。

2.3 图形展示和报表

如果需要图形展示,可以参考SODBASE View中的RESTful接口,或者也可以将数据输出入库(包括磁盘库或memory库),用iReport等工具生成报表。

2.4 APM产品

目前有不少APM厂商,主要是两类。一类是云监测,用户的数据传到APM厂商的服务器上去。云监测服务器端比较庞大,不适宜迁移到企业内部,但是使用和计价都比较灵活。另一类是独立APM产品,适合放在企业内部。SODBASE CEP既可以搭建云监测平台,也可以做独立APM产品。相对来说,SODBASE CEP尤其合适监测平台放置在企业内部的场合,满足易定制、易维护的需求。

SODBASE CEP用于轻松、高效实施数据监测、监控类、交易类、实时分析类项目

。EPL语法见SODSQL写法与示例。图形化建模请使用SODBASE
Studio。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: