rsyslog 条件转发用于远程日志,取消日志文件中日期和时间的格式

rsyslog 条件转发用于远程日志,取消日志文件中日期和时间的格式

我还有一个关于通过 rsyslog.conf 有条件转发日志的问题,我有以下配置。

# cat  /etc/rsyslog.conf
##########################################################################################
# rsyslog configuration file For TCC & TPC
##########################################################################################
#### 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 tcc-logs, "/data/SYSTEMS/%HOSTNAME%/messages.log"
$template noi-logs, "/data/noiter/%HOSTNAME%/messages.log"

#####################################################################
# Custom conditional Forwarding of messages to the syslog Directory #
###################################################################
if $fromhost startswith "sj-" then -?tcc-logs
& stop

if $fromhost startswith "noi-" then -?noi-logs
& stop


##################################################
#### 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!        #
####################################################
*.info;mail.none;authpriv.none;cron.none    ?tcc-logs
authpriv.*       ?tcc-logs                                      # The authpriv file has restricted access.

在上面的配置中,我试图要求 rsyslog 有条件转发日志,内容如下:

  1. 如果任何即将到来的主机以rsyslog“”开头,sj那么它应该转到“/data/SYSTEMS/目录”,它将创建另一个具有主机名的目录,然后在此创建一个目录messages.log,因此,完整的文件路径将类似于/data/SYSTEMS/sj-hosts_1/messages.log.

  2. 类似地,如果任何即将到来的主机以rsyslog开头开头noi-,那么它应该转到/data/noiter/“目录”,它将创建另一个具有主机名的目录,然后在此创建一个目录messages.log,因此,完整的文件路径将类似于/data/noiter/noi-hosts_1/messages.log.

上述两点满足结果但是问题是messages.log在上述情况下将日期和时间创建为与默认格式不同的格式,示例如下:

2019-01-25T23:20:01-08:00 noi-hosts_1 CROND[8541]: (root) CMD (/usr/lib64/sa/sa1 1 1)

2019-01-25T23:20:01-08:00 noi-hosts_1 CROND[8542]: (root) CMD (LANG=C LC_ALL=C 

而默认和必需的格式应如下所示:


Jan 25 20:23:58 noi-hosts_1 CROND[8541]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Jan 25 20:23:58 noi-hosts_1 CROND[8542]: (root) CMD (LANG=C LC_ALL=C 

笔记:

当我不使用条件转发时,我通常会得到正确的/默认的转发,如上所示。

答案1

您的条件规则if $fromhost ...位于配置开始附近,并使用默认的日志记录样式,对于 rsyslog 现在是RSYSLOG_FileFormat。您RSYSLOG_TraditionalFileFormat稍后可以将默认值更改为所需的值,但这仅适用于以下任何规则。

因此,只需将条件规则在文件中进一步移至注释块之后#### RULES ...

相关内容