Comment puis-je obtenir rsyslogd pour enregistrer le FQDN d'un serveur au lieu de son petit nom d'hôte?

J'essaie de mettre en place un simple serveur syslog centralisé utilisant stock rsyslogd (4.2.0-2ubuntu8.1) sur Ubuntu 10.04 LTS. À ce stade, j'ai tous les nœuds clients envoyant des journaux au serveur central, mais les clients envoient des messages journaux contenant leur nom d'hôte court au lieu de leur FQDN.

Par la page de manuel Ubuntu rsyslogd:

Si l'hôte distant est situé dans le même domaine que l'hôte, rsyslogd s'exécute, seul le nom d'hôte simple sera enregistré à la place de l'ensemble du fichier fqdn.

Ceci est problématique pour moi, car je réutilise les noms courts entre les environnements, par exemple core1.example.com et core1.stg.example.com, tous deux enregistrent 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, en leur disant de les 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 avoir eu aucun effet. La plupart des autres paramètres que j'ai trouvés pour rsyslog visent à décrocher des domaines à partir de FQDN au lieu de les conserver. Je pense que la racine du problème est que mes clients n'émettent pas le FQDN en premier lieu, mais je ne vois pas comment forcer ce comportement.

Est-ce que quelqu'un peut commenter ce que je pourrais manquer? J'imagine que je ne suis pas la seule personne qui a besoin de FQDN à inclure dans les messages de journal.

5 Solutions collect form web for “Comment puis-je obtenir rsyslogd pour enregistrer le FQDN d'un serveur au lieu de son petit nom d'hôte?”

J'ai également rencontré cette question. Voici comment j'ai réussi à le réparer.

  1. Sur les clients, modifiez le fichier / etc / hosts pour que le nom d'hôte désiré vienne avant localhost.

    127.0.0.1 hostnameforlogs localhost

  2. Sur les clients et le serveur, modifiez /etc/rsyslog.conf pour inclure cette déclaration:

    $ PreserveFQDN on

  3. Sur le serveur, j'ai utilisé la variable% HOSTNAME% pour les modèles dans rsyslog.conf:

Ce pourrait être un bug. Le support du FQDN est ou a été connu pour être wonky , même si aucun des faux FQDN enregistrés ne semble s'appliquer.

Comme solution de contournement, si vous ne faites aucun relais, utilisez %FROMHOST% au lieu de% HOSTNAME%.

Pour modifier le nom d'hôte rsyslog envoie, ajoutez la directive suivante comme première ligne dans /etc/rsyslog.conf avant que les modules ne soient chargés:

 $LocalHostName yourhostname 

Sinon, pour que rsyslog envoie avec le nom de domaine complet (FQDN, tel que system1.example.com) au lieu de simplement le nom d'hôte (system1), utilisez la directive:

 $PreserveFQDN on 

Cela est rarement nécessaire. Nous vous recommandons d'utiliser le nom d'hôte (sans le nom de domaine), sauf si vous disposez de systèmes identiques.

Une autre façon de le définir (qui vous permet d'envoyer différents journaux en tant que noms d'hôtes différents) est de définir un modèle personnalisé:

 $template MyTemplate, "<%pri%> %timestamp% MySpoofedHostName %syslogtag% %msg%\n" $ActionForwardDefaultTemplate MyTemplate 

Je ne peux parler qu'à 7.6.x, mais $PreserveFQDN était tout ce qu'il fallait pour qu'il fonctionne. Vous pouvez éviter d'être embarrassé avec /etc/hosts si le FQDN de votre noeud est configuré correctement.

Exemple pour les systèmes CentOS / RHEL:

 $ -> vi /etc/sysconfig/network # Change this HOSTNAME=service-a-1 # To this HOSTNAME=service-a-1.sn1.vpc3.example.com 

Assurez-vous de redémarrer.

Vous pouvez l'utiliser dans la configuration rsyslog côté client.

 $LocalHostName {{HOSTNAME}} 

Et remplacer {{HOSTNAME}} par le nom d'hôte désiré ou vous pouvez le détemplacer sur chacun des clients en utilisant la moustache automatiquement.

  • comment savoir quel est disk uuid pour md raid1 et hdparm?
  • Pare-feu pour réseau privé
  • Déplacer un file vers l'Amazonie via cygwin
  • Comment puis-je installer la dernière version de Sphinx Seach dans Apt-get?
  • Mettre à niveau le server exécutant Ubuntu 8.04 w / plesk vers Ubuntu 9.04 w / plesk
  • Ubuntu Créer un count FTP automatiquement lors de la création de l'user
  • Montage d'un seau S3 sur un problème d'instance Ubuntu d'AWS
  • Pas de signal d'arrêt par défaut
  • Comment supprimer complètement les volumes / instances de la database OpenStack Kilo
  • Essayer d'obtenir SSH avec clé publique (pas de mot de passe) + authentificateur google fonctionnant sur Ubuntu 14.04.1
  • Comment puis-je utiliser ldapdelete pour supprimer une database olc incorrectement configurée?
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.