本文主要是介绍基于Drools的CEP规则引擎实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1,整体数据流程图
Agent负责数据的采集,通过远程过程调用,经Loastach到Kafka,Collector负责原始数据的整理,生成特定结构的数据体在持久化的同时由需要数据的业务消费。在被规则引擎消费时数据被处理为Rule Event,规则引擎CEP(Complex Event Processing,是复杂事件处理系统)根据特定规则Rule和事件生成规则事件,Common Event。
2,该模块在APM整体结构中的位置
3,CEP与系统交互设计
功能支持:
规则命名;
规则有效性检查;
事件统计;
事件告警级别;
告警级别变更报告;
接口:
规则的增删查改;
规则包的生成;
规则库的创建;
规则包向规则库的推送;
kafka事件获取;
规则库中规则包的动态加载;
告警事件输出到kafka;
4,详细设计
规则文件实例:
package com.aires.oespaas.cep.rules;
import com.aires.oespaas.cep.common.model.ApmSourceEvent;
import com.aires.oespaas.cep.common.model.ApmResultEvent;
import com.aires.oespaas.cep.common.model.ApmResultSet;
declare ApmSourceEvent@role(event)@Expires(10m)@Timestamp(timestamp)
end
rule "ResponseTimeRule"no-loopenabled true when$t1: ApmSourceEvent($objectName: objectname,["applicationlication=HelloWord"] contains $objectName,$objectType: objecttype == "applicationlication", $timestamp
这篇关于基于Drools的CEP规则引擎实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!