为什么需要Redis,AMQP或0MQ以及弹性搜索和logstash?

时间:2014-11-14 12:29:01

标签: logging elasticsearch redis logstash indexer

我是Elastic SearchlogStash的初学者。经过n次文件后我仍然无法弄清楚。为什么在logshipping和索引组件之间需要一个代理。我们无法直接将日志发送到Elastic Search并开始编制索引吗? enter image description here

2 个答案:

答案 0 :(得分:6)

邮件队列

消息队列的作用是作为网守,并保护解析器不会因过多的日志消息而过载。这完全取决于解析器在一秒钟内可以处理的最大事件数,当此速率变得过高时,日志解析器将丢弃事件并导致数据丢失。为防止出现这种情况,必须使用消息队列。

拉动与推动

当您从日志传送器直接向日志解析器发送日志消息时,您基本上会推送消息,并希望解析器可以处理这些事件被推送到它的速率。当您选择使用消息队列时,您允许日志解析器以其可以处理的速率提取消息。当速率过高且解析器无法提取所有消息时,它们将累积在您的消息队列中,一旦速率变低,解析器将提取这些消息并清除队列。消息队列是防止中央日志记录解决方案临时高负载的最佳保护。

数据库危机

在极少数情况下,您的数据库服务器将崩溃,在此期间,解析器将没有可用的目标将其解析的日志消息发送到。从输入端,解析器将从日志发送器接收越来越多的消息,并将开始丢弃它们。在这种情况下,在此期间生成的所有日志消息都将消失。  消息队列是解决这种情况的一个很好的解决方案,它将允许解析器停止拉动事件并让它们在消息队列中累积。一旦恢复到数据库的会话,解析器将提取所有事件并将其发送到数据库。解析和编写如此大的队列可能需要一些时间,但最终您将完全访问生成的日志数据,并且不会丢失任何数据。

安全层

在某些情况下,您的日志文件可能分散在数据中心外部的不同服务器之间,您可能希望它们将数据发送到集中式日志记录解决方案。通过使用消息队列,您将能够保持数据安全,将其加密并限制对消息队列服务器上单个端口的入站访问。考虑集中式日志记录解决方案的安全性方面非常重要,特别是在涉及分布式服务器环境时。

答案 1 :(得分:2)

是的,您可以立即将日志发送给索引器。但是,使用Broker存在可伸缩性和可维护性的原因。如果索引器在某个时间变得过载,则发送日志可能会变慢。此外,如果您因任何原因想要重新启动索引器,可以使用Broker继续发送日志。