Ich habe gerade haproxy auf meinem installiert Testserver.

Gibt es eine Möglichkeit, seine Protokolle in eine lokale Datei anstatt in ein Syslog zu schreiben?

Dies dient nur zum Testen, sodass ich nicht mit dem Öffnen beginnen möchte Ports / Syslog mit all meinen Testdaten überladen.

Leider dreht sich die einzige Information, die ich finden kann, um die Protokollierung auf einem Syslog-Server.

Ich habe versucht, Folgendes zu verwenden:

log /home/user/ha.log local0 

in meiner Konfiguration. Aber das sagte mir:

[ALERT] 039/095022 (9528) : sendto logger #1 failed: No such file or directory (errno=2) 

Beim Neustart. Also habe ich die Datei mit touch /home/user/ha.log erstellt und an dem Punkt neu gestartet, an dem ich Folgendes erhalten habe:

[ALERT] 039/095055 (9593) : sendto logger #1 failed: Connection refused (errno=111) 

Ist dies möglich oder Muss ich Syslog usw. konfigurieren, um meine Testdaten anzuzeigen?

Kommentare

  • Ich habe ‚ wirklich kein Syslog verwenden? Config ist gar nicht so schwierig. Sie können HAProxy eine lokale Einrichtung zuweisen und Ihren Syslog-Daemon so konfigurieren, dass diese Einträge in eine andere Datei und nicht in andere Syslog-Dateien (oder Netzwerk-Streams) geschrieben werden, wenn Sie ‚ dies nicht tun Die HAProxy-Protokolle sollen nicht mit allem anderen gemischt werden.

Antwort

Haproxy wird einfach nicht unterstützt Protokollierung in Dateien. Wie in der Dokumentation angegeben ( https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#3.1-log ), verwendet die Anweisung „log“ als ersten Parameter an Wenn diese „sa-Datei“ ein Unix-Socket ist und HAProxy im Syslog-Format mit diesem Socket spricht. Haproxy ist so konzipiert, da es für Proxy-Anforderungen und nicht für das Schreiben von Dateien verantwortlich ist und das Schreiben von Protokolldateien an Syslog delegiert Wenn Sie sich nicht mit Ihrem Computer anlegen möchten, können Sie beispielsweise logstash installieren und Folgendes ausführen: logstash -e "input { unix { path => "/tmp/haprxoy_log.sock" } } output { stdout { } }" und hinzufügen: log /tmp/haprxoy_log.sock In Ihre haproxy.cfg, um es zu testen.

Kommentare

  • Ich ‚ erhalte “ E: Paketprotokoll nicht gefunden „. Wurde logstash aus ubuntu entfernt?
  • @ user568021 scheint, dass logstash nicht in ubuntu bereitgestellt wird, aber elastisch (logstash ‚ s Betreuer) bietet eine passende Quelle. Außerdem ist logstash eine Java-Software, sodass Sie sie möglicherweise ausführen können, indem Sie eine JAR-Datei herunterladen, in der sie mit einer JRE (die von Ubuntu bereitgestellt wird) ausgeführt wird.

Answer

Sie können die Haproxy-Protokollkonfigurationsdatei unter /etc/rsyslog.d/ ändern, um die Datei auf den gewünschten Pfad zu verweisen. Ich bin mir bei anderen Distributionen nicht sicher. Für mich verwende ich Debian. Ich habe /etc/rsyslog.d/49-haproxy.conf geändert, um auf /var/log/haproxy/haproxy.log,

Sie sollten auch den Protokollpfad in /etc/logrotate.d/haproxy auf den neuen Pfad aktualisieren, damit die Protokolldatei im neu konfigurierten Pfad mit gzip.

Starten Sie dann rsyslog.service neu.

sudo systemctl restart rsyslog.service 

Jetzt haproxy.log.* befindet sich im Verzeichnis /var/log/haproxy/.

Kommentare

  • Wie erstelle ich eine separate Datei? Protokoll für Fehler wie /var/log/haproxy-errors.log ohne Auswirkungen auf das ursprüngliche haproxy.log?

Antwort

Seit Version 1.9 unterstützt HAProxy die Protokollierung bei stdout und stderr.

In diesem Sinne ist es ziemlich trivial, es an eine Datei weiterzuleiten.

# change haproxy.cfg file with the following global log stdout local0 debug defaults log global option httplog 

Und dann können Sie HAProxy einfach so ausführen:

haproxy -f haproxy.cfg > haproxy.log 2>&1 & 

Wie Sie wahrscheinlich wissen, > pipes stdout in die Datei haproxy.log und dann 2>&1 Pipes stderr auch in dieselbe Datei. Es endet mit &, wodurch der Prozess in den Hintergrund gerückt wird.

Sie können schicker werden und versuchen, ein Skript einzurichten, um die vorherige Instanz von haproxy, indem Sie Folgendes tun:

#!/bin/bash # mini launcher kill -9 `cat /home/user/haproxy.pid` /home/user/haproxy -f /home/haproxy.cfg > /home/user/haproxy.log 2>&1 & echo $! > /home/user/haproxy.pid 

Schwierig, wie Sie wahrscheinlich erkennen können … nicht empfohlen.

Bearbeiten: Die Protokollierung in Dateien war früher ein blockierendes Ereignis und daher nicht empfohlen, speziell für so etwas wie HAProxy. Das HAProxy-Team hat in dem oben verlinkten Veröffentlichungsbeitrag deutlich gemacht, dass dies nicht mehr der Fall ist .

Wir haben diese Anfrage ziemlich oft erhalten und einige Zeit damit verbracht, den besten Weg zu planen, sie zu implementieren – ohne zu blockieren – und wir freuen uns, Ihnen mitteilen zu können, dass wir dies getan haben eine Lösung gefunden!

Kommentare

  • Warum wird bei stdout / err protokolliert? “ nicht empfohlen „? Ist dies Ihre Meinung oder gibt es eine offizielle Dokumentation zu Problemen damit?
  • @Florian, Sie haben Recht. Ich wurde durch früheres Verhalten irregeführt. Es blockiert nicht die jüngsten Veröffentlichungen, daher war der Satz meinungsbildend (und falsch). Antwort bearbeitet. Vielen Dank!

Antwort

Sie haben versucht, im Home-Verzeichnis des Benutzers zu konfigurieren, haproxy hat keine Berechtigung Um auf das Ausgangsverzeichnis des Benutzers zuzugreifen, verursachen diese Probleme.

Versuchen Sie es stattdessen an einem anderen Ort. Erstellen Sie ein Verzeichnis in /var/<directory>

Kommentare

  • Ich habe sudo touch /var/log/ha.log ausprobiert und log /var/log/ha.log local0 zu meiner Konfiguration, aber der gleiche Fehler wie oben connection refused.
  • Im Protokoll, warum geben Sie am Ende local0 an?
  • ch habe versucht, es wegzulassen, aber als ich neu gestartet habe, habe ich den Fehler 'log' expects <address> and <facility> as arguments. erhalten, daher war dort etwas erforderlich. Gemäß den Anweisungen <facility> must be one of the 24 standard syslog facilities (was meiner Meinung nach Teil des Problems sein kann)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.