我们有几个(20多个)跨多个数据中心的应用程序服务器。 我们需要集中日志文件并从一个盒子里监控它们。
要求:
我想获得关于集中这些日志文件的最佳方法的意见?
我们的一个方法是使用Logstash( http://logstash.net/ )和Graylog2( http://graylog2.org/ ),并通过networking将日志事件发送到监视框,可以是直接的TCP,也可以是通过像RabbitMQ这样的总线。
第二种方法是让所有应用程序服务器将其日志文件写入到的“共享”SAN卷。
上述方法有哪些优点/缺点? 我们应该警惕的任何警告? 最佳实践?
使用开放源代码的nxlog工具,您可以集中来自Linux和Windows主机的日志文件。 它可以通过UDP,TCP,SSL转发,具有强大的过滤function,基于磁盘的缓冲和其他丰富的function。
只需build立一个运行syslog-ng (或rsyslogd就像最新的趋势似乎是)的中央日志服务器,并configuration你的服务器应用程序/ sysloglogin到你的系统日志服务器。 这种方法在世界各地都是干净的和经过现场testing的。
每个应用程序每天5-10 GB是可敬的,但不会超过您的系统日志ng。 不,先生,这需要更多的努力。 每秒数千行是我每天都在看的工作,系统日志服务器主要是空闲的。
我个人喜欢syslog-ng,因为它是如此插播。 如果您添加新的服务器指向您的系统日志服务器,syslog-ng将自动为其日志文件创build必要的目录层次结构,不需要sysadmin。
我在一年前评估了LogRhythm,这个服务确实非常棒。 给他们看,他们可以做更多,然后简单地集中您的日志。 警报,正常化,报告等
从rsyslog看这个文件:
http://rsyslog.com/doc/rsyslog_reliable_forwarding.html
通过这种设置,您可以将消息转发到远程系统日志(或者可以监听系统日志消息的graylog2-server),如果远程服务器closures,则会将其排在本地磁盘上。 如果graylog2或elasticsearch(graylog2使用它存储)无法跟上消息速率,它将排队在内存中,一旦你填充所有可用的内存,它会一直挂起,直到你杀了它(丢失所有消息)。