
HAProxy ist heute eine der schnellsten und am weitesten verbreiteten Load-Balancing-Lösungen. Wenn Sie HAProxy bereits verwenden oder den Einsatz in Ihrer Umgebung in Erwägung ziehen, ist ein Verständnis der HAProxy-Protokollierung unerlässlich.
Schauen wir uns an, warum die HAProxy-Protokollierung für die Load-Balancer-Implementierung so wichtig ist, welche Protokollierungsmöglichkeiten HAProxy bietet und wie Sie die HAProxy-Protokolle verwalten und konfigurieren können, damit sie Ihren individuellen Anforderungen entsprechen.
Warum die Load-Balancer-Protokollierung wichtig ist
Ein Load Balancer ist essenziell, um Ihre Anwendung mit der Außenwelt zu verbinden. Er analysiert alle eingehenden Anfragen, validiert sie und leitet sie an den passenden Backend-Server weiter. Darüber hinaus gewährleisten Load Balancer Hochverfügbarkeit, indem sie Anfragen über gesunde Instanzen verteilen und den Zugriff auf nicht funktionale Instanzen verhindern.
Da der Load Balancer sämtliche Anfragen verarbeitet, wird er häufig zum zentralen Punkt von Untersuchungen, wenn Konnektivitätsprobleme auftreten. Daher ist HAProxy-Logging so wichtig. Es bietet detaillierte Sichtbarkeit in Anfrageflüsse, Performance-Metriken und mögliche Fehler. Durch die Analyse Ihrer HAProxy-Logs können Sie Anomalien erkennen und einen reibungslosen Betrieb sicherstellen.
Warum ist HAProxy-Log-Monitoring so wichtig?
HAProxy-Logs bieten Millisekundenpräzision und damit verwertbare Daten über Ihre Infrastruktur auf Makro- und Mikroebene. Sehen wir uns an, welche Informationen aus einem HAProxy-Log gewonnen werden können — und wie jede Logzeile zur umfassenden Observability Ihrer Anwendung beiträgt.
Traffic-Metriken
Die Analyse des Anfragenvolumens hilft, Ressourcenbedarf zu verstehen und liefert Einblicke, wie, warum und wann Fehler auftreten können.
Request- und Response-Details
Wenn Sie Fehlerzustände untersuchen, die bestimmte Benutzer oder Regionen betreffen, kann Ihnen die Untersuchung des Request-Headers, des Response-Headers, der Payloads und der Statuscodes helfen, die genaue Ursache eines Problems zu isolieren. So gewinnen Sie auch detaillierte Informationen über die Verhaltensweisen, die bei Kunden auftreten können.
Routing-Entscheidungen
HAProxy-Logs enthalten Informationen zur Request-Routing-Entscheidung, dem gewählten Backend und angewendeten Filtern oder Persistenzregeln — wichtig für effiziente Lastverteilung und Security-Compliance.
Error tracing
Schließlich enthalten die HAProxy-Logs Informationen, anhand derer Sicherheitsexperten feststellen können, wo Fehler im Lebenszyklus von Anfragen auftreten. Diese Logs können Informationen über aktive Sitzungen und deren Beendigungsstatus enthalten.
HAProxy-Logging: Standard- und vorkonfigurierte Protokollierungsformate
HAProxy leitet sein Protokollierungsformat aus den Einstellungen in der HAProxy-Konfigurationsdatei ab. Sie können das Standard-Protokollierungsformat verwenden, indem Sie die Direktive option aus der Konfiguration ausschließen oder eines der beiden vorkonfigurierten Formate einstellen.
Die beiden wichtigsten Protokollierungsoptionen in HAProxy sind:
- Für TCP- oder Layer-4-Operationen lautet die einzubindende Direktive option tcplog.
- Für die HTTP- oder Layer 7-Operationen lautet die Konfigurationsdirektive option httplog.
Schauen wir uns genauer an, wie jedes Protokollformat funktioniert und welche Daten es liefert.
Die folgenden Beispiel-Logs stammen aus einer HAProxy-Version 2.4.2, installiert auf einer AWS-Instanz mit AWS Linux 4.14, konfiguriert zur Verwaltung des Traffics zwischen zwei HTTP-Servern im selben Subnetz. Die Logs wurden mit RSyslog erfasst und lokal gespeichert.
Standard-Protokollformat (keine Option konfiguriert)
Jul 12 06:32:30 localhost haproxy[2679]: Connect from 67.171.183.156:50871 to 172.31.30.201:80 (http_front/TCP)
| Jul 12 06:32:30 | Protkoll-Zeitstempel |
| localhost | Hostname oder IP-Adresse des HAProxy-Hosts |
| haproxy[2679]: | Prozess-ID für den HAProxy-Prozess |
| Connect from 67.171.183.156:50871 to 172.31.30.201:80 | Connect fromSource IP:Source PortToDestination IP:Destination Port |
| (http_front/TCP) | Frontend-Name / Frontend-Modus |
TCP / Layer 4 Protokollformat (Option tcplog)
Jul 12 06:24:02 localhost haproxy[2590]: 67.171.183.156:54500 [12/Jul/2021:06:23:21.058] http_front http_back/webserver1 1/0/40996 383 -- 2/2/1/0/0 0/0
| Jul 12 06:24:02 | Protkoll-Zeitstempel |
| localhost | Hostname oder IP-Adresse des HAProxy-Hosts |
| haproxy[2590]: | Prozess-ID für den HAProxy-Prozess |
| 67.171.183.156:54500 | Quell-IP:Quell-Port |
| [12/Jul/2021:06:23:21.058] | Zeitstempel-Anfrage akzeptiert, mit Millisekunden-Genauigkeit |
| http_front | Frontend-Name |
| http_back/webserver1 | Zielanfrage weitergeleitet an |
| 1/0/40996 | Wartezeit in Warteschlangen (ms) /Zeit für den Verbindungsaufbau zum Zielserver (ms) /Gesamtzeit vom Eingang der Anfrage bis zum letzten Schließen (ms) |
| 383 | Gelesene Bytes |
| — | Beendigungszustand, dem — vorausgeht |
| 2/2/1/0/0 | Aktive Verbindungen /Frontend-Verbindungen /Backend-Verbindungen /Server-Verbindungen /Wiederholungen |
| 0/0 | Server-Warteschlange /Backend-Warteschlange |
HTTP / Schicht 7 (Option httplog)
Jul 12 05:54:55 localhost haproxy[1060]: 67.171.183.156:64978 [12/Jul/2021:05:54:55.077] http_front http_back/webserver1 0/0/0/1/1 200 288 - - ---- 2/2/0/0/0 0/0 "GET / HTTP/1.1"
| Jul 12 05:54:55 | Protkoll-Zeitstempel |
| localhost | Hostname oder IP-Adresse des HAProxy-Hosts |
| haproxy[1060]: | Prozess-ID für den HAProxy-Prozess |
| 67.171.183.156:64978 | Quell-IP:Quell-Port |
| [12/Jul/2021:05:54:55.077] | Zeitstempel-Anfrage akzeptiert, mit Millisekunden-Genauigkeit |
| http_front | Frontend-Name |
| http_back/webserver1 | Zielanfrage weitergeleitet an |
| 0/0/0/1/1 | Wartezeit auf vollständige Anfrage vom Client (ms) /Wartezeit in Warteschlangen (ms) /Zeit für den Verbindungsaufbau zum Zielserver (ms) /Zeit für die Antwort des Zielservers (ms) /Gesamtzeit der aktiven Anfrage im HAProxy (ms) |
| 200 | HTTP-Antwortcode |
| 288 | Gelesene Bytes |
| – – | Optionale Werte:Captured request cookieCaptured response cooking |
| —- | Beendigungszustand, dem — vorausgeht |
| 2/2/0/0/0 | Aktive Verbindungen /Frontend-Verbindungen /Backend-Verbindungen /Server-Verbindungen /Wiederholungen |
| 0/0 | Server-Warteschlangengröße /Backend-Warteschlangengröße |
| “GET / HTTP/1.1” | HTTP-Anfrage |
Anpassen des HAProxy-Protokollformats
Während die Standard- und vorkonfigurierten HAProxy-Logformate umfangreiche Einblicke bieten, fehlen möglicherweise wichtige Metriken und Logelemente, die Aktivitäten wie SSL-Verschlüsselung, Header und Payloads betreffen. Diese Elemente können das Logvolumen deutlich erhöhen, helfen jedoch bei der Problembehebung.
Wenn Sie ein benutzerdefiniertes Protokollformat verwenden möchten, können Sie die Direktive option durch eine log-format-Direktive ersetzen, gefolgt von einer Zeichenkette, die den Inhalt und das Format der gewünschten Logmeldungen angibt. Wenn wir das oben beschriebene HTTP-Protokollformat nachbilden würden, würde die Direktive wie folgt aussehen:
log-format "%ci:%cp [%tr] %ft %b/%s %TR/%Tw/%Tc/%Tr/%Ta %ST %B %CC %CS %tsc %ac/%fc/%bc/%sc/%rc %sq/%bq %hr %hs %{+Q}r"
Eine vollständige Referenz der verfügbaren Optionen und ihrer korrekten Verwendung finden Sie in der HAProxy-Dokumentation. Einige der verfügbaren Optionen, die Sie zur Unterstützung der erweiterten Fehlersuche einbeziehen können, sind:
- Verbindungs-Handshake-Zeit (%Th)
- SSL-Chiffren und Versionen (%sslc / %sslv)
- Request-Header (%hr oder %hrl für CLF-Formatierung)
- Response-Header (%hs oder %hsl für CLF-Formatierung)
- Die vollständige HTTP-Anfrage (%r)
Verwaltung des HAProxy-Protokollvolumens im großen Maßstab
HAProxy gehört zu den effizientesten Load-Balancing-Lösungen, die derzeit verfügbar sind, und kann tausende Requests pro Sekunde verarbeiten. Während HAProxy problemlos einen Logeintrag pro Request erzeugen kann, wächst mit steigendem Traffic auch das Volumen der Logdaten – was den Speicher überlasten und die manuelle Analyse unpraktikabel machen kann.
Um dies effizient zu verwalten, sollten Sie eine zentrale Log-Management-Lösung wie Sumo Logic einsetzen und automatisierte Anomalieerkennung implementieren, die Ihr Team bei Problemen sofort alarmiert. Mit Echtzeit-Logaggregation und automatisierten Alerts kann Ihr Team Probleme proaktiv erkennen, große Logvolumen verwalten und die Performance optimieren.
Erfahren Sie mehr über die Integration von HAProxy mit Sumo Logic und melden Sie sich für eine kostenlose Testversion an, um zu sehen, wie Sie Ihr Log-Management optimieren können.

