여러 서버에 로그인하도록 rsyslog를 설정하고 싶습니다. 현재는 UDP 기반이어야 하지만 나중에 TCP나 RELP로 변경될 수 있습니다.
다음을 포함하여 이 작업을 수행하는 방법을 설명하는 여러 리소스를 찾았습니다.
- 여러 syslog 서버에 로그 보내기
- https://serverfault.com/questions/522341/how-do-i-setup-rsyslog-to-send-all-logs-to-multiple-remote-servers
첫 번째 추천 짧은 기사:
*.* @10.10.1.1:514
*.* @10.10.1.2:514
비록 두 번째 언급이지만https://www.rsyslog.com/doc/v8-stable/tutorials/reliable_forwarding.html:
두 번째 작업에서는 다른 대기열 파일 이름을 사용합니다. 그렇지 않으면 시스템이 혼란스러워질 것입니다.
그리고 더 긴 구성을 생각해 냈습니다.
$WorkDirectory /var/spool/rsyslog
$ActionQueueType LinkedList
$ActionQueueFileName Forward1
$ActionResumeRetryCount -1
$ActionQueueSaveOnShutdown on
*.* @@server1
$ActionQueueType LinkedList
$ActionQueueFileName Forward2
$ActionResumeRetryCount -1
$ActionQueueSaveOnShutdown on
*.* @@server2
이 두 가지 제안은 나에게 모순되는 것 같습니다. (언제) 다른 대기열 파일 이름(및 관련 구성 설정 $ActionQueueType
)이 필요합니까? 조언을 따르지 않으면 시스템이 어떤 방식으로 엉망이 될까요?
답변1
귀하의 예에서는 두 가지 다른 프로토콜을 사용하고 있으므로 명확히하기 위해 다음을 수행하십시오.
UDP를 통해 로그를 전달하려면 시작 부분에 하나의 "@" 기호를 사용하고, TCP를 통해 로그를 전달하려면 시작 부분에 두 개의 "@@" 기호를 사용하십시오.
*.* @localhost:10514;json-template # forward via UDP
그러나 더 명확하게 하기 위해 다음과 같이 RainerScript 구문을 사용할 수 있습니다.
# load omfwd module
module(load="omfwd")
*.* action(type="omfwd" target="127.0.0.1" port="10514" protocol="udp")
여러 서버에 로그인할 때 언제 다른 대기열 파일 이름이 필요합니까?
대기열은 로그 서버에 전달될 수 있을 때까지 로그 메시지를 메모리나 디스크에 일시적으로 저장할 수 있도록 허용하므로 대규모 로그 볼륨이나 신뢰할 수 없는 네트워크 연결로 인해 로그 데이터가 손실될 위험이 있는 상황에서 유용합니다.
rsyslog에 대한 각 입력은 로그 메시지를 수집하여 기본 대기열에 추가하는 하나 이상의 스레드에 의해 수행됩니다. 그런 다음 작업자 스레드는 기본 대기열에서 메시지를 가져와 대상으로 전달하거나 메시지를 작업 대기열에 추가합니다. 작업자가 메시지를 대상으로 전달할 수 없는 경우 전달이 성공할 수 있을 때까지(또는 재시도 제한에 도달하여 영구적으로 실패할 때까지) 해당 대기열의 모든 진행이 차단됩니다. 이로 인해 모든 로그 처리가 차단되는 것을 원하지 않으면 이 대상(또는 대상 그룹)에 대한 작업 대기열을 생성해야 합니다. [1]
여러 서버에 로그인할 때 다른 대기열 파일 이름이 필요합니까?
일반적으로 말하자면아니요, 대부분의 경우 필요하지 않으며 rsyslog는 문제 없이 단일 대기열에서 여러 대상을 처리할 수 있기 때문입니다.
그러나 성능 문제나 로그 누락이 발견되면 해당 문제를 해결하는 데 유용한 도구가 될 수 있습니다.
대기열에 대해 자세히 알아보려면 다음을 조사해 보세요.