Come ottengo rsyslogd per registrare un FQDN di un server anziché il suo nome host breve?

Sto cercando di implementare un semplice server syslog centralizzato che utilizza stock rsyslogd (4.2.0-2ubuntu8.1) su Ubuntu 10.04 LTS. A questo punto ho tutti i nodes client che inviano i registri al server centrale, ma i client stanno inviando messaggi di log che contengono il loro nome host breve anziché il loro FQDN.

Per la manpage di rsyslogd di Ubuntu:

Se l'host remoto si trova nello stesso dominio dell'host, rsyslogd è in esecuzione, solo il nome host semplice verrà registrato anziché l'integer fqdn.

Questo è un problema per me, poichè sto riutilizzando brevi nomi tra ambienti, ad esempio core1.example.com e core1.stg.example.com, entrambi registrano 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 li informa di submit 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é entrambi i client e il server condividono una configuration che specifica "$ PreserveFQDN on", mi aspetto di vedere i nomi host di FQDN nei messaggi syslog, ma l'impostazione sembra non avere avuto alcun effetto. La maggior parte delle altre impostazioni che ho trovato per rsyslog sono rivolte a spogliare i domini da FQDNs anziché conservarli. Penso che la radice del problema è che i miei clienti non inviino il FQDN in primo luogo, ma non vedo come forzare quel comportmento.

Qualcuno può commentare ciò che potrei mancare? Immagino che non sono l'unica persona che abbia bisogno di FQDN per essere inclusi nei messaggi di log.

  • LXC networking con IP pubblico
  • Copia utente di Linux Server
  • Perché non posso installare mongodb 3.0 su Ubuntu 14.04 32bit?
  • Come avviare la shell di bash in ubuntu - cambiare la directory, aprire tabs, eseguire comandi
  • Attiva HTTPS con CNAME Apache
  • Node.js non è accessibile da IP esterni su Ubuntu
  • Lo Chef "notifica" non riesce a riavviare o ricaricare i servizi
  • script di auto-assembly encryptfs
  • 5 Solutions collect form web for “Come ottengo rsyslogd per registrare un FQDN di un server anziché il suo nome host breve?”

    Mi sono imbattuto in questo problema. Ecco come sono stato in grado di risolvere il problema.

    1. Sui client modificare il file / etc / hosts in modo che il nome host desiderato venga prima di localhost.

      127.0.0.1 hostnameforlogs localhost

    2. Nei client e nel server modifica /etc/rsyslog.conf per includere questa dichiarazione:

      $ PreserveFQDN on

    3. Sul server ho usato la variabile% HOSTNAME% per i templates in rsyslog.conf:

    Potrebbe essere un bug. Il supporto FQDN è o è stato noto per essere vago , anche se nessuno dei bug registrati FQDN sembra applicarsi.

    Come soluzione alternativa, se non si effettua alcuna trasmissione, utilizzare %FROMHOST% invece di% HOSTNAME%.

    Per modificare l'invio di rsyslog hostname, aggiungere la seguente direttiva come prima row in /etc/rsyslog.conf prima di caricare i moduli:

     $LocalHostName yourhostname 

    In alternativa, per submit rsyslog con il nome di dominio completo (FQDN, come system1.example.com) anziché semplicemente il nome host (system1), utilizzare la direttiva:

     $PreserveFQDN on 

    Questo è raramente necessario. Si consiglia di utilizzare il nome host (senza il nome di dominio) a less che non dispongano di sisthemes con nome identico.

    Un modo alternativo per impostarlo (che consente di submit registri diversi come nomi host diversi) è impostando un model personalizzato:

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

    Posso solo parlare con 7.6.x, ma $PreserveFQDN era tutto ciò che era necessario per farlo funzionare. È ansible evitare di disordine con /etc/hosts se il FQDN del nodo è impostato correttamente.

    Esempio per i sisthemes CentOS / RHEL:

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

    Assicurarsi di riavviare.

    Puoi utilizzare questo nel rsyslog config lato client.

     $LocalHostName {{HOSTNAME}} 

    e sostituire {{HOSTNAME}} con il nome host desiderato oppure è ansible detemplatizzare su ciascuno dei client utilizzando i baffi automaticamente.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.