Rsyslog 在远程发送消息之前丢弃消息 - 过滤器不起作用

Rsyslog 在远程发送消息之前丢弃消息 - 过滤器不起作用

在 rsyslog 将某些系统日志消息发送到远程日志服务器之前,我正在努力删除它们。

这是我的整个 rsyslog.conf 文件,如下所示:

# /etc/rsyslog.conf configuration file for rsyslog
#
# For more information install rsyslog-doc and see
# /usr/share/doc/rsyslog-doc/html/configuration/index.html
#
# Default logging rules can be found in /etc/rsyslog.d/50-default.conf

#################
#### MODULES ####
#################

module(load="imuxsock") # provides support for local system logging
#module(load="immark")  # provides --MARK-- message capability

# provides kernel logging support and enable non-kernel klog messages
module(load="imklog" permitnonkernelfacility="on")

###########################
#### GLOBAL DIRECTIVES ####
###########################

#
# Use traditional timestamp format.
# To enable high precision timestamps, comment out the following line.
#
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

# Filter duplicated messages
$RepeatedMsgReduction on

#
# Set the default permissions for all log files.
#
$FileOwner syslog
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$PrivDropToUser syslog
$PrivDropToGroup syslog

#
# Where to place spool and state files
#
$WorkDirectory /var/spool/rsyslog

:msg, contains, "sudo: pam_unix(sudo:session):" ~
:msg, contains, "sudo:   zabbix : TTY=unknown ; PWD=/ ; USER=root ;" ~

*.*     @192.168.3.2:514

重新启动服务后,我继续在远程日志服务器上获取 sudo 的消息。

是否有可能在远程发送消息之前将其删除?

我是否必须使用基于优先级的文件,rsyslog.d或者主 .conf 文件是否有效?

我在 Ubuntu 20.04.3 上运行 Rsyslog 8.2001。

旁注:我确实知道 ~ 已被弃用,但使用stop也没有删除消息。

答案1

那是因为sudo:programname,并且不在 中:msg。因此,您需要编写一个基于表达式的过滤器。

if $programname == 'sudo' and ( $msg contains 'pam_unix(sudo:session)' 
        or $msg contains 'zabbix : TTY=unknown ; PWD=/ ;USER=root' )
then stop

*.*     @192.168.3.2:514

相关内容