防止rsyslog将远程主机消息记录到本地/ var / log / syslog


8

我使用rsyslog这样将日志从远程主机保存到服务器:

服务器:

# Logfile for each host
$template DynaFile,"/var/log/rsyslog/%HOSTNAME%.log"
*.* -?DynaFile

客户:

*.* @servername

这将为服务器中的每个客户端主机创建日志文件,/var/log/rsyslog/但还将每个消息也记录到服务器中/var/log/syslog。所以它真的很肿。如何防止/var/log/syslog它只包含来自服务器本身的消息?


1
由于HOSTNAME是syslog字段之一,因此您需要研究基于属性的过滤器。您基本上需要更改它,以便它只为/var/log/syslog
Bratchley

Answers:


2

这对我有用:

## For accepting syslog info from remote hosts
$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
& ~

TempAuth 和之间为什么有重复TempMsg
vdboor

0

我已经为此做了很多工作,我想我已经找到了解决方案。我鼓励其他人尝试这样做,并寻找可能的不利后果。我建议首先在实验室/测试和非关键机器上实施。

$template PerHostLog,"/var/log/net-hosts/%fromhost-ip%/%fromhost-ip%.log"
$template RemoteHostFileFormat,"%TIMESTAMP% %fromhost-ip% %syslogfacility-text% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::space-cc,drop-last-lf%\n”
:inputname, isequal, "imudp" ?PerHostLog;RemoteHostFileFormat
:fromhost-ip , !isequal , "127.0.0.1" stop

以上4行在我的/etc/rsyslog.conf文件的最顶部

我目前正在观看2个日志文件:
/var/log/net-hosts/10.1.1.1
和/ var / log / syslog

,同时观看两者,我看到日志已填充到远程主机文件中,但不在syslog中。我重新启动了apache,并在syslog中看到了此任务的日志条目。


感谢您的测试。但这对我不起作用。它仍然将所有内容都记录到服务器/ var / log / syslog中
Michael

0

您必须确保评估新规则,然后再记录到/ var / log / syslog。
例如,在Ubuntu Trusty(rsyslog 7.4.4)上/etc/rsyslog.conf包含,
$IncludeConfig /etc/rsyslog.d/*.conf
因此默认规则是从加载的/etc/rsyslog.d/50-default.conf,其中包括/ var / log / syslog 的默认规则。

在这种情况下,您可以在该文件之前添加一个要加载的新文件,例如00-remote.conf。为了完整起见,以下是我正在管理的系统的内容:

$template RemoteStore, "/var/log/remote/%HOSTNAME%/%timegenerated:1:10:date-rfc3339%"
:source,isequal,"NAS",-?RemoteStore
& ~
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.