Estoy tratando de implementar un servidor syslog centralizado simple usando stock rsyslogd (4.2.0-2ubuntu8.1) en Ubuntu 10.04 LTS. En este punto, todos mis nodos de cliente envían registros al servidor central, pero los clientes envían mensajes de registro que contienen su nombre de host corto en lugar de su FQDN.
Según la página de manual de Ubuntu rsyslogd:
Si el host remoto se encuentra en el mismo dominio que el host, rsyslogd se está ejecutando, solo se registrará el nombre de host simple en lugar del fqdn completo.
Esto es problemático para mí, ya que estoy reutilizando nombres cortos entre entornos, por ejemplo, core1.example.com y core1.stg.example.com, ambos registran sus mensajes como core1.
Tanto el cliente como el servidor tienen el mismo / etc / default / rsyslog:
RSYSLOGD_OPTIONS="-c4"
y el mismo archivo /etc/rsyslogd.conf:
$ModLoad imuxsock
$ModLoad imklog
$PreserveFQDN on
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$IncludeConfig /etc/rsyslog.d/*.conf
Los clientes tienen este archivo /etc/rsyslog.d/remote.conf, que les dice que envíen al servidor remoto:
*.* @@syslog.example.com
y el servidor usa este archivo /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 el cliente y el servidor comparten una configuración que especifica "$ PreserveFQDN on", espero ver nombres de host FQDN en los mensajes de syslog, pero la configuración parece no haber tenido efecto. La mayoría de las otras configuraciones que he encontrado para rsyslog están destinadas a eliminar los dominios de los FQDN en lugar de retenerlos. Creo que la raíz del problema es que mis clientes no envían el FQDN en primer lugar, pero no veo cómo forzar ese comportamiento.
¿Alguien puede comentar sobre lo que podría estar perdiendo? Me imagino que no soy la única persona que necesita que se incluyan los FQDN en los mensajes de registro.