/dev/log에서 여러 rsyslog 수신기로 데이터를 복사하는 방법

/dev/log에서 여러 rsyslog 수신기로 데이터를 복사하는 방법

여러 인스턴스를 실행하고 싶습니다 rsyslogd(다른 네트워크 네임스페이스 [ ]). 읽기에서 프로세스가 읽으면 소켓이 소진되고 다른 인스턴스에는 읽을 것이 없습니다! 만들 수 있는 방법이 있나요(예:netnsrsyslogd/dev/log주인) 인스턴스 rsyslogdsyslog메시지를 다른 로컬(노예) rsyslogd예? 다른 방법으로 이를 달성할 수 있다면 어떤 조언이나 제안이라도 환영합니다. rsyslogd기본적으로 Linux를 지원하지 않기 때문에 netns다른 네임스페이스에 syslog메시지를 보내는 유일한 방법 은 rsyslogd.

답변1

rsyslog의 다중 출력 모듈을 사용하여 이 작업을 수행할 수 있어야 합니다. 예를 들어 (뻔뻔하게 도난당하고 약간 수정됨 rsyslog.conf(5)) 마스터의 경우:

*.*  :omrelp:192.168.0.2:2514
*.*  :omrelp:192.168.0.3:2514
*.*  :omrelp:192.168.0.4:2514

마스터 서버가 모든 syslog 항목을 이 세 개의 IP 주소에서 실행되는 rsyslog로 보내도록 하려면 다음 구성이 필요합니다.

 $ModLoad imrelp
 $InputRELPServerRun 2514

(이것은 *.*일반적인 로그 선택기이므로 전달되는 메시지를 제한할 수 있습니다. 예를 들어 장치에 전송되는 로그 local0.* :omrelp:192.168.0.4:2514만 전달합니다 .)local0

추신: 당신이 하고 있는 일은 조금 이상합니다. 사람들은 종종 로깅을 중앙 집중화하기를 원합니다. 이 작업을 수행하는 이유에 따라 실제로 다른 출력 모듈 중 하나가 필요할 수 있습니다. 예를 들어, 서로 다른 네임스페이스의 모든 프로그램이 연결하고 쿼리할 수 있는 SQL 데이터베이스에 로그를 보낼 수 있습니다.

PPS: 이를 처리하는 다른 방법이 있습니다. rsyslog가 읽고 쓰는 소켓은 완전히 구성 가능합니다. 가지다그들은 웹사이트에 꽤 광범위한 문서를 가지고 있습니다., 그리고 아마도 /usr/share/doc귀하의 시스템에도 있을 것입니다.

관련 정보