集中日志文件-通过 TCP 发送,而不是 SAN 复制?

集中日志文件-通过 TCP 发送,而不是 SAN 复制?

我们有多个(20 多个)应用服务器,分布在多个数据中心。我们需要集中日志文件并从单个框中监控它们。

要求:

  1. 每个应用程序的日志文件很大,每天大约有 5-10 Gb - 因此每秒可能会有几千行。
  2. 延迟很重要——如果可能的话,我们需要能够在几秒钟内对日志事件做出反应。
  3. 性能占用空间应尽可能低,并且应随着日志文件大小可预测地扩展。

我想获得有关集中这些日志文件的最佳方法的意见?

我们想到的一个方法是使用 Logstash (http://logstash.net/) 和 Graylog2 (http://graylog2.org/),并通过网络将日志事件发送到监控盒,可以是直接TCP,也可以是通过RabbitMQ这样的总线。

第二种方法是拥有一个“共享”的 SAN 卷,所有应用程序服务器都会将其日志文件写入其中。

上述方法的优缺点是什么?有什么需要注意的事项吗?最佳实践是什么?

答案1

使用开源日志您可以使用该工具将来自 Linux 和 Windows 主机的日志文件集中起来。它可以通过 UDP、TCP、SSL 进行转发,具有强大的过滤功能、基于磁盘的缓冲以及丰富的其他功能。

答案2

只需设置一个集中式日志服务器syslog-ng(或者rsyslogd像最新趋势那样)并配置服务器应用程序/系统日志以记录到系统日志服务器即可。这种方法很干净,并且已在世界各地经过实地测试。

每个应用程序每天 5-10 GB 是可观的,但不会让您的 syslog-ng 过载。不,先生,这需要更多努力。我每天在工作中都会看到每秒几千行,而 syslog 服务器主要处于空闲状态。

我个人喜欢 syslog-ng,因为它非常即插即用。如果您添加指向 syslog 服务器的新服务器,syslog-ng 将自动为其日志文件创建必要的目录层次结构,无需系统管理员。

答案3

一年前我评估过 LogRhythm,那项服务确实非常棒。看看他们,他们能做的远不止简单地集中您的日志。警报、规范化、报告等。

答案4

看一下 rsyslog 的这个文档:

http://rsyslog.com/doc/rsyslog_reliable_forwarding.html

通过这样的设置,您可以将消息转发到远程 syslog(或 graylog2 服务器,因为它可以监听 syslog 消息),如果远程服务器关闭,它会在本地磁盘上排队。我在高负载下转发到 graylog2 时遇到了问题,如果 graylog2 或 elasticsearch(graylog2 使用它进行存储)无法跟上消息速率,它会将它们排队到内存中,一旦您填满所有可用内存,它就会挂起,直到您将其关闭(丢失所有消息)。

相关内容