Come mantenere i messaggi di registro haproxy fuori da / var / log / syslog


29

Ho impostato la registrazione haproxy tramite rsyslogd usando i suggerimenti di questo articolo e tutto sembra funzionare bene. I file di registro ottengono i messaggi di registro.

Tuttavia, ogni messaggio di registro di haproxy appare anche a /var/log/syslog. Ciò significa che una volta che il server sarà attivo, il syslog sarà abbastanza inutile, poiché verrà investito con messaggi di log haproxy.

Vorrei filtrare quei messaggi da /var/log/syslog. Dopo aver esaminato la documentazione di rsyslogd, ho provato a modificare il file in /etc/rsyslog.d/50-default.confquesto modo:

*.*;auth,authpriv.none;haproxy.none     -/var/log/syslog

Ho semplicemente aggiunto la ;haproxy.noneparte. Dopo aver riavviato rsyslogd ha smesso di funzionare completamente fino a quando non ho ripristinato le mie modifiche.

Che cosa sto facendo di sbagliato?

Risposte:


26

Puoi anche fare quanto segue che lo farà in modo che non vadano in nessun altro registro:

local0.*                        -/var/log/haproxy.log
& ~

Il & ~mezzo per non mettere ciò che corrisponde nella riga sopra in nessun altro posto per il resto delle regole.


Grazie. Questo sembra avere più senso che dover modificare la configurazione principale.
aggiunto il

13
Vale la pena notare che se si esegue questa operazione, la riga local .0. * Deve essere elaborata prima della riga " . " In /etc/rsyslog.d/50-default.conf. Ho creato un file chiamato /etc/rsyslog.d/haproxy.conf per contenere la mia configurazione di registrazione specifica per haproxy, ma si è registrato su syslog pur avendo un "& ~" alla fine. Questo perché (ovviamente) 50-default.conf viene caricato prima di haproxy.conf, quindi la catchall " . " È stata trovata prima della mia riga "local0. *". La soluzione era quella di rinominare il mio file specifico di haproxy in /etc/rsyslog.d/49-haproxy.conf
Giles Thomas,

1
Cordiali saluti, un piccolo aggiornamentorsyslogd-2307: warning: ~ action is deprecated, consider using the 'stop' statement instead [try http://www.rsyslog.com/e/2307 ]
KCD,

Questo spiega l'uso di & stopinvece di & ~: rsyslog.com/doc/v8-stable/compatibility/v7compatibility.html .
slm,

14

L'uso di è & ~stato deprecato in v7 di rsyslogd e sei invece incoraggiato a usarlo & stop. Puoi leggere di più al riguardo in questa sezione della pagina di compatibilità v7 .

Le azioni omruleset e discard (~) sono obsolete

Entrambi continuano a funzionare, ma sono stati sostituiti da alternative migliori.

L'azione di scarto (carattere tilde) è stata sostituita dalla direttiva RainerScript "stop". È considerato più intuitivo e offre prestazioni leggermente migliori.

Il modulo omruleset è stato sostituito dalla direttiva RainerScript "call". Call consente di eseguire un set di regole come una subroutine e lo fa con prestazioni molto più elevate rispetto a Omruleset. Si noti che omruleset potrebbe essere eseguito da una coda asincrona. Questo era più un lato che un effetto desiderato e non è supportato dall'istruzione call. Se tale effetto fosse necessario, può essere semplicemente simulato eseguendo le azioni delle regole chiamate chiamate in modo asincrono (qual è in ogni caso il modo giusto per gestirlo).

Si noti che i moduli obsoleti emettono messaggi di avviso quando vengono utilizzati. Dicono che il costrutto è deprecato e quale istruzione deve essere usata come rimpiazzo. Ciò non influisce sulle operazioni: entrambi i moduli sono ancora completamente operativi e non verranno rimossi nel periodo di tempo v7.

Quindi per HAProxy qualcosa del genere invece:

$ more /etc/rsyslog.d/haproxy.conf
local2.*    /var/log/haproxy.log
& stop

Per quanto riguarda il modo in cui funziona, & stopdice a rsyslogd di scartare qualsiasi messaggio aggiuntivo che corrispondesse alle regole precedentemente abbinate fino a questo punto. Per garantire che questa regola venga raccolta in anticipo, è possibile modificare il nome del file da /etc/rsyslog.d/haproxy.confa /etc/rsyslog.d/00-haproxy.conf.


3

Ok, l'ho capito. Ecco /etc/rsyslog.d/20-haproxy.confcome appare il mio :

$ModLoad imudp
$UDPServerRun 514

local0.* -/var/log/haproxy_0.log
local1.* -/var/log/haproxy_1.log

Ho cambiato la linea in 50-default.conf:

*.*;auth,authpriv,local0,local1.none     -/var/log/syslog

E ora sembra fare quello che voglio.


È generalmente preferibile NON modificare i file di configurazione creati da altri pacchetti in quanto crea problemi di aggiornamento / proprietà. Se si tratta di un server a fiocco di neve unico, va bene comunque, ma per le distribuzioni automatizzate, la modifica di 50-default.conf è generalmente una "cosa negativa".
Bruce Edge,

2

Esiste una soluzione migliore per la registrazione haproxy.

  • HAproxy viene eseguito in chroot quindi non è possibile accedervi /dev/log
  • Secondo il manuale ufficiale rsyslog deve essere configurato per ascoltare il socket di rete:

    # to have these messages end up in /var/log/haproxy.log you will
    # need to:
    #
    # 1) configure syslog to accept network log events.  This is done
    #    by adding the '-r' option to the SYSLOGD_OPTIONS in
    #    /etc/sysconfig/syslog
    #
    # 2) configure local2 events to go to the /var/log/haproxy.log
    #   file. A line like the following can be added to
    #   /etc/sysconfig/syslog
    

Ma puoi usare solo socket rsyslog per questo:

rsyslog.d / haproxy.conf:

    # HAproxy local socket
    $AddUnixListenSocket /var/lib/haproxy/dev/log
    :programname, contains, "haproxy" /var/log/haproxy.log
    & stop

haproxy.cfg:

    global
          log         /dev/log daemon
          chroot      /var/lib/haproxy
          .......

1

Preferisco non scherzare con l'ordinamento del file, quindi invece aggiungo local0.none a . riga. La configurazione è simile a:

*.info;mail.none;authpriv.none;cron.none;local2.none     /var/log/messages

local2.*                                                 /var/log/haproxy.log

(Testato su CentOS 7)

Spero che sia d'aiuto!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.