我当前的 rsyslog.conf 配置文件:

我当前的 rsyslog.conf 配置文件:

这只是我的延续上一篇文章在使用 rsyslog 配置时,我遇到了许多挑战,并了解了它的许多注意事项,而我的大部分配置在获得许多专业建议后现在正在工作,现在我陷入了两难境地,我想丢弃一些消息我过滤的消息。

我当前的 rsyslog.conf 配置文件:

[root@hos1-loghost ~]# cat  /etc/rsyslog.conf
##########################################################################################
# rsyslog configuration file For PCC &  LPC
##########################################################################################
#### MODULES ####
$ModLoad imuxsock        # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal       # provides access to the systemd journal
$ModLoad imudp           # Provides UDP syslog reception
$UDPServerRun 514        # Provides UDP syslog reception

# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
$template system-logs, "/data/SYSTEMS/%HOSTNAME%/messages.log"
$template dpc-nets,"/scratch/rsyslog/network/%HOSTNAME%/messages.log"
$template dpc-firewalls,"/scratch/rsyslog/firewall/%HOSTNAME%/messages.log"

#################################################
#### GLOBAL DIRECTIVES                       ####
#################################################
$WorkDirectory /var/lib/rsyslog                                 # Where to place auxiliary files
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat        # Use default timestamp format
$IncludeConfig /etc/rsyslog.d/*.conf                            # Include all config files in /etc/rsyslog.d/
$OmitLocalLogging on                                            # local messages are retrieved through imjournal now.
$IMJournalStateFile imjournal.state                             # File to store the position in the journal

############ RULES #########################################
# Log anything (except mail) of level info or higher #######
# Don't log private authentication messages!        ########
############################################################
mail.none;authpriv.none;cron.none ?system-logs
*.*              ?system-logs

#####################################################################
# Custom conditional Forwarding of messages to the syslog Directory #
###################################################################
if $fromhost startswith "wc" then {
  *.crit,*.err,*.emerg,*.alert,*.panic,mail.none,authpriv.none,cron.none,news.none,uucp.none,kern.none  ?system-logs
  & stop
}

if $fromhost startswith "sj-" then {
  *.crit,*.err,*.emerg,*.alert,*.panic,mail.none,authpriv.none,cron.none,news.none,uucp.none,kern.none  ?system-logs
  & stop
}

if $fromhost startswith "vlsj-" then {
  *.crit,*.err,*.emerg,*.alert,*.panic,mail.none,authpriv.none,cron.none,news.none,uucp.none,kern.none  ?system-logs
  & stop
}

在上面的配置中,我有多个 if 条件来过滤主机名,并仅选择所需的设施级别并丢弃其他设施级别。

现在我遇到一种情况,我必须忽略/丢弃包含特定字符串的消息。

消息集示例

Feb  8 08:07:01 my-ezure CROND[10487]: (root) CMD (/grid/it/sbin/plugins/new_toplevelmap.sh)
Feb  8 08:08:01 my-ezure CROND[10587]: (root) CMD (/grid/it/sbin/plugins/ps-rem)
Feb  8 08:01:01 my-ezure run-parts(/etc/cron.hourly)[9812 starting mcelog.cron
Feb  8 08:01:01 my-ezure run-parts(/etc/cron.hourly)[9841 finished mcelog.cron
Feb  8 08:08:01 my-ezure CROND[10588]: (root) CMD (/grid/it/sbin/plugins/new_toplevelmap.sh)

从上面的消息中,我需要丢弃包含的消息 CROND,我尝试在 rsyslog.conf 的末尾附加以下行,但没有成功。

如果 $programname == ' CROND' 则停止

如果 $rawmsg 包含 'CROND' 那么 ~

如果 $syslogfacility-text == ' CROND' 那么 ~

我有 rsyslog 版本:rsyslogd 7.4.7

我想丢弃来自所有在线客户端主机的所有不需要的消息,以便仅将所需的消息写入我的 rsyslog 服务器。

相关内容