在 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