我使用rsyslog和relpbuild立了一个日志服务器。 只要接收远程日志并将其放置在/ var / spool / rsyslog中,它就可以正常工作。
我的问题是:这些消息中的大部分也出现在我的/ var / log / messages文件中,这些文件可能相当大,速度相当快。
我在日志服务器上的configuration:
#### MODULES #### $ModLoad imuxsock # provides support for local system logging $ModLoad imklog # provides kernel logging support (previously done by rklogd) # RELP config $ModLoad imrelp $InputRELPServerRun 2514 #### GLOBAL DIRECTIVES #### # Filter duplicated messages $RepeatedMsgReduction on # Set the default permissions for all log files. $FileOwner syslog $FileGroup adm $FileCreateMode 0640 $DirCreateMode 0755 $Umask 0022 $PrivDropToUser syslog $PrivDropToGroup syslog # Where to place spool files $WorkDirectory /var/spool/rsyslog # Include all config files in /etc/rsyslog.d/ $IncludeConfig /etc/rsyslog.d/*.conf # global templates # DONT CHANGE UNLESS YOU KNOW WHAT YOU ARE DOING $ActionFileDefaultTemplate RSYSLOG_ForwardFormat $template precise,"%syslogpriority% %syslogfacility% %timegenerated% %HOSTNAME% %syslogtag% %msg%\n" $ActionFileDefaultTemplate precise # This should place all remote log items into /var/spool/rsyslog $template RemoteHost,"/var/spool/rsyslog/%programname%.log" # My brain says: this prevents anything coming in from a remote host from # being written in /var/log/whatever - MY BRAIN LIES TO ME! if ($hostname != 'my.server.name') then ?RemoteHost &~
我读的手册页说,主机名检查和“和号波浪”应该防止远程东西污染我的日志文件。
线索?
DISTRIB_DESCRIPTION =“Ubuntu 12.04.3 LTS”
你必须在你的rsyslogconfiguration文件中有类似的东西
*.*;auth,authpriv.none -/var/log/syslog
如果您看一下,您将注册所有设施的所有严重性,除auth和authpriv设施之外的系统日志文件。
只需添加您不想logging的设施,再加上“无”严重性即可。 IE:local6:
*.*;auth,authpriv.none;local6.none -/var/log/syslog
当然,修改configuration文件后,您必须重新启动或重新加载rsyslog守护进程。
希望这有助于,如果远非简单地使用复杂的rsyslogfilter。
我不确定您是否可以使用主机名称。
我个人使用$ fromip =='xxxx'作为不同文件名的条件。
下面是一个很好的例子,它适用于我的设置,虽然如果你有很多不同的IP范围可能是一个问题。
这是从复制
http://www.rsyslog.com/tag/more-complex-scenarios/
将消息从远程系统存储到特定的文件2010年2月23日,星期二
这是一个日志整合的情况。 至less存在两个系统,一个服务器和至less一个客户端。 服务器旨在收集来自所有客户端的日志数据。 客户可能(或不可能)在本地处理和存储消息。 如果他们这样做,这里没有关系。 查看配方将消息发送到远程系统日志服务器以了解如何configuration客户端。
来自192.0.1.xnetworking的远程主机的消息应写入一个文件,而来自192.0.2.xnetworking的远程主机的消息应写入另一个文件。 事情要考虑
TCP recpetion不是内置function。 您需要加载imtcp插件才能启用它。 这只需要在rsyslog.conf中完成一次。 在顶部做正确的。
请注意,$ InputTCPServerRun中指定的服务器端口地址必须与客户端发送消息的端口地址匹配。 configuration语句
$ModLoad imtcp $InputTCPServerRun 10514 # do this in FRONT of the local/regular rules if $fromhost-ip startswith '192.0.1.' then /var/log/network1.log & ~ if $fromhost-ip startswith '192.0.2.' then /var/log/network2.log & ~ # local/regular rules, like *.* /var/log/syslog.log
这是为我工作的。
用于接收来自远程主机的系统日志信息
$template TempAuth, "/var/log/infosys/%HOSTNAME%/%PROGRAMNAME%.log" $template TempMsg, "/var/log/infosys/%HOSTNAME%/%PROGRAMNAME%.log" if ($fromhost-ip != "127.0.0.1" ) then ?TempAuth & ~ if ($fromhost-ip != "127.0.0.1" ) then ?TempMsg & ~