PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

PostgreSQL-Protokollanalyse mit pgBadger

Manchmal sind Protokolle die letzten Dinge, die überprüft werden, wenn etwas schief geht, aber sie sind normalerweise die ersten Dinge, die nach Hilfe schreien, wenn etwas passiert. Das manuelle Durchsuchen der Protokolle nach Problemen hilft, aber warum nicht Protokollanalysatoren verwenden, um automatisch Berichte zu erstellen, die einen Einblick in die Datenbank geben, bevor etwas schief geht?

Der PostgreSQL-Protokollanalysator „pgBadger“ ist ein in Perl geschriebenes Open-Source-Programm für „schnelle PostgreSQL-Protokollanalyseberichte“, das die Protokollausgabe einer laufenden PostgreSQL-Instanz übernimmt und in eine HTML-Datei verarbeitet. Der generierte Bericht zeigt alle gefundenen Informationen in einem schönen und leicht lesbaren Berichtsformat. Diese Berichte können dabei helfen, Fehler im System, Checkpoint-Verhalten, Vakuumverhalten, Trends und andere grundlegende, aber entscheidende Informationen für ein PostgreSQL-System zu beleuchten.

Einrichtung der PostgreSQL-Protokollierung

Um pgBadger effektiv zu nutzen, sollte die Anmeldung in PostgreSQL so eingerichtet werden, dass pgBadger so viele Informationen wie möglich zur Verfügung gestellt werden. Eine Handvoll Optionen können angepasst werden, damit das Datenbanksystem nützliche Informationen für pgBadger protokollieren kann, um nützliche Berichte zu erstellen. Die vollständige Dokumentation für die PostgreSQL-Konfiguration finden Sie auf der pgBadger-Github-Seite, aber einige grundlegende Informationen finden Sie weiter unten.

Bei der Ausführung verarbeitet pgBadger die Protokolle von PostgreSQL, unabhängig davon, ob es sich um syslog, stderr oder csvlog handelt, solange die Protokollzeilen selbst genügend Informationen im Präfix enthalten.

Beispiele für log_line_prefix-Werte:

Wenn log_destination =„syslog“

log_line_prefix = 'user=%u,db=%d,app=%aclient=%h '

Wenn log_destination =‘stderr’

log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h '

Grundlegende Konfigurationseinstellungen, die in postgresql.conf festgelegt werden:

log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0
log_autovacuum_min_duration = 0
log_error_verbosity = default
log_statement = off
lc_messages='C'

Log_min_duration_statement = (see below)

Einer der hilfreicheren Teile der Berichte von pgBadger ist der Bericht über langsame Abfragen, der sich auf die Datenbankprotokollierungsabfragen stützt, die den Wert log_min_duration_statement überschreiten. Dieser Wert wird in Millisekunden dargestellt, und jede Abfrage, die mit einer größeren Zeit abgeschlossen wird, wird protokolliert und dann von pgBadger generiert. Dies ist hilfreich, um Abfragen zu finden und zu analysieren, die länger als gewünscht dauern.

Während das Festlegen dieses Werts auf 0 zum Protokollieren aller Abfragen die meisten Informationen liefern würde, kann dies leicht dazu führen, dass Protokolldateien generiert werden, die viel zu groß sind, und die Leistung der Datenbank selbst aufgrund des ständigen Schreibens von Protokollen beeinträchtigen. Ein vernünftigerer Wert liefert keine perfekten Abfragezahlen, konzentriert sich aber weiterhin auf langsam laufende Abfragen im Allgemeinen. Wenn Abfragen, die einige Minuten dauern, als „langsam“ gelten, wäre es gut, den Wert auf eine Minute zu setzen. Wenn Abfragen, die länger als ein paar Sekunden laufen, als „langsam“ angesehen werden, würde es auch gut funktionieren, den Wert auf etwa 5 Sekunden einzustellen.

Protokolle erstellen

Das Generieren von Protokollen erfolgt über die Befehlszeile mit der ausführbaren Datei pgBadger. Es gibt eine Vielzahl von Optionen, aber die grundlegendste Einrichtung besteht darin, das von der Datenbank verwendete Protokollzeilenpräfix, die Protokolldatei und die Ausgabe-HTML-Datei anzugeben.

./pgbadger --prefix '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h ' postgresql.log -o postgresql.html
[========================>] Parsed 560607407 bytes of 560607407 (100.00%), queries: 2929645, events: 5

