Usiłuję zaimplementować prosty scentralizowany serwer syslog przy użyciu standardowego rsyslogd (4.2.0-2ubuntu8.1) na Ubuntu 10.04 LTS. W tym momencie wszystkie moje węzły klienta wysyłają dzienniki do serwera centralnego, ale klienci wysyłają wiadomości dziennika zawierające krótką nazwę hosta zamiast nazwy FQDN.
Według strony podręcznika Ubuntu rsyslogd:
Jeśli zdalny host znajduje się w tej samej domenie co host, rsyslogd działa, tylko prosta nazwa hosta zostanie zarejestrowana zamiast całej nazwy fqdn.
Jest to dla mnie problematyczne, ponieważ ponownie używam krótkich nazw między środowiskami, np. Core1.example.com i core1.stg.example.com, oba rejestrują swoje wiadomości jako core1.
Zarówno klient, jak i serwer mają ten sam plik / etc / default / rsyslog:
RSYSLOGD_OPTIONS="-c4"
i ten sam plik /etc/rsyslogd.conf:
$ModLoad imuxsock
$ModLoad imklog
$PreserveFQDN on
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$IncludeConfig /etc/rsyslog.d/*.conf
Klienci mają ten plik /etc/rsyslog.d/remote.conf, informując ich, aby wysłali na zdalny serwer:
*.* @@syslog.example.com
a serwer używa tego pliku /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
Ponieważ zarówno klient, jak i serwer współużytkują konfigurację określającą „$ PreserveFQDN on”, spodziewam się, że zobaczę nazwy hostów FQDN w wiadomościach syslog, ale ustawienie wydaje się nie mieć żadnego efektu. Większość innych ustawień rsyslog, które znalazłem, mają na celu usunięcie domen z FQDN zamiast ich przechowywania. Myślę, że źródłem problemu jest to, że moi klienci nie wysyłają nazwy FQDN, ale nie widzę, jak wymusić takie zachowanie.
Czy ktokolwiek może skomentować to, czego może mi brakować? Wyobrażam sobie, że nie jestem jedyną osobą, która potrzebuje nazwy FQDN, aby była zawarta w komunikatach dziennika.