我知道elasticsearch对于全文搜索很有用,但是当谈到分析日志时,比如说nginx日志,使用它比grep(使用tail、awk等)有什么优势?
我经常在日志中挖掘并尝试找到一些关键字,使用 grep 很简单。如果我使用elasticsearch,与grep相比,设置它的投资和学习曲线是巨大的。所以我想知道值得“麻烦”吗?
在什么情况下 grep 无法处理而 elasticsearch 会大放异彩?
答案1
使用 时grep
,没有索引,因此每次您想要搜索某些内容时,该命令都需要读取所有日志。当您有大量日志时,这可能需要很长时间并占用大量 CPU 资源。
使用elasticsearch,消息到达时就会被索引,因此实际搜索可以更快地进行,并且CPU 资源更少。 Elasticsearch 还包含各种grep
单独无法完成的分析功能。
这主要是一个规模问题。基本上,如果你只有兆字节日志,使用grep
其他命令行工具处理它们是微不足道的。如果你有千兆字节日志,搜索它们grep
开始变得缓慢且低效,但如果您提前计划,这是可行的。和太字节日志,你肯定需要像 Elasticsearch 这样的东西来以合理的方式处理它们。