Weitere Informationen zu den verschiedenen Optionen für pgBadger finden Sie in der Dokumentation oder führen Sie die Binärdatei mit dem Eingabeparameter --help aus.

Erweiterte Protokollerstellung

Da das Generieren von Berichten zu Protokollen eine einfache Befehlszeilenausführung ist, können benutzerdefinierte Skripte und Programme eingerichtet werden, um Berichte automatisch zu erstellen, auf Webservern bereitzustellen, per E-Mail zu versenden oder langfristig zu archivieren. Erkunden Sie die verschiedenen Optionen, die für die Berichterstellung verfügbar sind, und werden Sie kreativ mit Automatisierungssystemen für die Berichterstellung und -bereitstellung.

Überprüfen von Protokollen

Beim Überprüfen der Protokolle kommt der Spaß ins Spiel. Der generierte Bericht kann jetzt in einem Webbrowser geöffnet und überprüft werden.

Globale Statistiken

Der Abschnitt globale Statistiken enthält einige grundlegende Informationen aus dem PostgreSQL-Protokoll, darunter:

  • Abfragen:Die Anzahl der gefundenen Abfragen, Dauer, Anzahl der normalisierten Abfragen usw.
  • Ereignisse:Gesamtzahl der Ereignisse, normalisierte Ereignisse usw.
  • Staubsauger:Die Gesamtzahl der gefundenen automatischen Staubsauger und automatischen Analysen.
  • Temporäre Dateien:Die Gesamtzahl der gefundenen temporären Dateien, maximale Größe und durchschnittliche Größe.
  • Sitzung:Gesamtzahl der Sitzungen, Sitzungsspitzenzeit, Gesamtdauer der Sitzungen, durchschnittliche Dauer der Sitzungen, durchschnittlich gefundene Suchanfragen pro Sitzung, durchschnittliche Dauer der Suchanfragen pro Sitzung.
  • Verbindungen:Gesamtzahl der Verbindungen, Spitzenverbindungen und Gesamtzahl der verbundenen Datenbanken.

Hinweis: Ergebnisse, die Abfragen, Abfrageanzahl oder Abfragedauer betreffen, sind mit Werten von log_min_duration_statement größer als 0 ungenau.

Beispiel:

Beispiel für globale pgBadger-Statistiken

Verbindungen

Die Seite „Verbindungen“ zeigt Diagramme mit detaillierten Angaben zu den in den Protokollen gefundenen Verbindungsinformationen. Solange sowohl log_connections als auch log_disconnections aktiviert sind, sind die Werte hier korrekt. Verfügbare Diagramme sind:

  • Hergestellte Verbindungen:Zeigt die maximale, minimale und durchschnittliche Anzahl von Verbindungen im Laufe der Zeit an.
  • Verbindungen pro Datenbank:Ein Tortendiagramm und eine Tabellenansicht, die die Anzahl der Verbindungen für jede gefundene Datenbank anzeigen.
  • Verbindungen pro Benutzer:Ein Tortendiagramm und eine Tabellenansicht, die die Anzahl der Verbindungen für jeden gefundenen Benutzer anzeigen.
  • Verbindungen pro Host:Ein Tortendiagramm und eine Tabellenansicht, die die Anzahl der Verbindungen für jeden gefundenen Quellhost zeigt.

Beispiel:

Beispiel für ein Kreisdiagramm für pgBadger-Verbindungen

Sitzungen

Die Sitzungsseite ähnelt der Verbindungsseite, enthält jedoch einige weitere Informationen zu den Sitzungen selbst.

  • Gleichzeitige Sitzungen:Ein Liniendiagramm, das die Anzahl der Sitzungen im Laufe der Zeit zeigt.
  • Histogramm der Sitzungszeiten:Ein Balkendiagramm und eine Tabelle mit Sitzungszeiten.
  • Sitzungen pro Datenbank:Ein Tortendiagramm und eine Tabellenansicht mit der Anzahl der Sitzungen für jede gefundene Datenbank.
  • Sitzungen pro Nutzer:Ein Tortendiagramm und eine Tabellenansicht, die die Anzahl der Sitzungen für jeden gefundenen Nutzer zeigen.
  • Sitzungen pro Host:Ein Tortendiagramm und eine Tabellenansicht, die die Anzahl der Sitzungen für jeden gefundenen Quellhost zeigen.
  • Sitzungen pro Anwendung:Die Anzahl der Sitzungen, die pro Anwendung verbunden sind.
