您如何在服务器上实施日志管理?


13

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

我有20到30个Linux服务器和几个Windows机器(其中大多数是虚拟的)。我们利用许多Perl和Bash脚本来完成大多数自动化工作,而我正在尝试标准化它们的日志记录。

我一直在寻找log4perl和log4sh来记录脚本和syslog-ng,以将所有日志记录在集中式记录服务器上。我还读过splunk,尽管听起来好像企业版价格很高,而且我可能会超出所有服务器的免费许可证限制。

我看过其他工具,例如swatch和logcheck,但是我不太确定所有这些工具如何组合在一起……任何建议将不胜感激!


Answers:


8

我大约有30台服务器,我只使用syslog向上将所有日志发送到单个日志记录服务器。对于备份,所有计算机还配置为将自己的日志在本地存储几天,使用logrotate来处理旧日志的轮换和删除。

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

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

我们还将所有来自每台主机的电子邮件都发送到一个地方,因此,如果任何程序抱怨这种方式,我们都会收到所有消息。从理论上讲,这可以转到程序可以对其执行和分析的单个邮箱。

这是我的日志Perl脚本。它通过将程序的输出管道传输到其中来工作,然后对输出进行系统日志记录并将其吐回去,以便您可以将其发送到其他地方(我发送到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;

该脚本非常方便,但是使用客户端上的syslog和服务器上的syslog-ng(甚至客户端上的syslog-ng),您可以通过过滤日志的更多控制权来获得此功能。
thepocketwade

@thepocketwade:非常正确。我只是从来不需要其他功能。
jedberg

2

尽管尚未实现,但我计划将所有日志生成计算机移至rsyslog,并实现一个堡垒型服务器,该服务器将用作syslog的收集器。从那里,我认为Splunk的免费版本可以满足我提取信息所需的一切。

现在只是实现它...


2

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

我每天运行一次日志压缩程序,该压缩程序压缩所有7天以上的日志,并删除28天以上的任何日志。在这两者之间,它使日志在服务器上的预期寿命为35天,这意味着所有日志都应保存到每月备份中,最多可以恢复两年。

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


我有一个类似的系统,但是我的日志服务器具有预定义的文件夹(邮件,身份验证,全包),日志被过滤到其中。有一次我正在考虑使用splunk。我可以轻松地将数据从日志服务器转发到splunk服务器。
thepocketwade

1

对于集中式日志记录,我强烈推荐LogZilla。我们已经使用了一年多,并且绝对喜欢它。UI非常易于学习和使用,安装花费了我大约一个小时。

即使您不这样做,您实际上也应该尝试摆脱基于脚本的监视,因为这正是您获得的...监视。您应该尝试实现的是管理。修复主要讲话者等的问题,将大大减少基于脚本的监视触发的“火灾”。这是一篇有关系统日志管理的很好的文章:

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


0

我们使用LogLogic的设备进行企业日志记录。它基于syslog,因此所有* nix框都可以使用它;Windows服务器上需要安装一个小应用程序。我可以搜索任何想要的东西,包括REGEX查询,而且它似乎能够处理相当多的负载(仅我们的Active Directory设置会产生令人难以置信的流量)。


1
请小心评估他们的产品...我从他们那里收到了大约10个电话/电子邮件,它们非常持久。
Flamewires 2011年

我认为这些天几乎可以用于任何供应商,并且与实际产品的功能本身无关。您不希望知道DELL,EMC等在这里打来电话的
Tatas

0

对于集中式日志记录服务器,您可以看一下我的Octopussy项目。

刚开始时需要做很多工作,但是使用这些日志可以做很多事情!


0

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

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


我还在为我在内部(最终是开源的,但现在可以正常工作)的项目查看log4sh,该项目称为scriptlog,从本质上讲,您是在关心命令输出的命令之前运行它的,并且做了一些神奇的事情,例如添加了警告。字符串或CRITICAL字符串,它还有一个nagios插件来监视它。当我知道它时将发布
motherlinux
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.