우분투 10.04 LTS에서 주식 rsyslogd (4.2.0-2ubuntu8.1)를 사용하여 간단한 중앙 집중식 syslog 서버를 구현하려고합니다. 이 시점에서 모든 클라이언트 노드가 중앙 서버에 로그를 전송하지만 클라이언트는 FQDN 대신 짧은 호스트 이름이 포함 된 로그 메시지를 전송합니다.
우분투 rsyslogd 맨 페이지에 따라 :
원격 호스트가 호스트와 동일한 도메인에 있고 rsyslogd가 실행 중이면 전체 fqdn 대신 단순 호스트 이름 만 기록됩니다.
환경간에 짧은 이름 (예 : core1.example.com 및 core1.stg.example.com)을 재사용하므로 메시지가 core1로 기록되므로 문제가됩니다.
클라이언트와 서버 모두 동일한 / etc / default / rsyslog를 갖습니다.
RSYSLOGD_OPTIONS="-c4"
동일한 /etc/rsyslogd.conf 파일 :
$ModLoad imuxsock
$ModLoad imklog
$PreserveFQDN on
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$IncludeConfig /etc/rsyslog.d/*.conf
클라이언트는이 /etc/rsyslog.d/remote.conf 파일을 가지고 있으며, 원격 서버로 보내도록 지시합니다.
*.* @@syslog.example.com
서버는이 /etc/rsyslog.d/server.conf 파일을 사용합니다 :
$ModLoad imtcp
$InputTCPServerRun 514
$DirGroup root
$DirCreateMode 0755
$FileGroup root
$template PerHostAuth,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/auth.log"
$template PerHostCron,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/cron.log"
$template PerHostSyslog,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/syslog"
$template PerHostDaemon,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/daemon.log"
$template PerHostKern,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/kern.log"
$template PerHostLpr,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/lpr.log"
$template PerHostUser,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/user.log"
$template PerHostMail,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/mail.log"
$template PerHostMailInfo,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/mail.info"
$template PerHostMailWarn,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/mail.warn"
$template PerHostMailErr,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/mail.err"
$template PerHostNewsCrit,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/news.crit"
$template PerHostNewsErr,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/news.err"
$template PerHostNewsNotice,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/news.notice"
$template PerHostDebug,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/debug"
$template PerHostMessages,"/srv/rsyslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/messages"
auth,authpriv.* ?PerHostAuth
*.*;auth,authpriv.none -?PerHostSyslog
cron.* ?PerHostCron
daemon.* -?PerHostDaemon
kern.* -?PerHostKern
lpr.* -?PerHostLpr
mail.* -?PerHostMail
user.* -?PerHostUser
mail.info -?PerHostMailInfo
mail.warn ?PerHostMailWarn
mail.err ?PerHostMailErr
news.crit ?PerHostNewsCrit
news.err ?PerHostNewsErr
news.notice -?PerHostNewsNotice
*.=debug;\
auth,authpriv.none;\
news.none;mail.none -?PerHostDebug
*.=info;*.=notice;*.=warn;\
auth,authpriv.none;\
cron,daemon.none;\
mail,news.none -?PerHostMessages
클라이언트와 서버 모두 "$ PreserveFQDN on"을 지정하는 구성을 공유하므로 syslog 메시지에 FQDN 호스트 이름이 표시 될 것으로 예상되지만 설정이 효과가없는 것 같습니다. rsyslog에 대해 찾은 대부분의 다른 설정은 도메인을 유지하는 대신 FQDN에서 도메인을 제거하는 것입니다. 문제의 근본 원인은 고객이 FQDN을 먼저 보내지 않지만 그 행동을 강요하는 방법을 알지 못한다는 것입니다.
아무도 내가 잃어버린 것에 대해 의견을 말할 수 있습니까? 로그 메시지에 FQDN을 포함시켜야하는 유일한 사람은 아닙니다.