你是如何在你的服务器上实现日志pipe理的?

我试图弄清楚其他人如何实现他们的日志pipe理系统。

我有20-30个Linux服务器和几个Windows(其中大部分是虚拟化的)。 我们利用大量的Perl和Bash脚本来完成我们大部分的自动化工作,并且试图将日志logging标准化。

我一直在寻找log4perl和log4sh来logging脚本和syslog-ng,以便在一个集中的日志logging服务器上获取所有的日志。 我也读过splunk,虽然听起来像企业版是非常昂贵的,我可能会超过免费许可限制与我所有的服务器。

我见过其他工具,如swatch和logcheck,但我不太清楚所有这些部分是如何组合在一起的…任何build议将不胜感激!

我有大约30台服务器,我只是直接使用syslog将所有日志发送到一台日志服务器。 对于备份,所有的机器也被configuration为在本地存储他们自己的日志几天,使用logrotate来照顾旧日志的轮换和删除。

我的每个应用程序服务器都运行一个小的perl脚本来将其日志发送到syslog,syslog然后转发到日志主机(下面的perl脚本)。

然后在日志主机上,我们有一些类似于logcheck的自定义脚本,基本上可以监视传入日志中是否有任何可疑内容。

我们还把每个主机的所有电子邮件都发送到一个地方,这样,如果有任何程序抱怨,我们就会收到所有的信息。 这理论上可以转到一个程序可以执行和分析的单个邮箱。

这是我的日志loggingPerl脚本。 它的工作方式是将程序的输出input到它,然后syslog输出并吐出,所以你可以把它发送到别处(我发送到multilog)。 你也可以给它的-q选项去syslog。

#!/usr/bin/perl use Sys::Syslog; use Getopt::Long; $SERVER_NAME = `hostname`; chomp $SERVER_NAME; $FACILITY = 'local0'; $PRIORITY = 'info'; GetOptions ('s=s' => \$SERVER_NAME, 'f=s' => \$FACILITY, 'p=s' => \$PRIORITY, 'q+' => \$quiet); #print "$SERVER_NAME\n$FACILITY\n$PRIORITY\n"; #Sys::Syslog::setlogsock('unix'); openlog ($SERVER_NAME,'ndelay',$FACILITY); if (!($quiet)) {syslog($PRIORITY,"Logging Started -- Logger version 1.1");} $| = 1; while (<>) { if (!($quiet)) {print $_ unless $_ =~ /^\s+$/}; chomp; syslog($PRIORITY,$_) if $_; } closelog; $| = 0; 

虽然我还没有实现,但我打算将所有的日志生成机器移动到rsyslog,并实现一个堡垒型服务器,它将作为syslogs的收集器。 从那里,我认为Splunk的免费版本可以做我需要的一切信息。

现在只要执行它…

我使用中央系统日志主机。 每个边缘系统将* .debug发送到中央日志主机。 中央系统日志主机运行syslog-ng,并具有分割日志的规则,以便每台机器生成当天命名的文件。 它也将所有内容转储到一个文件中,我运行logcheck.sh的后代。

每天运行一次日志压缩器,压缩任何超过7天的日志,并删除超过28天的任何日志。 在这两者之间,它会在服务器上提供35天的预计使用寿命,这意味着所有日志都应该进行每月备份,最多可以恢复两年。

这是存储密集型,但似乎是确保覆盖的最佳方式。

对于集中式日志logging,我会强烈推荐LogZilla 。 我们已经使用了一年多了,绝对喜欢它。 用户界面非常容易学习和使用,安装花了我大约一个小时。

即使你不这样做,你也应该试着摆脱基于脚本的监控,因为这正是你所得到的监控。 你应该尝试实现的是pipe理。 顶级谈话者修复问题等将大大减less基于脚本的监控引发的“火灾”数量。 这里有一篇关于系统日志pipe理的非常好的文章:

http://www.cisco.com/en/US/technologies/collat​​eral/tk869/tk769/white_paper_c11-557812.html

我们使用LogLogic的设备来进行企业日志logging。 它基于syslog,因此所有的* nix盒子都没有问题。 有一个小的应用程序需要安装在Windows服务器上。 我可以search任何我想要的东西,包括REGEX查询,而且它似乎能够处理相当多的负载(我们的Active Directory设置本身就会产生令人难以置信的stream量)。

对于集中式日志服务器,你可以看看我的Octopussy项目。

在开始的时候有很多工作要做,但是你可以用这些日志做很多事情!

这是我写的一个教程,涵盖了集中式日志logging和分析的所有方面。

链接: http : //crunchtools.com/centralizing-log-files/