J'essaie d'implémenter un serveur syslog centralisé simple en utilisant rsyslogd (4.2.0-2ubuntu8.1) sur Ubuntu 10.04 LTS. À ce stade, tous mes nœuds clients envoient des journaux au serveur central, mais les clients envoient des messages de journal qui contiennent leur nom d'hôte court au lieu de leur nom de domaine complet.
Selon la page de manuel Ubuntu rsyslogd:
Si l'hôte distant se trouve dans le même domaine que l'hôte, rsyslogd s'exécute sur, seul le nom d'hôte simple sera enregistré au lieu du fqdn entier.
C'est problématique pour moi, car je réutilise des noms courts entre les environnements, par exemple core1.example.com et core1.stg.example.com enregistrent tous les deux leurs messages en tant que core1.
Le client et le serveur ont le même / etc / default / rsyslog:
RSYSLOGD_OPTIONS="-c4"
et le même fichier /etc/rsyslogd.conf:
$ModLoad imuxsock
$ModLoad imklog
$PreserveFQDN on
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$IncludeConfig /etc/rsyslog.d/*.conf
Les clients ont ce fichier /etc/rsyslog.d/remote.conf, leur disant d'envoyer au serveur distant:
*.* @@syslog.example.com
et le serveur utilise ce fichier /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
Comme le client et le serveur partagent une configuration qui spécifie "$ PreserveFQDN on", je m'attends à voir les noms d'hôte FQDN dans les messages syslog, mais le paramètre semble n'avoir eu aucun effet. La plupart des autres paramètres que j'ai trouvés pour rsyslog visent à supprimer les domaines des FQDN au lieu de les conserver. Je pense que la racine du problème est que mes clients n'envoient pas le FQDN en premier lieu, mais je ne vois pas comment forcer ce comportement.
Quelqu'un peut-il commenter ce que je pourrais manquer? J'imagine que je ne suis pas la seule personne qui a besoin de noms de domaine complets pour être inclus dans les messages de journal.