logging - 为什么需要 Redis、AMQP 或 0MQ 以及 Elasticsearch 和 logstash?

标签 logging elasticsearch redis logstash indexer

我是 Elastic SearchlogStash 的初学者。在浏览了 n 份文档之后,我仍然无法弄清楚。为什么在日志传送和索引组件之间需要一个代理。我们不能直接将日志发送到 Elastic Search 并开始索引吗? enter image description here

最佳答案

消息队列

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

拉与推

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

数据库危机

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

安全层

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

关于logging - 为什么需要 Redis、AMQP 或 0MQ 以及 Elasticsearch 和 logstash?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26930047/

相关文章:

php - 模拟库可以用来创建多个日志文件吗?

java - SLF4J 记录器绑定(bind)不起作用

elasticsearch - 如何安排Kibana索引过渡?

elasticsearch - 为什么_explain返回的文档匹配:_search不返回true?

node.js - seneca和redis有什么关系

caching - 将 session 信息存储在 Redis 集群中是否安全高效

java - 如何使用 log4j2 只记录一个级别?

apache - 带有客户端证书主题名称的 Tomcat 7 访问日志

elasticsearch - 如何将elasticsearch别名指向当前索引并从索引模板中删除旧索引中的别名?

java - 分布式缓存预热