可以使用WSO2检测无序事件模式吗?

时间:2018-01-29 13:15:21

标签: wso2 correlation complex-event-processing wso2cep siddhi

我想使用wso2检测一些模式,但我目前的解决方案只能在事件到达时连续检测到它们。

让我们假设以下模式:

  • 事件1:从源1扫描事件到目标2
  • 事件2:尝试从源1攻击目标2

这会产生警报。

但在现实世界的情况下,事件不会按顺序排列,企业中的计算机太多了。

有一种方法能够使用以下事件序列检测先前的模式吗?

  • 事件1:从源1扫描事件到目标2
  • 活动2:不相关
  • 活动3:不相关
  • ...
  • 事件N:尝试从源1攻击目标2

我的当前代码是:

from every (e1=Events) -> e2=Events
within 10 min
select ...
having e1.type=='Scan' and e2.type=='attack' and e1.Source_IP4==e2.Source_IP4
insert into Alert;

我还尝试过其他类型的解决方案,例如

from every e1=Events,e2=Events[Condition]
within 10 min
select ...
having e1.type=='Scan' and e2.type=='attack' and e1.Source_IP4==e2.Source_IP4
insert into Alert;

也许可以使用分区来完成?考虑到Source_IP4

,对流进行分区

1 个答案:

答案 0 :(得分:1)

我终于成功了。

问题是使用"有"要检测模式,必须将其移动到"过滤条件"而不是。

from (every)? <event reference>=<input stream>[<filter condition>] -> 
    (every)? <event reference>=<input stream [<filter condition>] -> 
    ... 
    (within <time gap>)?     
select <event reference>.<attribute name>, <event reference>.<attribute name>, ...
insert into <output stream>

解决方案:

from every (e1=Events) -> e2=Events[e1.type=='Scan' and type=='attack' and e1.Source_IP4==Source_IP4]
within 10 min
select ...
insert into Alert;