rsyslog-$ModLoad 和 module(load) 之间有什么区别?

rsyslog-$ModLoad 和 module(load) 之间有什么区别?

我在 RHEL 7.7 机器上:

Linux myhost 3.10.0-1062.el7.x86_64 #1 SMP 星期四 7 月 18 日 20:25:13 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

运行 rsyslog-8.24.0-38.el7.x86_64

根据 rsyslog 文档(目前位于 2021 年) https://www.rsyslog.com/doc/master/configuration/converting_to_new_format.html)$ModLoad已过时并被 取代module(load=。所以我试过了,发现它们并不等效。我的问题是,为什么新格式与旧格式不一样?

作为参考,这里是文档中的条目:

转换模块负载

这非常简单。在过时的旧格式中,我们使用:

$ModLoad module-name

这可以非常简单地转换为:

module(load="module-name")

当我在我的rsyslog.conf文件中执行此操作时:

$ModLoad imuxsock.so    # provides support for local system logging (e.g. via logger command)
$ModLoad imklog.so      # provides kernel logging support (previously done by rklogd)

重新启动 rsyslog,然后执行:systemctl restart crond,我注意到这一点/var/log/messages

Mar  8 18:16:19 myhost systemd[1]: Started System Logging Service.
Mar  8 18:16:24 myhost systemd[1]: Stopping Command Scheduler...
Mar  8 18:16:24 myhost systemd[1]: Stopped Command Scheduler.
Mar  8 18:16:24 myhost systemd[1]: Started Command Scheduler.

但是当转换为现代配置时,如下所示:

module(load="imuxsock") # provides support for local system logging (e.g. via logger command)
module(load="imklog") # provides kernel logging support (previously done by rklogd)

(仅更改这两行)我看到的是:

Mar  8 18:18:40 myhost rsyslogd:  [origin software="rsyslogd" swVersion="8.24.0-38.el7" x-pid="28876" x-info="http://www.rsyslog.com"] start

没有提到 crond 重启。

我也尝试过,只是为了好玩:

module(load="imuxsock.so") # provides support for local system logging (e.g. via logger command)
module(load="imklog.so") # provides kernel logging support (previously done by rklogd)

行为上没有区别。

编辑:我注意到如果文件 /etc/rsyslog.d/listen.conf 存在,并且它包含

$SystemLogSocketName /run/systemd/journal/syslog

然后我得到了所描述的行为以及一条错误消息/var/log/messages

Mar  8 18:45:13 myhost rsyslogd: command 'SystemLogSocketName' is currently not permitted - did you already set it via a RainerScript command (v6+ config)? [v8.24.0-38.el7 try http://www.rsyslog.com/e/2222 ]

但只有当我使用新样式的模块加载时才会发生这种情况。这意味着它不是“非常简单的转换”,至少在我看来是这样。

/var/log/messages如果我删除该 listen.conf 文件,那么我就根本无法记录 crond 重启的信息。

现在我想知道我/var/log/messages使用新样式模块加载语法获取日志。

答案1

总体而言,rsyslog 很好地允许 20 年前的遗留选项与自那时以来的所有巨大变化共存。

请注意,$ModLoad一行可以包含多行其他行,为该模块提供选项。例如,$SystemLogSocketName您找到的选项对应于 imuxsockmodule()选项SysSock.Name=

您应该查看所有其他未注释掉的行$并将它们转换为适当的模块参数。

相关内容