Sto cercando di implementare un semplice server syslog centralizzato usando stock rsyslogd (4.2.0-2ubuntu8.1) su Ubuntu 10.04 LTS. A questo punto ho tutti i miei nodi client che inviano registri al server centrale, ma i client inviano messaggi di registro che contengono il loro nome host breve anziché il loro nome di dominio completo.
Per la manpage di Ubuntu rsyslogd:
Se l'host remoto si trova nello stesso dominio dell'host su cui è in esecuzione rsyslogd, verrà registrato solo il nome host semplice anziché l'intero fqdn.
Questo è problematico per me, poiché sto riutilizzando nomi brevi tra ambienti, ad esempio core1.example.com e core1.stg.example.com, entrambi registro i loro messaggi come core1.
Sia il client che il server hanno lo stesso / etc / default / rsyslog:
RSYSLOGD_OPTIONS="-c4"
e lo stesso file /etc/rsyslogd.conf:
$ModLoad imuxsock
$ModLoad imklog
$PreserveFQDN on
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$IncludeConfig /etc/rsyslog.d/*.conf
I client hanno questo file /etc/rsyslog.d/remote.conf, che dice loro di inviare al server remoto:
*.* @@syslog.example.com
e il server utilizza questo file /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
Poiché sia il client che il server condividono una configurazione che specifica "$ PreserveFQDN su", mi aspetto di vedere i nomi host FQDN nei messaggi syslog, ma l'impostazione sembra non aver avuto alcun effetto. La maggior parte delle altre impostazioni che ho trovato per rsyslog hanno lo scopo di rimuovere i domini dagli FQDN invece di conservarli. Penso che la radice del problema sia che i miei clienti non inviano l'FQDN in primo luogo, ma non vedo come forzare quel comportamento.
Qualcuno può commentare ciò che potrei perdere? Immagino di non essere l'unica persona che ha bisogno di un nome di dominio completo da includere nei messaggi di registro.