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

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

Tuttavia, each messaggio di log di haproxy viene visualizzato anche in /var/log/syslog . Ciò significa che una volta che il server entra in esecuzione, il syslog sarà abbastanza inutile, in quanto verrà eseguito con i messaggi di log haproxy.

Desidero filtrare questi messaggi da /var/log/syslog . Dopo aver superato la documentazione rsyslogd, ho cercato di cambiare il file /etc/rsyslog.d/50-default.conf così:

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

Ho semplicemente aggiunto la parte ;haproxy.none . Dopo aver riavviato rsyslogd, ha smesso di funzionare completamente fino a quando non sono rientrato le mie modifiche.

Che cosa sto facendo di sbagliato?

5 Solutions collect form web for “Come mantenere i messaggi log di haproxy da / var / log / syslog”

Potresti anche fare quanto segue che lo farà per non andare in nessun altro registro:

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

Il & ~ significa non mettere quello che corrisponde nella row sopra nessuna parte per il resto delle regole.

L'utilizzo di & ~ stato deprecato in v7 di rsyslogd e ti inviti a utilizzare & stop invece. Potete leggere di più su questa sezione della pagina di compatibilità v7 .

le azioni omruleset e discard (~) vengono deprecate

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

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

Il module omruleset è stato sostituito dalla direttiva RainerScript "chiamata". Le autorizzazioni di chiamata permettono di eseguire un ruleset come una subroutine, e lo fa con performance molto più elevate di quelle di omruleset. Si noti che omruleset potrebbe essere eseguito da una coda di async. Questo era più un lato di un effetto desiderato e non è supportto dall'istruzione di chiamata. Se questo effetto fosse necessario, può essere semplicemente simulato eseguendo le azioni dei rulesets chiamate in modo asincrono (ciò che comunque è il modo giusto per gestirlo).

Si noti che i moduli deprecati emettono messaggi di avviso quando vengono utilizzati. Dicono che il costrutto è deprecato e quale dichiarazione deve essere utilizzata come sostituzione. Ciò non pregiudica le operazioni: entrambi i moduli sono ancora pienamente operativi e non verranno rimossi nel v7 timeframe.

Quindi per HAProxy qualcosa di simile al posto di questo:

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

A proposito di come funziona, il & stop dice a rsyslogd di scartare tutti i messaggi aggiuntivi che corrispondono alle regole precedentemente abbinate fino a questo punto. Per garantire che questa regola venga presto disponibile, puoi cambiare il nome del file da /etc/rsyslog.d/haproxy.conf a /etc/rsyslog.d/00-haproxy.conf .

Ok, l'ho capito. Questo è ciò che compare a /etc/rsyslog.d/20-haproxy.conf :

 $ModLoad imudp $UDPServerRun 514 local0.* -/var/log/haproxy_0.log local1.* -/var/log/haproxy_1.log 

Ho cambiato la row in 50-default.conf per:

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

E adesso sembra fare quello che voglio.

C'è una soluzione migliore per la logging di haproxy.

  • HAproxy viene eseguito in chroot per cui non è ansible accedere a /dev/log
  • Secondo il manuale ufficiale, rsyslog deve essere configurato per ascoltare la presa di networking:

     # 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 è ansible utilizzare solo i 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 ....... 

Preferisco non confondere con l'ordinazione del file in modo che invece aggiungo un local0.none al file . linea di ingresso. Config sembra:

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

(Testato su CentOS 7)

Spero possa aiutare!

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