rsyslogd는 Debian에서 UDP:514를 활성화한 후 원격 서버에서만 로그를 기록합니다.

rsyslogd는 Debian에서 UDP:514를 활성화한 후 원격 서버에서만 로그를 기록합니다.

나는 Debian 7 컨테이너(OpenVZ 아래)의 rsyslogd(5.8.11)도 원격 호스트로부터 로그를 수신하기를 바랐습니다. 그런 점에서는 효과가 있습니다. 더 이상 작동하지 않는 것은 localhost의 로그 메시지입니다. 예를 들어 다음과 같이 입력할 때:

$ logger -t shell "Test log message from the command line"

/var/log/messages아니면 아무것도 나타나지 않습니다 /var/log/syslog. 내가 한 일은 다음과 같은 구성 파일을 추가하는 것뿐이었습니다 /etc/rsyslog.d.

# cat /etc/rsyslog.d/udp.conf
# Enable UDP listening
# http://www.rsyslog.com/tag/tcp/
$ModLoad imudp

# log every host in its own directory
$template RemoteHost,"/var/log/hosts/%HOSTNAME%/%$YEAR%-%$MONTH%-%$DAY%.log"

# Remote Logging
$RuleSet remote
*.* ?RemoteHost

### Listeners

# Bind ruleset to udp listener and activate
$InputUDPServerBindRuleset remote
$UDPServerRun 514

/etc/rsyslogd.conf아무것도 변경할 필요가 없다고 가정하고 재고를 그대로 두었습니다 . 여기있어:

# purge /etc/rsyslog.conf    # 'purge' is 'cat with comments removed'
$ModLoad imuxsock # provides support for local system logging
$ModLoad imklog   # provides kernel logging support
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$WorkDirectory /var/spool/rsyslog
$IncludeConfig /etc/rsyslog.d/*.conf
auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv.none          -/var/log/syslog
daemon.*                        -/var/log/daemon.log
kern.*                          -/var/log/kern.log
lpr.*                           -/var/log/lpr.log
mail.*                          -/var/log/mail.log
user.*                          -/var/log/user.log
mail.info                       -/var/log/mail.info
mail.warn                       -/var/log/mail.warn
mail.err                        /var/log/mail.err
news.crit                       /var/log/news/news.crit
news.err                        /var/log/news/news.err
news.notice                     -/var/log/news/news.notice
*.=debug;\
        auth,authpriv.none;\
        news.none;mail.none     -/var/log/debug
*.=info;*.=notice;*.=warn;\
        auth,authpriv.none;\
        cron,daemon.none;\
        mail,news.none          -/var/log/messages
*.emerg                         :omusrmsg:*
daemon.*;mail.*;\
        news.err;\
        *.=debug;*.=info;\
        *.=notice;*.=warn       |/dev/xconsole

이 구성을 사용하면 원격 호스트의 로그 줄이 및에도 나타납니다 /var/log/messages( /var/log/syslog이것은 내가 원하는 것이 아닙니다). 로컬 로그 줄이 더 이상 나타나지 않습니다.

방법 아는 사람 있나요?다음에 추가rsyslogd의 원래 기능을 유지하면서 원격 로깅을 하시겠습니까?

답변1

종료 $RuleSet remote되지 않으므로 모든 후속 규칙은 remote규칙 세트와 연결됩니다.

콘텐츠가 /etc/rsyslog.d/udp.conf마스터 구성에 포함 되면 규칙 세트가 마스터 파일에 지정된 기본 규칙도 무시하게 $IncludeConfig /etc/rsyslog.d/*.conf됩니다 .remote/etc/rsyslog.conf

remote규칙 세트는 자체 규칙을 모두 선언하고 원격 로그 메시지에만 바인딩하므로 효과적인 결과는 로컬 로그 메시지에 대한 규칙 목록이 이제 빈 목록이 된다는 것입니다 . 이것이 바로 원격 로그 메시지만 로그 파일에 기록되는 이유입니다.

다음 질문은,어떻게rsyslog 규칙 세트를 종료하시겠습니까? 결국, 이 버전의 rsyslog 구성 구문에는 $EndRuleSet지시문과 {... 블록 이 없습니다.}

대답은 당신이 지정하는 것입니다.다른 $RuleSet지시하다.

귀하의 경우 /etc/rsyslog.d/udp.conf다음과 같은 원격 로깅 규칙을 지정해야 합니다.

[...]
# Remote Logging
$RuleSet remote
*.* ?RemoteHost

# End of remote logging rules
$RuleSet RSYSLOG_DefaultRuleset

### Listeners
[...]

이에 대한 예는 다음에서 찾을 수 있습니다.Fedora 26용 시스템 관리자 가이드.

답변2

나는 케이스를 떨어 뜨렸다. 더 많은 종속성이 있지만 syslog-ng를 설치했고 이에 대해 더 많이 알고 있습니다. 그러나 이는 최후의 수단 솔루션이기 때문에 질문에 대한 답이 아닙니다. 이 질문은 답을 아시는 분들에게 맡깁니다.

관련 정보