So halten Sie Haproxy-Protokollmeldungen von / var / log / syslog fern

29

Ich habe die Haproxy-Protokollierung über rsyslogd mit den Tipps aus diesem Artikel eingerichtet , und alles scheint gut zu funktionieren. Die Protokolldateien erhalten die Protokollnachrichten.

Jede Protokollmeldung von haproxy wird jedoch auch unter angezeigt /var/log/syslog. Dies bedeutet, dass das Syslog nach dem Start des Servers unbrauchbar wird, da es mit Haproxy-Log-Meldungen überflutet wird.

Ich möchte diese Nachrichten aus herausfiltern /var/log/syslog. Nachdem ich die rsyslogd-Dokumentation durchgesehen hatte, versuchte ich, die Datei folgendermaßen zu ändern /etc/rsyslog.d/50-default.conf:

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

Ich habe das ;haproxy.noneTeil einfach hinzugefügt . Nach dem Neustart von rsyslogd funktionierte es nicht mehr, bis ich meine Änderungen zurücksetzte.

Was mache ich falsch?

itsadok
quelle

Antworten:

26

Sie können auch Folgendes tun, um sicherzustellen, dass keine anderen Protokolle erstellt werden:

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

Das & ~bedeutet, dass für den Rest der Regeln nicht irgendwo anders angegeben wird, was in der obigen Zeile übereinstimmt.

Kyle Brandt
quelle
Vielen Dank. Dies scheint sinnvoller zu sein, als die Hauptkonfiguration zu bearbeiten.
itsadok
13
In diesem Fall muss die Zeile local0. * Vor der Zeile " . " In /etc/rsyslog.d/50-default.conf verarbeitet werden. Ich habe eine Datei mit dem Namen /etc/rsyslog.d/haproxy.conf erstellt, die meine haproxyspezifische Protokollierungskonfiguration enthält, sie wurde jedoch trotz eines "& ~" am Ende in syslog protokolliert. Dies liegt (natürlich) daran, dass die Datei 50-default.conf vor der Datei haproxy.conf geladen wird, sodass der catchall " . " Vor meiner Zeile "local0. *" Abgeglichen wurde. Die Lösung wurde auf meine haproxy spezifische Datei zu /etc/rsyslog.d/49-haproxy.conf umbenennen
Giles Thomas
1
FYI ein kleines Updatersyslogd-2307: warning: ~ action is deprecated, consider using the 'stop' statement instead [try http://www.rsyslog.com/e/2307 ]
KCD
Hier wird die Verwendung von & stopanstelle von & ~: rsyslog.com/doc/v8-stable/compatibility/v7compatibility.html erläutert .
Slm
14

Die Verwendung von & ~wurde in Version 7 von rsyslogd verworfen, und Sie werden aufgefordert, & stopstattdessen zu verwenden . Weitere Informationen hierzu finden Sie in diesem Abschnitt der v7-Kompatibilitätsseite .

omruleset- und discard (~) -Aktion sind veraltet

Beide funktionieren weiterhin, wurden jedoch durch bessere Alternativen ersetzt.

Die Aktion "Verwerfen" (Tilde-Zeichen) wurde durch die RainerScript-Direktive "Stop" ersetzt. Es wird als intuitiver angesehen und bietet eine etwas bessere Leistung.

Das omruleset-Modul wurde durch die RainerScript-Direktive "call" ersetzt. Mit Call können Sie einen Regelsatz wie ein Unterprogramm ausführen, und das mit einer viel höheren Leistung als mit omruleset. Beachten Sie, dass omruleset von einer asynchronen Warteschlange ausgeführt werden kann. Dies war eher eine Nebenwirkung als ein gewünschter Effekt und wird von der call-Anweisung nicht unterstützt. Wenn dieser Effekt benötigt wurde, kann er einfach simuliert werden, indem die aufgerufenen Regelsatzaktionen asynchron ausgeführt werden (was auf jeden Fall die richtige Vorgehensweise ist).

Beachten Sie, dass die veralteten Module bei Verwendung Warnmeldungen ausgeben. Sie sagen, dass das Konstrukt veraltet ist und welche Anweisung als Ersatz verwendet werden soll. Dies hat keine Auswirkungen auf den Betrieb: Beide Module sind noch voll funktionsfähig und werden in Version 7 nicht entfernt.

Also für HAProxy so etwas stattdessen:

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

In & stopBezug auf die Funktionsweise weist der Befehl rsyslogd an, alle zusätzlichen Nachrichten zu verwerfen, die bis zu diesem Punkt mit den zuvor übereinstimmenden Regeln übereinstimmten. Um sicherzustellen, dass diese Regel frühzeitig erkannt wird, können Sie den Namen der Datei von /etc/rsyslog.d/haproxy.confin ändern /etc/rsyslog.d/00-haproxy.conf.

slm
quelle
3

Ok, ich habe es herausgefunden. So /etc/rsyslog.d/20-haproxy.confsieht mein aus:

$ModLoad imudp
$UDPServerRun 514

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

Ich habe die Zeile geändert in 50-default.conf:

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

Und jetzt scheint es zu tun, was ich will.

itsadok
quelle
Es ist im Allgemeinen vorzuziehen, Konfigurationsdateien, die von anderen Paketen erstellt wurden, NICHT zu ändern, da dies zu Upgrade- / Besitzproblemen führt. Wenn es sich um einen einmaligen Schneeflockenserver handelt, ist das Ändern der Datei 50-default.conf im Allgemeinen eine "schlechte Sache".
Bruce Edge
2

Es gibt eine bessere Lösung für die Haproxy-Protokollierung.

  • HAproxy wird in chroot ausgeführt, sodass kein Zugriff möglich ist /dev/log
  • Laut offiziellem Handbuch muss rsyslog so konfiguriert sein, dass es auf den Netzwerk-Socket hört:

    # 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
    

Dafür können Sie jedoch nur rsyslog-Sockets verwenden:

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
          .......
user320813
quelle
1

Ich bevorzuge es, mich nicht mit der Reihenfolge der Datei herumzuschlagen, also füge ich stattdessen eine local0.none der hinzu . Zeileneintrag. Konfig sieht so aus:

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

local2.*                                                 /var/log/haproxy.log

(Getestet unter CentOS 7)

Hoffentlich hilft das!

mgna20
quelle