事件关联和过滤 - 如何,从哪里开始?
Posted
技术标签:
【中文标题】事件关联和过滤 - 如何,从哪里开始?【英文标题】:Event correlation and filtering - How to, where-to start? 【发布时间】:2011-07-27 02:31:30 【问题描述】:得到一个异步事件流,其中每个事件都有类似的信息 -
代理(我的解决方案可能服务的众多代理之一) 代理(代理中的众多代理之一) Served-Entity(由 1 个或多个机构服务的个人/组织) 日期+时间 类数据(来自固定但大量标签的标签)我需要做的是——
根据 Served-Entity、Date+Time 和 Class-Data 关联事件,并创建一个合并的新事件。示例:
事件 #0021: Agency='XYZ', Agent='ABC', Served-Entity='MMN', Date+Time='12-03-2011/11:03:37', Class-Date= '错过交付,无重复,无法追踪,孤儿'
事件 #0193: Agency='KLM', Agent='DAY', Served-Entity='MMN', Date+Time='12-03-2011/12:32:21', Class-Date= '错过交付,孤儿,丢失'
事件 #1217: Agency='KLM', Agent='CARE', Served-Entity='MMN', Date+Time='12-03-2011/18:50:45', Class-Date= “升级”
在这里,我发现 3 个事件在时间上间隔开(间隔超过 7 小时),它们针对同一个服务实体 (MMN),发生在特定时间窗口内(例如 24 小时),具有匹配或相关类数据。
最后创建一个合并的(新的)事件,它可以代表一个推论。
能够基于特定时间段内的特定类数据标签(例如错过交付)等内容,基于每个机构、每个机构、每个服务实体创建报告。这可以使用原始/输入事件或合成(推理)事件来完成。
虽然这不是今天的要求,但很可能在未来出现,出现在 Class-Data 中的“标签”可以增长,无需任何人工干预。所以不确定这是否应该被视为非结构化数据。
也不是即时要求,但将来可能需要识别事件发生的趋势/模式(即事件 1 导致事件 2 导致事件 3)。
事件到达率可能相当高......每分钟可能有数千个事件。也许更多。而且,我需要将原始/合成事件存档一段时间(一个月左右)。
我的解决方案需要基于 FOSS 组件(最好)。到目前为止所做的一些研究指向 CEP(复杂事件处理)、贝叶斯网络/分类、预测分析的方向。
寻找有关采取的方法的一些建议。我更愿意走能满足我大部分目标的道路,以最少的难度/时间,或者换句话说,“学习人工智能”或“正式的统计方法”不是我的短期目标:-)
【问题讨论】:
不确定如何控制格式,但两个点编号 1. 和 1. 应该处于同一级别并按顺序编号。请照此阅读。 【参考方案1】:您的问题是战术问题,而不是程序问题。这两种类型都有自己的工具集,如果您尝试使用程序工具解决战术问题,您将陷入痛苦的世界。
为了澄清术语,当我说程序时,我指的是用例,你可以说做 X,然后是 Y,然后是 Z。对于战术问题,X、Y 和 Z 可以随时发生,你必须能够处理事件。
您在 CEP 方面走在了正确的轨道上。您也可以考虑使用规则引擎。你没有提到你的开发环境是什么,但如果它是 Java,你可能会看看 Jess。如果您真的想要一个出色且强大的规则引擎,请查看 Tibco Business Events。它非常强大且容错,但绝对不是免费的。
【讨论】:
【参考方案2】:迈克,
您是否考虑过像 Esper/Nesper 这样的东西,看看它们是否能满足您的要求?虽然我自己也看过类似的东西——尤其是在 Erlang 上(查看我的帖子here),你会在那里找到一些有用的答案。
集成电路
【讨论】:
以上是关于事件关联和过滤 - 如何,从哪里开始?的主要内容,如果未能解决你的问题,请参考以下文章