Estou tentando implementar um servidor syslog centralizado simples usando o estoque rsyslogd (4.2.0-2ubuntu8.1) no Ubuntu 10.04 LTS. Neste ponto, todos os meus nós clientes enviam logs para o servidor central, mas os clientes estão enviando mensagens de log que contêm seu nome de host abreviado, em vez de seu FQDN.
De acordo com a página de manual do rsyslogd do Ubuntu:
Se o host remoto estiver localizado no mesmo domínio que o host, o rsyslogd estará em execução, apenas o nome do host simples será registrado em vez do fqdn inteiro.
Isso é problemático para mim, pois estou reutilizando nomes abreviados entre ambientes, por exemplo, core1.example.com e core1.stg.example.com registram suas mensagens como core1.
O cliente e o servidor têm o mesmo / etc / default / rsyslog:
RSYSLOGD_OPTIONS="-c4"
e o mesmo arquivo /etc/rsyslogd.conf:
$ModLoad imuxsock
$ModLoad imklog
$PreserveFQDN on
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$IncludeConfig /etc/rsyslog.d/*.conf
Os clientes possuem este arquivo /etc/rsyslog.d/remote.conf, solicitando que eles enviem para o servidor remoto:
*.* @@syslog.example.com
e o servidor usa este arquivo /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
Como o cliente e o servidor compartilham uma configuração que especifica "$ PreserveFQDN on", espero ver nomes de host do FQDN em mensagens syslog, mas a configuração parece não ter efeito. A maioria das outras configurações que encontrei para o rsyslog visam remover domínios dos FQDNs em vez de retê-los. Acho que a raiz do problema é que meus clientes não enviam o FQDN em primeiro lugar, mas não vejo como forçar esse comportamento.
Alguém pode comentar sobre o que eu posso estar perdendo? Eu imagino que não sou a única pessoa que precisa que os FQDNs sejam incluídos nas mensagens de log.