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 ...

관련 정보