rsyslog -- 로그 복제를 위해 2개의 서버를 사용합니다.

rsyslog -- 로그 복제를 위해 2개의 서버를 사용합니다.

rsyslog를 사용하고 있으며 다음 구성을 수행하려고 합니다.

 1. Server 1 - log all local messages and log messages from server2

 2. Server 2 - log all local messages and log messages from server1

따라서 두 서버 모두 로컬 및 원격 시스템 로그를 포함해야 합니다.

그런 다음 rsyslog.conf 구성 파일의 전달 섹션에 넣은 내용은 다음과 같습니다.

서버 1:

 # ### begin forwarding rule ###
 # The statement between the begin ... end define a SINGLE forwarding
 # rule. They belong together, do NOT split them. If you create multiple
 # forwarding rules, duplicate the whole block!
 # Remote Logging (we use TCP for reliable delivery)
 #
 # An on-disk queue is created for this action. If the remote host is
 # down, messages are spooled to disk and sent when it is up again.
 $WorkDirectory /var/lib/rsyslog # where to place spool files
 $ActionQueueFileName server1 # unique name prefix for spool files
 $ActionQueueMaxDiskSpace 1g   # 1gb space limit (use as much as possible)
 $ActionQueueSaveOnShutdown on # save messages to disk on shutdown
 $ActionQueueType LinkedList   # run asynchronously
 $ActionResumeRetryCount -1    # infinite retries if host is down
 # remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
 *.* @@10.0.0.2
 # ### end of the forwarding rule ###

서버 2:

 # ### begin forwarding rule ###
 # The statement between the begin ... end define a SINGLE forwarding
 # rule. They belong together, do NOT split them. If you create multiple
 # forwarding rules, duplicate the whole block!
 # Remote Logging (we use TCP for reliable delivery)
 #
 # An on-disk queue is created for this action. If the remote host is
 # down, messages are spooled to disk and sent when it is up again.
 $WorkDirectory /var/lib/rsyslog # where to place spool files
 $ActionQueueFileName server2 # unique name prefix for spool files
 $ActionQueueMaxDiskSpace 1g   # 1gb space limit (use as much as possible)
 $ActionQueueSaveOnShutdown on # save messages to disk on shutdown
 $ActionQueueType LinkedList   # run asynchronously
 $ActionResumeRetryCount -1    # infinite retries if host is down
 # remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
 *.* @@10.0.0.1
 # ### end of the forwarding rule ###

문제는 이로 인해 기본적으로 무한 루프와 같은 결과가 발생한다는 것입니다. IE 각 시스템에는 자체 항목이 있고 각 시스템의 모든 새 항목이 있습니다. 따라서 동일한 정보가 계속해서 복사되어 로그 파일이 빠르게 채워집니다.

내가 원하는 것을 할 수 있는 방법이 있나요?

저는 rsyslog v5(RHEL 6/Centos 6) 표준을 사용하고 있습니다.

답변1

당신은 이것을 할 수 있습니다조건문 사용, rsyslog 구문 구성은 실행 중인 버전에 따라 다르지만 해당 CentOS 버전은 점점 더 오래되고 있습니다.

udp 서버 구성( UDPServerRun또는 유사한 구성) 뒤와 메시지를 원격으로 전달하라는 지시문 앞에 다음을 추가해 볼 수 있습니다.

if $fromhost-ip startswith '10.0.0.' then /var/log/remotelogs.log
& ~

이것~해야 한다원격 로그를 별도의 파일로 보내고 추가 처리/전달을 방지합니다.

syslog 메시지를 전달할 계획이라면 전용 syslog 프록시/스토리지 서버 설정을 고려하는 것이 좋습니다. 중복 복사본을 보관해야 하는 경우 두 개 정도일 수도 있습니다. 간단한 syslog 서버가 시간을 들일 가치가 없다고 생각한다면 Logstash(및 일반적으로 ELK 스택) 또는 Splunk를 사이드 프로젝트로 살펴볼 수 있습니다.

관련 정보