pgBadger-Sitzungen pro Datenbank-Kreisdiagramm

Kontrollpunkte

Die Checkpoints-Seite enthält Informationen zum Checkpointer-Prozess, einschließlich der Anzahl der geschriebenen Puffer, WAL-Dateien und anderer allgemeiner Informationen.

  • Checkpoint-Puffer:Ein Liniendiagramm, das die Anzahl der Puffer zeigt, die vom Checkpoint-Prozess im Laufe der Zeit geschrieben wurden.
  • Checkpoints WAL-Dateien:Ein Liniendiagramm, das die Anzahl der WAL-Dateien anzeigt, die im Laufe der Zeit vom Checkpointer hinzugefügt, entfernt oder recycelt wurden.
  • Checkpoint-Entfernung:Ein Liniendiagramm, das die Entfernung und Schätzung für Checkpoints anzeigt.
  • Checkpoints-Aktivität:Eine Tabelle, die die vorherigen vier Datenpunkte in Tabellenform anzeigt.
pgBadger Checkpoints Buffers chartLaden Sie noch heute das Whitepaper herunter PostgreSQL-Verwaltung und -Automatisierung mit ClusterControlErfahren Sie, was Sie für die Bereitstellung und Überwachung wissen müssen , verwalten und skalieren Sie PostgreSQLLaden Sie das Whitepaper herunter

Temp-Dateien

Die Seite mit temporären Dateien enthält Informationen zu temporären Dateien, die erstellt werden, wenn eine Abfrage nicht mehr über work_mem verfügt und die Festplatte zum Sortieren oder Filtern von Ergebnissen verwenden muss, bevor sie an die Anwendungen zurückgegeben werden. Diese Dateien werden automatisch gelöscht, wenn die Abfrage abgeschlossen ist, und die Kenntnis der temporären Dateiaktivität hilft dem Administrator, den work_mem-Parameter zu optimieren.

  • Größe temporärer Dateien:Ein Liniendiagramm, das den Speicherplatz zeigt, der von temporären Dateien im Laufe der Zeit verwendet wird.
  • Anzahl temporärer Dateien:Ein Liniendiagramm, das die Anzahl der verwendeten temporären Dateien im Laufe der Zeit zeigt.
  • Aktivität für temporäre Dateien:Eine Tabelle, die die in den vorherigen Diagrammen bereitgestellten Informationen anzeigt, jedoch in Tabellenform.
Diagramm zur pgBadger-Größe temporärer Dateien

Staubsauger

Diese Seite zeigt Informationen zu VAKUUMEN und ANALYSEN, die in der Datenbank vorkommen. Diese Informationen sind nützlich, um zu wissen, ob der Autovacuum-Prozess seine Arbeit gut genug macht oder ob er festgefahren ist und mehr Ressourcen benötigt.

  • Staubsauger/Analysen-Verteilung:Ein Liniendiagramm, das VAKUUMs und ANALYSEN im Laufe der Zeit sowie Informationen zu der Tabelle zeigt, die die meiste CPU-Rechenleistung verbraucht hat.
  • Analysen pro Tabelle:Ein Tortendiagramm und eine Tabelle mit den Tabellen mit den meisten Analysen, was darauf hindeutet, dass sich diese Tabellen stark verändern.
  • Staubsauger pro Tisch:Ein Tortendiagramm und eine Tabelle, die die Tische mit den meisten Saugern zeigen, was darauf hindeutet, dass sich diese Tabellen stark verändern.
  • Entfernte Tupel pro Tabelle:Ein Tortendiagramm und eine Tabelle mit der Anzahl der Tupel und Seiten, die in Vakuumprozessen für Tabellen entfernt wurden.
  • Entfernte Seiten pro Tabelle:Ein Tortendiagramm und eine Tabelle mit der Anzahl der Seiten und Tupel, die bei Vakuumprozessen für Tabellen entfernt wurden.
  • Autovacuum-Aktivität:Eine Tabelle, die die VACUUMs und ANALYSEN im Laufe der Zeit pro Stunde zeigt.
pgBadger Vacuums/Analyses Verteilungsdiagramm

Schlösser

