Linux 중앙 집중식 로그 서버 구성 오류

Linux 중앙 집중식 로그 서버 구성 오류

여기에 이미지 설명을 입력하세요.모든 Linux 서버에 대해 중앙 집중식 서버를 구성했습니다. 모든 시스템 로그와 Oracle 데이터베이스 감사 로그를 중앙 서버로 전달할 수 있습니다. 하지만 내 문제는 모든 시스템 및 데이터베이스 로그가 하나의 파일에 기록된다는 것입니다. 내 요구 사항은 데이터베이스 로그를 다른 파일에 기록하고 시스템 로그를 중앙 위치의 다른 파일에 기록하는 것입니다. 아래 스크립트를 찾아주세요.

  • 192.168.1.150: 중앙 집중식 서버

  • 192.168.1.44: 원격 서버

원격 서버 구성 (192.168.1.44)

$ cat /etc/rsyslog.conf

# Provides UDP syslog reception
$ModLoad imudp.so
$UDPServerRun 514

# Provides TCP syslog reception
$ModLoad imtcp.so
$InputTCPServerRun 514

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

#Save oracle rdbms audit trail to oracle_audit.log
local0.info /u01/app/oracle/admin/prod/adump/oracle_audit.log


*.*     @192.168.1.150:514

중앙 집중식 서버 구성(192.168.1.150):

$ cat /etc/rsyslog.conf 

# Provides UDP syslog reception
$ModLoad imudp.so
$UDPServerRun 514

# Provides TCP syslog reception
$ModLoad imtcp.so
$InputTCPServerRun 514


$template RemoteHost,"/backup/CentralizeLogLocation/Linuxlogs/%HOSTNAME%/%HOSTNAME%-%$YEAR%%$MONTH%%$DAY%.log"

if ($hostname != '') then ?RemoteHost

&~

이러한 파일은 중앙 집중식 서버 thsc-vmmanager-20160614.log의 각 호스트에 대해 이 형식으로 생성됩니다.

모든 것이 괜찮은 것 같습니다. 원하는 것을 얻었지만 Oracle 데이터베이스 감사 로그와 시스템 로그가 모두 하나의 로그 파일에 기록되었습니다. 스크린샷도 첨부해두었습니다.

이제 요구 사항은 이 두 파일을 분리하는 것입니다. 이를 달성하는 방법을 안내해주세요.

여기에 이미지 설명을 입력하세요.

답변1

%syslogfacility-text%다음과 같이 RemoteHost 템플릿에 syslog 기능을 추가할 수 있습니다 .

$template RemoteHost,"/backup/CentralizeLogLocation/Linuxlogs/%HOSTNAME%/%HOSTNAME%-%syslogfacility-text%-%$YEAR%%$MONTH%%$DAY%.log"

답변2

중앙 집중식 서버에서 템플릿을 생성했지만 아직 사용하지 않았습니다. 마지막에 추가해 보세요

if $fromhost-ip startswith 192.168.1.44  then -?RemoteHost
& ~

또는

if $syslogfacility-text isequal 'local0' then -?RemoteHost
& ~

또는 이를 결합하여 원격 시설 local0(예: oracle 로그)을 하나의 파일에 기록하고 나머지는 다른 파일에 기록할 수 있습니다. 예를 들면 다음과 같습니다.

if $fromhost-ip == '192.168.1.44' and $syslogfacility-text == 'local0' then /var/log/oracle.log
& ~
*.*  /var/log/messages

& ~줄은 이전 명령이 oracle 메시지를 파일에 저장한 후에 삭제됩니다. if. 바라보다rsyslog.com많은 도움과 예를 들어보세요.

줄 시작 부분의 파일 이름은 if와 같이 고정되거나 /var/log/oracle.log와 같이 이전에 정의한 템플릿 일 수 있습니다 -?OracleData. 예를 들어 다음을 추가해야 합니다.

$template OracleData,"/backup/CentralizeLogLocation/Oracle/%HOSTNAME%/%HOSTNAME%-%$YEAR%%$MONTH%%$DAY%.log"

if $syslogfacility-text isequal 'local0' then -?OracleData
& ~
if $fromhost-ip startswith '192.168.1' then -?RemoteHost
& ~
*.*  /var/log/messages

oracle 로그 메시지에 "Oracle"이라는 단어가 포함되어 있으므로 다음을 사용하여 이러한 메시지를 분할할 수도 있습니다.

if $msg contains 'Oracle' then -?OracleData
& ~

이 줄의 순서는 중요합니다. 템플릿을 사용하려면 먼저 정의해야 합니다. 이러한 규칙은 각 메시지에 차례로 적용됩니다. & ~이 줄을 즉시 따르지 않으면 if메시지가 여러 로그 파일에 나타날 수 있습니다.

관련 정보