rsyslogd[xxxx]:配置处理期间出错:STOP 后面是无法访问的语句

rsyslogd[xxxx]:配置处理期间出错:STOP 后面是无法访问的语句

我在主系统日志服务器中有以下配置:

[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

这终于实现了我的目标......并且没有错误/警告消息。

希望这可以帮助。

相关内容