Konfiguration der PostgreSQL-Protokollierung
pgBadger kann nur Informationen auswerten, die PostgreSQL in das Protokoll schreibt. Beginnen Sie mit einem analysierbaren Präfix und einer gezielt gewählten Richtlinie für die Anweisungsprotokollierung. Fügen Sie anschließend die Betriebsereignisse hinzu, die Sie analysieren möchten.
Mindestkonfiguration für die Abfrageprotokollierung
Um Abfragetext und -dauer zu erfassen, aktivieren Sie die dauerabhängige Protokollierung von Anweisungen:
0 protokolliert jede abgeschlossene Anweisung. Auf einem stark ausgelasteten Server sollten Sie einen höheren Schwellenwert in Millisekunden wählen, um das Protokollvolumen zu begrenzen. Prüfen Sie den zusätzlichen Aufwand und die Zunahme des Speicherbedarfs, bevor Sie in der Produktion einen niedrigen Schwellenwert aktivieren.
Wenn Sie nur Dauer und Anzahl der Abfragen, aber nicht den Abfragetext benötigen, verwenden Sie:
Verwenden Sie vorzugsweise log_min_duration_statement, wenn Sie Berichte über die langsamsten Abfragen und die Gesamtabfragezeit benötigen.
Erforderliche Präfixfelder
Ein benutzerdefinierter log_line_prefix muss die beiden folgenden Felder enthalten:
- ein Zeitfeld:
%t,%moder%n; - ein Prozess- oder Sitzungsfeld:
%poder%c.
Ein minimales stderr-Präfix ist:
Ein nützlicheres Präfix protokolliert Benutzer, Datenbank, Anwendung und Client:
Das entsprechende Präfix für ein syslog-Ziel lässt die bereits durch syslog bereitgestellten Zeitstempel- und Prozessfelder weg:
Eine weitere unterstützte Reihenfolge der Schlüssel ist:
Wenn Ihr Präfix keiner von pgBadger erkannten Form entspricht, übergeben Sie den exakten Wert mit --prefix. Geben Sie ihn genau wie in postgresql.conf an; vereinfachen oder verändern Sie ihn nicht.
Empfohlene Ereigniseinstellungen
Aktivieren Sie die Ereignisklassen, die im Bericht erscheinen sollen:
Diese Einstellungen können erheblichen Protokollverkehr erzeugen. Insbesondere protokollieren log_temp_files = 0 und log_autovacuum_min_duration = 0 jedes passende Ereignis; passen Sie die Werte an die Arbeitslast und das Aufbewahrungsbudget an.
Servernachrichten auf Englisch beibehalten
Der Parser erkennt PostgreSQL-Servernachrichten auf Englisch. Verwenden Sie entweder:
oder:
Locale-Einstellungen wie fr_FR.UTF-8 werden vom Parser des Originalprojekts nicht unterstützt.
Widersprüchliche Einstellungen für Anweisungen vermeiden
Aktivieren Sie log_min_duration_statement, log_duration und log_statement = 'all' nicht gemeinsam. Dieselbe Ausführung kann mehrfach protokolliert werden, was die pgBadger-Zähler verfälscht und die Protokollmenge erheblich erhöht.
| Ziel | Empfohlene Einstellung |
|---|---|
| Abfragetext und Zeitmessung | log_min_duration_statement = 0 oder ein gewählter Schwellenwert |
| Dauer und Anzahl allein | log_min_duration_statement = -1, log_duration = on |
| Umfassende Protokollierung von Anweisungen | Behandeln Sie log_statement als separate Protokollierungsrichtlinie; kombinieren Sie die drei Einstellungen nicht für pgBadger-Statistiken |
Prüfen Sie nach dem Neuladen von PostgreSQL mehrere echte Protokolleinträge, bevor Sie eine umfangreiche Analyse ausführen. Stellen Sie sicher, dass die Felder für Zeitstempel, Prozess-/Sitzungskennung, Benutzer, Datenbank, Anwendung und Client dem ausgewählten Format entsprechen.