我在主系统日志服务器中有以下配置:
[root@STGSYSLOG ~]# egrep -v "^$|^#" /etc/rsyslog.conf
$MaxMessageSize 32k
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal # provides access to the systemd journal
$ModLoad imudp
$UDPServerRun 514
$ModLoad imtcp
$InputTCPServerRun 514
$template RemoteLogs,"/var/log/RemoteLogs/%fromhost-ip%/%PROGRAMNAME%.log"
*.* ?RemoteLogs
& stop
$WorkDirectory /var/lib/rsyslog
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$IncludeConfig /etc/rsyslog.d/*.conf
$OmitLocalLogging on
$IMJournalStateFile imjournal.state
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
*.emerg :omusrmsg:*
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log
[root@STGSYSLOG ~]#
rsyslog 的版本是:
[root@STGSYSLOG ~]# rsyslogd -v
rsyslogd 8.24.0-52.el7_8.2
我在检查配置时收到以下错误:
[root@STGSYSLOG ~]# rsyslogd -f /etc/rsyslog.conf -N1
rsyslogd: version 8.24.0-52.el7_8.2, config validation run (level 1), master config /etc/rsyslog.conf
rsyslogd: error during config processing: STOP is followed by unreachable statements! [v8.24.0-52.el7_8.2 try http://www.rsyslog.com/e/2207 ]
[root@STGSYSLOG ~]#
有一行“& stop”,它指示 rsyslog 在将消息写入文件后停止处理消息。如果不包含“& stop”,消息将被写入本地文件。我在这里做错了什么吗?或者该参数在 rsyslog 8.x 版本中已弃用?请指教。
答案1
此页面出现在引用与 rsyslog 相关的停止指令错误的搜索结果中。发布回复,希望能让后续的人更容易解决问题。
兰吉斯,
根据您的配置文件,您似乎正在尝试实现我一直在努力解决的相同结果:
- 接收远程系统日志消息,这些消息根据定义的模板记录到适当命名的本地日志文件中,以及
- 按照配置文件其余部分中的指示,继续将本地消息记录到标准本地日志文件中。
基于上述情况,我的回应如下。
是的,stop 指令是无条件的,会导致配置文件的其余部分被忽略(生成您引用的错误消息)。我发现使用“规则集”可以实现目标而不会出现错误。
我正在使用 Debian 10.8 和 [rsyslog] v8.1901.0-1。
我的 [rsyslog.conf] 的相关部分:
在模块部分:
# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514" ruleset="remote") # "remote" ruleset defined below...
# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514" ruleset="remote") # "remote" ruleset defined below...
我知道文档规定必须定义规则集前被束缚……在我撰写本文时,情况似乎并非如此。
在规则部分:
$template Incoming-logs,"var/log/%HOSTNAME%/%PROGRAMNAME%.log
ruleset(name="remote"){
action(type="omfile" dynafile="Incoming-logs")
} # This ruleset is used above where it is bound
# to the TCP/UDP listener definitions
这终于实现了我的目标......并且没有错误/警告消息。
希望这可以帮助。