对于审计日志记录,哪种技术最好?

时间:2018-01-14 15:23:36

标签: mysql logging redis elastic-stack audit

我需要选择一种技术来存储和检索审核日志(当添加,删除,修改某些内容时)。方案是:日志可能每天增加1000万,并将通过一些关键词检索。 所以我的问题是:

  • 我应该使用哪种技术,例如 ELK (Elasticsearch,Logstash,Kibana)或 MySQL Redis 或其他更好的原因。

1 个答案:

答案 0 :(得分:1)

ELK 是一种标准选项。它是可靠的,具有很好的快速关键字搜索数百万条记录,并且可以相当线性地扩展。

MySQL 将是一个很好的次要选择,但根据您需要保留的时间范围,您最终会遇到空间或搜索能力方面的缩放问题(在合理的时间框架)没有分片。 Sharding会解决很多这些问题,但它可能比ELK更容易手动和痛苦,ELK很容易按日期设置索引/分片。

Redis 对此不是一个很好的选择。所有redis数据必须适合内存,这会限制您可以大幅保留的日志数据量。键/值也不适合日志结构数据,特别是它的可搜索性,在redis中基本没有。

如果你要超越ELK,那么下一个最好的选择可能就像HDFS + Hadoop / Spark搜索(或者如果你在AWS-land中的S3 + EMR),但每天1000万ELK应该持续好的时候(取决于时间范围)。就像一个例子,我目前使用的是一个10节点的ELK集群,每天处理大约10亿个日志项目,我们保留了两周的历史记录。

编辑:

对于您正在寻找的审计日志记录,为了增加可靠性,将类似kafka流的内容写入应用程序和ELK之间的层可能很有用。这将解决一些可能会依赖于日志文件传输的可能奇怪/糟糕的行为,并为您提供所有更改的无限期,可重放的流。