我正在尝试创建一个 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
。