나는 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를 설치했고 이에 대해 더 많이 알고 있습니다. 그러나 이는 최후의 수단 솔루션이기 때문에 질문에 대한 답이 아닙니다. 이 질문은 답을 아시는 분들에게 맡깁니다.