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

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传输数据。如果想进一步升级,也建议采用本文嵌入式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

使用SODBASE产品的程序员现在可领礼品啦 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值