如何使用 rsyslog 5.8 链接过滤器

如何使用 rsyslog 5.8 链接过滤器

我正在尝试创建一个 rsyslogd 过滤器,用于转发来自远程主机的超过特定严重性级别的系统日志消息。我能够在具有 rsyslogd v8.24 的另一台服务器上执行此操作。但我无法使用旧的 rsyslogd v5.8 语法来执行此操作。

我成功使用的唯一过滤器是app-name并且目前我的规则是:

:app-name, isequal, "app1" @192.168.100.200:514 
:app-name, isequal, "app2" @192.168.100.200:514 

如何添加严重性级别过滤器,以便只有与应用程序名称匹配且高于一定级别的消息才会被转发?

使用 rsyslogd v8.24,我的过滤器如下所示。如果有办法在 v5.8 中复制该过滤器,那就更好了。

if $fromhost-ip == "192.168.0.50" and $syslogseverity <= 4 then @192.168.200.200:514

答案1

我下载并构建了 5.8 源代码,并进行了一些测试,长话短说,您需要做的就是将 RainerScript 中的字符串常量从双引号更改为单引号。即尝试

if $fromhost-ip=='192.168.0.50' and $syslogseverity<=4 then ...

对于其他可能需要进行类似构建的读者,我下载了5.8 来源并使用 debug 和 imfile 配置它们(用于输入):

./configure --enable-debug --enable-diagtools --enable-imfile
make

由于我不想将文件安装到/usr/local,因此我设置了 DESTDIR 以在构建目录下创建安装树。

make install DESTDIR=$PWD/x

然后 rsyslogd 二进制文件位于 中x/usr/local/sbin/。用于独立测试配置的参数不需要-u2执行chdir("/"),并-c5强制解析保留在版本 5 语法中,因此运行:

rsyslogd -c5 -u2 -i /tmp/pidfile -f my.conf

您需要添加才能-M$PWD/x/usr/local/lib/找到模块。您可以使用 进行配置文件语法检查-N1,然后使用 进行调试运行-dn

相关内容