假设我有一个连续的日志条目流(例如防火墙日志),我需要一个能够处理事件流并对其进行一些实时计算的工具(例如,计算在某个时间窗口内来自不同 IP 地址的访问次数 - 例如 10 分钟),并在满足某些条件(例如访问次数> 100)时触发警报。
我知道Storm Project,InfluxDB,OpenTSDB,KairosDB,但除了Strom,它们看起来不像是为这种处理而设计的工具。我的问题是,是否有人知道更适合此类工作的工具。
您可以将消息(日志条目)馈送到 Kafka 队列并与之集成,storm 和 kafka 之间有一个很好的集成,称为 KafkaSpout,它是一个从 Kafka 集群读取的喷口。
为了在一段时间内进行实时处理,您可以检查 Esper,它通常是一个复杂的事件处理单元 (CEP)。如您所提到的,对于执行事件流处理应该非常有用。
strom 和 esper 之间的集成可以在这里找到。
以及一个基本的 Esper 实现示例
值得一看的是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拖放方法可用于创建许多场景。
对于更面向操作的解决方案,您可以查看 格雷日志 .缺点是你没有像 Storm 那样无限的可能性,所以你不能做的事情你也不能编码它(至少不容易,但它是开源的)。
此外,您可以很好地使用Centreon获得更完整的解决方案。这完全取决于您的示例是否只是一个随机示例,或者您的实际用例(如果是这种情况,请查看操作工具,而不是编程工具。那里有大量的监控工具。