假设我有一个连续的日志条目流(例如防火墙日志),我需要一个能够处理事件流并对其进行实时计算的工具(例如计算来自不同 IP 地址的访问次数)时间窗口(例如 10 分钟)并在满足某些条件时触发警报(例如访问次数 > 100)。
我知道Storm Project、InfluxDB、OpenTSDB、KairosDB,但除了 Strom 之外,它们看起来不像是为这种处理设计的工具。我的问题是,是否有人知道更适合此类工作的工具。
假设我有一个连续的日志条目流(例如防火墙日志),我需要一个能够处理事件流并对其进行实时计算的工具(例如计算来自不同 IP 地址的访问次数)时间窗口(例如 10 分钟)并在满足某些条件时触发警报(例如访问次数 > 100)。
我知道Storm Project、InfluxDB、OpenTSDB、KairosDB,但除了 Strom 之外,它们看起来不像是为这种处理设计的工具。我的问题是,是否有人知道更适合此类工作的工具。
您可以将消息(日志条目)提供给Kafka队列并将 Storm 与其集成,storm 和 kafka 之间有一个很好的集成,称为KafkaSpout,它是从 Kafka 集群读取的 spout。
要在一个时间窗口内进行实时处理,您可以检查Esper,它通常是一个复杂的事件处理单元 (CEP)。正如您提到的,对于进行事件流处理应该非常有用。
值得一看Splunk。使用 Splunk,您可以实时监控和警报。它还支持实时搜索和分析功能。Splunk 基本上在可搜索的存储库中捕获、索引和关联实时数据,用户可以从中生成图形、报告、警报、仪表板和可视化,从最终用户的角度来看,这会容易得多。
我们将Storm(与 Kafka 结合使用)用于类似的工作,并且非常喜欢使用它。该工具生成的错误总是像人们希望的那样有用和具有描述性,但总的来说,一旦克服了这些错误,它就提供了一个非常可靠和强大的基础架构。
如果警报要求足够简单(不需要在事件之间关联、从其他资源获取数据等),那么直接使用 Kafka(或其他消息传递系统)甚至可能是有意义的。
在检查替代方案的同时,我们还对 S4(http://incubator.apache.org/s4/)进行了调查,但是,它似乎没有像 Storm 那样获得足够的动力。
Spark(https://amplab.cs.berkeley.edu/projects/spark-lightning-fast-cluster-computing/)主要针对hadoop的批处理,但也有针对流处理的倡议。
你可以看看EVAM。它具有基于场景的设计器,并且可以为同一流运行并行或顺序的多个场景。事件和动作生成一次完成,然后可以使用 GUI 拖放方法创建许多场景。