Die Sperrseite enthält nur wenige Daten, aber es ist eine nützliche Information, wenn es Prozesse gibt, die andere Abfragen für längere Zeit aufhalten.

  • Sperren nach Typen
  • Häufigste wartende Abfragen:Eine Liste von Abfragen, die als wartend gefunden wurden, von den häufigsten bis zu den seltensten.
  • Am längsten gewartete Abfragen:Eine Liste der Abfragen und wie lange sie gewartet haben, sortiert von der längsten zur kürzesten.
pgBadger-Abfragen, auf die am meisten gewartet wurde, werden gemeldet

Abfragen

Die Seite „Abfragen“ ist manchmal die spannendste, da sie Informationen zu den Arten von Abfragen anzeigt, die von den Anwendungen und Benutzern kommen. Diese Informationen können dabei helfen, besser zu verstehen, welche Art von Datenbankabwanderung eine Anwendung oder ein Benutzer auf das Datenbanksystem ausübt, was bei der zukünftigen Optimierung hilfreich sein kann. Wie zuvor hängt die Genauigkeit dieser Zahlen vom Wert von log_min_duration_statement ab, da jeder Wert über 0 keine Abfragen protokolliert.

  • Abfragen nach Typ:Ein Tortendiagramm und eine Tabelle, die die Anzahl der verschiedenen Arten von Abfragen anzeigen, z. B. INSERT, UPDATE, DELETE, SELECT usw.
  • Abfragen nach Datenbank:Ein Tortendiagramm und eine Tabelle mit der Anzahl der gefundenen Abfragen pro Datenbank.
  • Abfragen nach Anwendung:Ein Tortendiagramm und eine Tabelle mit der Anzahl der gefundenen Abfragen pro Anwendung.
  • Anzahl abgebrochener Abfragen:Informationen zu abgebrochenen Abfragen.
pgBadger-Abfragen nach Typ Kreisdiagramm

Oben

Die oberste Seite enthält Informationen zu Abfragezeiten, langsamsten Abfragen insgesamt, Abfragehäufigkeit und mehr. Spezifische problematische Abfragen sind wahrscheinlich hier zu finden:

  • Histogramm der Abfragezeiten:Ein Histogramm, das darstellt, wie viele Abfragen in jede Gruppierung von Zeitpunkten fallen.
  • Langsamste einzelne Abfragen:Eine Liste der langsamsten gefundenen Abfragen, sortiert nach der längsten bis zur kürzesten.
  • Zeitaufwändige Abfragen:Eine Liste normalisierter Abfragen und deren Gesamtdauer, sortiert nach der längsten bis zur geringsten verbrauchten Zeit.
  • Häufigste Abfragen:Eine Liste normalisierter Abfragen und wie oft sie ausgeführt wurden, sortiert von den meisten bis zu den wenigsten.
  • Normalisierte langsamste Abfragen:Eine Liste normalisierter Abfragen und ihrer durchschnittlichen Dauer, sortiert nach der längsten bis zur kürzesten.
pgBadger Bericht zu zeitaufwändigen Abfragen

Veranstaltungen

Die letzte Seite sind Ereignisse, die Informationen zu den Protokollen selbst und alles enthalten, was keine Abfrage, Vakuum oder Checkpoint ist.

  • Protokollebenen:Die verschiedenen Ebenen der Protokolle, die nach Zeile angezeigt werden, wie KONTEXT, LOG, AUSSAGE, HINWEISE, WARNUNGEN und andere.
  • Ereignisverteilung:Ein Liniendiagramm von Ereignissen im Zeitverlauf für PANIC-, FATAL-, ERROR- und WARNING-Ereignisse.
  • Häufigste Fehler/Ereignisse:Eine Liste von EREIGNISSEN und ihrer Häufigkeit, sortiert von den häufigsten bis zu den seltensten.
pgBadger-Protokollebenen-Kreisdiagramm

Beitragen

Das pgBadger-Projekt ist kostenlos und existiert unter der PostgreSQL-Lizenz. Es wird derzeit gut gepflegt und aktualisiert, um mit neueren Versionen von PostgreSQL zu arbeiten, während es entwickelt wird. Haben Sie Ideen zur Verbesserung von pgBadger? Forken Sie das Projekt und zeigen Sie der Community Ihre Verbesserungen.

Um Fehler zu melden, besuchen Sie die Github-Problemseite.