在 Debian 上启用 UDP:514 后,rsyslogd 仅从远程服务器记录日志

在 Debian 上启用 UDP:514 后,rsyslogd 仅从远程服务器记录日志

我曾经希望 Debian 7 容器(在 OpenVZ 下)上的 rsyslogd (5.8.11) 也能接收来自远程主机的日志。在那方面,它有效。不再起作用的是来自本地主机的日志消息。例如当我输入:

$ logger -t shell "Test log message from the command line"

/var/log/messages或 中什么也没有出现/var/log/syslog。我所做的只是添加一个配置文件/etc/rsyslog.d,如下所示:

# cat /etc/rsyslog.d/udp.conf
# Enable UDP listening
# http://www.rsyslog.com/tag/tcp/
$ModLoad imudp

# log every host in its own directory
$template RemoteHost,"/var/log/hosts/%HOSTNAME%/%$YEAR%-%$MONTH%-%$DAY%.log"

# Remote Logging
$RuleSet remote
*.* ?RemoteHost

### Listeners

# Bind ruleset to udp listener and activate
$InputUDPServerBindRuleset remote
$UDPServerRun 514

我原封不动地保留了库存/etc/rsyslogd.conf,假设我不需要改变任何东西。这里是:

# purge /etc/rsyslog.conf    # 'purge' is 'cat with comments removed'
$ModLoad imuxsock # provides support for local system logging
$ModLoad imklog   # provides kernel logging support
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$WorkDirectory /var/spool/rsyslog
$IncludeConfig /etc/rsyslog.d/*.conf
auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv.none          -/var/log/syslog
daemon.*                        -/var/log/daemon.log
kern.*                          -/var/log/kern.log
lpr.*                           -/var/log/lpr.log
mail.*                          -/var/log/mail.log
user.*                          -/var/log/user.log
mail.info                       -/var/log/mail.info
mail.warn                       -/var/log/mail.warn
mail.err                        /var/log/mail.err
news.crit                       /var/log/news/news.crit
news.err                        /var/log/news/news.err
news.notice                     -/var/log/news/news.notice
*.=debug;\
        auth,authpriv.none;\
        news.none;mail.none     -/var/log/debug
*.=info;*.=notice;*.=warn;\
        auth,authpriv.none;\
        cron,daemon.none;\
        mail,news.none          -/var/log/messages
*.emerg                         :omusrmsg:*
daemon.*;mail.*;\
        news.err;\
        *.=debug;*.=info;\
        *.=notice;*.=warn       |/dev/xconsole

使用此配置,远程主机的日志行也会出现在/var/log/messages和中/var/log/syslog(这不是我想要的)。本地日志行不再出现。

有谁知道如何添加远程日志记录同时保留 rsyslogd 的初始功能?

答案1

$RuleSet remote永远不会被终止,因此之后的所有规则都将与remote规则集关联。

当您的内容/etc/rsyslog.d/udp.conf被包含到主配置中时$IncludeConfig /etc/rsyslog.d/*.conf,结果表明remote规则集最终也覆盖了主文件中指定的默认规则/etc/rsyslog.conf

由于remote规则集已声明其自己的所有规则,并且仅绑定到远程日志消息,因此有效结果是本地日志消息的规则列表现在是一个空列表。这就是为什么只有远程日志消息才会写入日志文件。

下一个问题是,如何你会终止 rsyslog 规则集吗?毕竟,此版本的 rsyslog 配置语法中没有$EndRuleSet指令,也没有{...块。}

答案是,你指定其他 $RuleSet指示。

在您的 中/etc/rsyslog.d/udp.conf,您应该像这样指定远程日志记录规则:

[...]
# Remote Logging
$RuleSet remote
*.* ?RemoteHost

# End of remote logging rules
$RuleSet RSYSLOG_DefaultRuleset

### Listeners
[...]

您可以在以下位置找到这样的示例Fedora 26 的系统管理员指南。

答案2

我放弃了这个案子。尽管它有更多的依赖项,但我安装了 syslog-ng,我对此更加了解。但这并不能回答问题,因为这是最后的解决办法。我把这个问题留给知道答案的人。

相关内容