Zum Inhalt springen

pgBadger 11.x Versionshinweise

Vollständige Versionshinweise des Originalprojekts für die pgBadger-11.x-Reihe

Diese Einträge bewahren den vollständigen Änderungsverlauf des Originalprojekts für pgBadger 11.x; die neuesten Änderungen stehen zuerst.

v11.8 · 2022-04-08

Diese pgBadger-Version behebt einige Probleme, die Benutzer in den vergangenen drei Monaten gemeldet haben. Dazu gehören insbesondere zwei Korrekturen an der Erkennung neuer Protokolleinträge im inkrementellen Modus.

  • Erkennung neuer Protokolleinträge mit Zeitstempel korrigiert, wenn in log_line_prefix Millisekunden (%m) oder die Unix-Epoche (%n) verwendet werden.
  • Erkennung neuer Protokolleinträge in lokalen Dateien korrigiert, wenn keine Mehrprozessverarbeitung eingesetzt wird.

Vollständige Liste der Änderungen und Danksagungen:

  • Erkennung von Änderungen an Protokolldateien vollständig überarbeitet und vereinfacht.
  • Die Meldungen “could not (receive|send) data (from|to) client” werden nun im Bericht „Events“ erfasst. Dank an Adrien Nayrat für den Hinweis.
  • Parsing-Fehler korrigiert, der auftrat, wenn der Name einer vorbereiteten Abfrage das Zeichen ‘:’ enthielt. Dank an aleszeleny für den Hinweis.
  • Erkennung neuer Protokolleinträge mit Zeitstempel korrigiert, wenn Millisekunden (%m) oder die Unix-Epoche (%n) verwendet werden. Dank an aleszeleny für den Hinweis.
  • Erkennung neuer Protokolleinträge in lokalen Dateien korrigiert, wenn keine Mehrprozessverarbeitung eingesetzt wird. Dank an aleszeleny für den Hinweis.
  • Erkennung neuer Protokolleinträge in entfernten Dateien über ssh korrigiert. Dank an Luca Ferrari für den Hinweis.
  • Fehlerhafte Zeichen im Benutzernamen des Berichts „Connections per user“ korrigiert. Dank an caseyandgina für den Hinweis.
  • ssh-Befehl bei Verwendung einer URI korrigiert; die ssh-Optionen hatten gefehlt. Dank an Luca Ferrari für den Hinweis.
  • Platzhalter %Q für queryid unterstützt. Dank an Adrien Nayrat für den Patch.
  • Tippfehler in einer Fehlermeldung korrigiert. Dank an Luca Ferrari für den Patch.
  • Die Meldung “server process was terminated by signal” wird nun im Bericht „Events“ erfasst. Dank an Avi Vallarapu für den Hinweis.
  • doc: Dateinamen im Befehl für wöchentlich ausgeführte inkrementelle Berichte korrigiert. Dank an Theophile Helleboid für den Patch.
  • t/04_advanced.t: Syslog-Test korrigiert. Dank an Christoph Berg für den Patch.

v11.7 · 2022-01-23

Diese pgBadger-Version behebt einige Probleme, die Benutzer in den vergangenen fünf Monaten gemeldet haben, und bringt mehrere Verbesserungen:

  • Neue Option –no-progressbar hinzugefügt, mit der sich der Fortschrittsbalken ausblenden lässt, ohne die übrigen Ausgaben zu unterdrücken.
  • Neue Option –day-report hinzugefügt, mit der sich ein HTML-Bericht für den angegebenen Tag neu erstellen lässt. Sie entspricht –month-report, gilt jedoch nur für einen einzelnen Tag. Dafür werden die inkrementellen Ausgabeverzeichnisse und alle erforderlichen Binärdatendateien benötigt. Als Wert wird ein Datum im Format YYYY-MM-DD erwartet.
  • Parsing von Heroku-Logplex- und CloudSQL-JSON-Protokollen verbessert.

Vollständige Liste der Änderungen und Danksagungen:

  • Beitragsrichtlinien und Makefile.PL aktualisiert, um Konsistenz, Verständlichkeit und Abhängigkeiten zu verbessern. Dank an diffuse für den Patch.
  • Verwendung der Datei mit dem letzten Parsing-Stand (–last-parsed) im Binärmodus korrigiert. Dank an wibrt für den Hinweis.
  • Regressionstest für –last-parsed hinzugefügt und den Regressionstest für Berichte korrigiert, die ausschließlich temporäre Dateien betreffen.
  • Titel des Diagramms zu Sitzungen pro Host korrigiert. Dank an Norbert Bede für den Hinweis.
  • Wochennummer bei der Erstellung von Wochenberichten korrigiert, wenn –iso-week-number und –incremental aktiviert waren. Dank an hansgv für den Hinweis.
  • Option –no-progressbar hinzugefügt, mit der sich der Fortschrittsbalken ausblenden lässt, ohne die übrigen Ausgaben zu unterdrücken. Dank an seidlmic für den Funktionswunsch.
  • Übermäßig viele Debug-Ausgaben für Zeilen unbekannten Formats in mehrzeiligen jsonlog-Protokollen verhindert.
  • Parsing einzeiliger CloudSQL-JSON-Protokolle korrigiert. Dank an Thomas Leclaire für den Hinweis.
  • Zusammenfassung temporärer Dateien korrigiert, wenn ausschließlich log_temp_files protokolliert wird.
  • Debug-Meldung mit -v auch dann ausgegeben, wenn -q oder –quiet verwendet wird.
  • Automatische Erkennung von jsonlog-Dateien korrigiert.
  • Parsing von CloudSQL-Protokolldateien korrigiert. Dank an Luc Lamarle für den Hinweis.
  • PID-Extraktion in parse_json_input korrigiert. Dank an Francois Scala für den Patch.
  • Neue Option –day-report mit einem Datum im Format YYYY-MM-DD als Wert hinzugefügt, mit der sich ein HTML-Bericht für den angegebenen Tag neu erstellen lässt. Dank an Thomas Leclaire für den Funktionswunsch.
  • Abfragezähler im Fortschrittsbalken korrigiert. Dank an Guillaume Lelarge für den Hinweis.
  • Unvollständige Abfragen korrigiert, die für die Berichte zu Top-Bind und Prepare gespeichert wurden.
  • Normalisierung von Objektbezeichnern korrigiert; in einigen Fällen waren Zahlen durch ein “?” ersetzt worden.
  • Unformatierte normalisierte Abfragen korrigiert, wenn am Anfang ein Kommentar steht.
  • Mehrzeilige Ausgabe im stderr-Format bei Verwendung von –dbname korrigiert. Dank an Guillaume Lelarge für den Hinweis.
  • Fehlende Berichte im inkrementellen Modus bei Verwendung von –dbname korrigiert. Dank an Dudley Perkins für den Hinweis.
  • Bei inkompatiblen Binärdateien wird die Verarbeitung nicht mehr abgebrochen, sondern mit der nächsten Datei fortgesetzt. Dank an Thomas Leclaire für den Vorschlag.
  • Änderung am Heroku-Logplex-Format im pgbadger-Parser berücksichtigt. Dank an François Pietka für den Hinweis.

v11.6 · 2021-09-04

Diese pgBadger-Version behebt einige Probleme, die Benutzer in den vergangenen sieben Monaten gemeldet haben, und bringt mehrere Verbesserungen:

  • Erkennung der in PG14 neu hinzugekommenen Query-ID in log_line_prefix ergänzt. Dank an Florent Jardin für den Hinweis.
  • Erweiterte Regressionstests mit Datenbankausschluss und der explode-Funktion hinzugefügt. Dank an MigOps Inc für den Patch.
  • Mehrprozessverarbeitung bei der Berichtserstellung mit –explode eingesetzt. Dank an MigOps Inc für den Patch und Thomas Leclaire für den Funktionswunsch.
  • –iso-week-number für den inkrementellen Modus hinzugefügt. Damit beginnen Kalenderwochen am Montag und entsprechen der ISO 8601-Wochennummer von 01 bis 53; Woche 1 ist die erste Woche mit mindestens 4 Tagen im neuen Jahr. Dank an Alex Muntada für den Funktionswunsch.
  • Befehlszeilenoption –keep-comments hinzugefügt, mit der Kommentare in normalisierten Abfragen beibehalten werden. Das ist hilfreich, wenn ansonsten identische normalisierte Abfragen unterschieden werden sollen. Dank an Stefan Corneliu Petrea für den Funktionswunsch.
  • Von Drittanbieter-Software in PostgreSQL-Protokolldateien eingefügte INFO-Zeilen werden übersprungen. Dank an David Piscitelli für den Hinweis.
  • Kompatibilität mit PostgresPro-Protokolldateien hinzugefügt, in denen auf die Anweisungsdauer die Zeilenanzahl und die Größe in Bytes folgen. Dank an panatamann für den Hinweis.
  • Zeitangaben mit T-Trennzeichen werden geparst, sodass sich Zeitstempel von journalctl verwenden lassen. Dank an Graham Christensen für den Patch.
  • Windows-Portierung verbessert. Dank an Bertrand Bourgier für die Patches.

Wichtiger Hinweis:

  • In der nächsten Hauptversion soll –iso-week-number zum Standard werden und –start-monday entfallen, da die Woche dann immer am Montag beginnt. Um den Code zu vereinfachen, wird die Möglichkeit entfernt, Wochenberichte am Sonntag beginnen zu lassen.

Vollständige Liste der Änderungen und Danksagungen:

  • Doppelte Ausgabe der Warnmeldung korrigiert: “database … must be vacuumed within … transactions”. Dank an Christophe Courtois für den Hinweis.
  • Verwendung einer nicht initialisierten Variablen korrigiert. Dank an phiresky für den Hinweis.
  • Erkennung der Query-ID verbessert: Sie kann negativ sein und wird nun auch aus csvlog gelesen.
  • Fehler korrigiert, durch den die letzte Datei im inkrementellen Modus immer erneut geparst wurde, obwohl sie bereits verarbeitet war. Dank an Thomas Leclaire für den Hinweis.
  • Regulären Ausdruck für das syslog-Format aktualisiert, damit der Sitzungszeilenindikator entweder eine einzelne Ganzzahl oder zwei durch einen Bindestrich getrennte Ganzzahlen enthalten kann. Dank an Timothy Alexander für den Patch.
  • Option –exclude-db korrigiert, sodass der zugehörige Bericht bei json-Protokollen dennoch erstellt wird. Dank an MigOps Inc für den Patch und Thomas Leclaire für den Hinweis.
  • Regressionstest für eine fehlerhafte Storable-Version hinzugefügt.
  • Verwendung eines nicht initialisierten Werts im Substitutionsiterator während der Erstellung von Wochenberichten im inkrementellen Modus korrigiert. Dank an Thomas Leclaire, Michael Vitale, Sumeet Shukla und Stefan Corneliu Petrea für die Hinweise.
  • Option ‘g’ hinzugefügt, um alle Bind-Parameter zu ersetzen. Dank an Nicolas Lutic und Sebastien Lardiere für den Patch.
  • Dokumentation verbessert. Dank an Stefan Petrea für den Patch.
  • Zeitzonenberechnung im Änderungsprotokoll korrigiert. Dank an Stefan Petrea für den Patch.
  • Protokollfilterung nach Start- und Endzeit korrigiert.
  • Falsche Zuordnung verwaister Zeilen zu mehrzeiligen Abfragen bei aktivem Datenbankfilter korrigiert. Dank an Abhishek Mehta für den Hinweis.
  • Berichte im inkrementellen Modus korrigiert, wenn der Parameter –dbname mit der Option “explode” (-E) teilweise ignoriert wurde. Dank an lrevest für den Hinweis.
  • JavaScript-Ressourcen aktualisiert.
  • Vorzeitige Anzeige des Menüs vor dem Wechsel in den Hamburger-Modus bei schmalerem Bildschirm korrigiert. Dank an Guillaume Lelarge für den Hinweis.
  • Verarbeitung mehrzeiliger Werte von Bind-Parametern im Protokoll korrigiert.
  • Für den vorherigen Patch dieselbe Korrektur wie in pgFormatter angewandt.
  • Weitere Verwendung eines nicht initialisierten Werts im Substitutionsiterator aus dem pgFormatter-Code korrigiert. Dank an Christophe Courtois für den Hinweis.
  • Abfragenormalisierung korrigiert. Dank an Jeffrey Beale für den Patch.
  • Sichergestellt, dass bei Verwendung von –dump-all-queries alle Anweisungen mit einem Semikolon enden. Dank an Christian für den Hinweis.
  • Tippfehler und Initialisierung des EOL-Typs bei mehreren Protokolldateien korrigiert.
  • Automatische Erkennung des EOL-Typs hinzugefügt, um den LAST_PARSED-Offset zu korrigieren, wenn OEL 2 Bytes umfasst (Windows). Dank an Bertrand Bourgier für den Patch.
  • Windows-Portierung von get_day_of_week() korrigiert, da strftime %u dort nicht unterstützt wird. Dank an Bertrand Bourgier für den Patch.
  • Windows-Portierung korrigiert, bei der das Perl-Hilfsprogramm pl2bat.bat wegen der Verarbeitung von DATA in pgbadger eine beschädigte pgbadger.bat erzeugte. Dank an Bertrand Bourgier für den Patch.
  • Filterung nach Start- und Endzeit korrigiert und Regressionstest für Zeitstempelfilter hinzugefügt. Dank an Alexis Lahouze und plmayekar für die Hinweise.
  • Verwendung eines nicht initialisierten Werts beim Musterabgleich korrigiert, die durch das pgFormatter-Update eingeführt worden war. Dank an arlt für den Hinweis.

v11.5 · 2021-02-18

Diese pgBadger-Version behebt einige Probleme, die Benutzer in den vergangenen drei Monaten gemeldet haben, und bringt mehrere Verbesserungen:

  • Bericht über die Leerlaufzeit von Sitzungen hinzugefügt. Sie wird wie folgt berechnet: “total sessions time - total queries time / number of sessions Hierfür müssen log_connection und log disconnection aktiviert sein; außerdem muss log_min_duration_statement = 0 gelten, damit alle Abfragen protokolliert werden und ein zuverlässiger Wert entsteht. Der Bericht zeigt, wie viel Leerlaufzeit anfällt und ob der Transaktionsmodus eines Poolers sinnvoll wäre. Er ist auf der Registerkarte „Sessions“ des Berichts „Global Stats“ und auf der Registerkarte „Sessions“ der stündlichen Berichte „General Activity“ verfügbar.
  • Anonymisierung numerischer Werte hinzugefügt; sie werden durch 4 zufällige Ziffern ersetzt.
  • SQL-Formatierer anhand von pgFormatter 5.0 aktualisiert.

Vollständige Liste der Änderungen und Danksagungen:

  • Parsing mehrzeiliger CloudSQL-Anweisungen korrigiert. Dank an Jon Young für den Hinweis.
  • Regressionstest für die Anonymisierung hinzugefügt.
  • Durch die Kürzung auf maxlength beschädigte Anonymisierung korrigiert. Dank an artl für den Hinweis.
  • Anonymisierung von Parametern in Berichten zu zeitaufwendigen prepare- und bind-Vorgängen hinzugefügt. Dank an arlt für den Hinweis.
  • Unterstützung für Mikrosekunden im Protokollzeilenpräfix von Logplex hinzugefügt. Dank an Ross Gardiner für den Hinweis.
  • Bericht über die Leerlaufzeit von Sitzungen hinzugefügt. Dank an Guillaume Lelarge für den Funktionswunsch.
  • Unterstützung mehrzeiliger Einträge im jsonlog-Format vervollständigt.

v11.4 · 2020-11-24

Diese pgBadger-Version behebt einige Probleme, die Benutzer in den vergangenen vier Monaten gemeldet haben. Außerdem verbessert sie die Unterstützung für Protokollinformationen von PostgreSQL 13 und bringt einige neue Funktionen:

  • Vollständige Autovacuum-Informationen im Bericht „Vacuums per table“ hinzugefügt: Puffernutzung (Treffer, verfehlte und verschmutzte Puffer), wegen Pins übersprungene Seiten, als eingefroren übersprungene Seiten sowie WAL-Nutzung (Datensätze, Ganzseitenabbilder und Bytes). Im Bericht „Tuples removed per table“ werden zusätzlich verbleibende Tupel, noch nicht entfernbare Tupel und verbleibende Seiten angezeigt. Diese Informationen sind nur auf der Registerkarte „Table“ verfügbar.
  • Neue Aufschlüsselung der Ursachen für gestartete Checkpoints hinzugefügt.
  • Erkennung des Anwendungsnamens in Meldungen zu autorisierten Verbindungen hinzugefügt.

Vollständige Liste der Änderungen und Danksagungen:

  • Tippfehler in einer Fehlermeldung korrigiert. Dank an Vidar Tyldum für den Patch.
  • Windows-Portierung im Zusammenhang mit der Fehlermeldung “can not load incompatible binary data” korrigiert. Dank an Eric Brawner für den Hinweis.
  • Tippfehler bei der Option –html-outdir im pgbadger-Nutzungshinweis und in der Dokumentation korrigiert. Dank an Vidar Tyldum für den Patch.
  • Automatische Erkennung des jsonlog/cloudsql-Formats korrigiert. Dank an Jon Young für den Hinweis.
  • Parsing von CSV-Protokollen mit PG v13 korrigiert. Dank an Kanwei Li für den Hinweis und Kaarel Moppel für den Patch.
  • Sortierung der Abfragen im Bericht zu den meisten erzeugten temporären Dateien korrigiert. Dank an Sebastien Lardiere für den Hinweis.
  • Ausgabe der pgbadger-Version im Debug-Modus hinzugefügt.

v11.3 · 2020-07-26

Diese Version von pgBadger behebt mehrere Probleme, die in den vergangenen vier Monaten gemeldet wurden. Außerdem führt sie einige neue Funktionen und Befehlszeilenoptionen ein.

  • Automatische Erkennung von UTC-Zeitstempeln hinzugefügt, damit für Diagramme keine Zeitzone angewendet wird.
  • Unterstützung für das JSON-Protokollformat von GCP CloudSQL hinzugefügt.
  • Neue Option –dump-all-queries hinzugefügt. Mit ihr schreibt pgBadger sämtliche Abfragen in eine Textdatei. Es wird kein Bericht erzeugt, sondern nur die vollständige Liste der in der PostgreSQL-Protokolldatei gefundenen Anweisungen ausgegeben. Bind-Parameter werden an ihren jeweiligen Positionen in die Abfragen eingefügt.
  • Neue Option -Q | –query-numbering hinzugefügt. Sie nummeriert Abfragen in der Ausgabe, wenn –dump-all-queries oder –normalized-only verwendet wird.
  • Neue Befehlszeilenoption –tempdir hinzugefügt, mit der sich das Verzeichnis für temporäre Dateien festlegen lässt. Dies ist auf Systemen nützlich, die das Schreiben in /tmp nicht erlauben.
  • Befehlszeilenoption –ssh-port hinzugefügt, mit der sich ein vom Standardwert 22 abweichender SSH-Port festlegen lässt. Die URI-Schreibweise unterstützt die Angabe des SSH-Ports in folgender Form: ssh://192.168.1.100:2222//var/log/postgresql-11.log

Hier ist die vollständige Liste der Änderungen und Danksagungen:

  • Inkrementelle Berichte für das jsonlog-/CloudSQL-Protokollformat korrigiert. Dank an Ryan DeShone für den Bericht.
  • Automatische Erkennung von UTC-Zeitstempeln hinzugefügt, damit für Diagramme keine automatisch erkannte Zeitzone angewendet wird. Bei UTC-Zeit wendet der JavaScript-Code die lokale Zeitzone an. Dank an Brett Stauner für den Bericht.
  • Inkrementelle Verarbeitung von journalctl-Protokollen korrigiert, die ab der zweiten Ausführung nicht mehr funktionierte. Dank an Paweł Koziol für den Patch.
  • Pfad zur Ressourcendatei bei gemeinsamer Verwendung von -X und -E korrigiert. Dank an Ryan DeShone für den Bericht.
  • Bericht „General Activity“ für Lese- und Schreibabfragen korrigiert. Dank an alexandre-sk5 für den Bericht.
  • Debug-Meldung hinzugefügt, wenn der Parallelmodus nicht verwendet wird.
  • elsif-Logik bei der Erkennung der Dateigröße sowie ein zusätzliches Leerzeichen im journalctl-Befehl bei Verwendung von –since korrigiert. Dank an Pawel Koziol für den Patch.
  • Fehler “not a valid file descriptor” behoben. Dank an Pawel Koziol für den Bericht.
  • Inkrementellen Modus mit RDS-Dateien korrigiert. Dank an Ildefonso Camargo, nodje und John Walsh für den Bericht.
  • Neue Option -Q | –query-numbering hinzugefügt. Sie nummeriert Abfragen in der Ausgabe bei Verwendung von –dump-all-queries oder –normalized-only. Dadurch lassen sich mehrzeilige Abfragen mit einem externen Skript aus der Ausgabedatei extrahieren. Dank an Shantanu Oak für den Funktionswunsch.
  • Verarbeitung von CloudSQL-JSON-Protokollen bei aktiviertem log_min_duration_statement korrigiert. Dank an alexandre-sk5 für den Bericht.
  • Falschen Hash-Schlüssel für Benutzer in RDS-Protokollen korrigiert. Dank an vosmax für den Bericht.
  • Fehler im Zusammenhang mit “modification of non-creatable array value” behoben. Dank an John Walsh und Mark Fletcher für den Bericht.
  • Unterstützung für das JSON-Protokollformat von GCP CloudSQL hinzugefügt; das Protokollformat (-f) lautet jsonlog. Dank an Thomas Poindessous für den Funktionswunsch.
  • Neue Option –dump-all-queries hinzugefügt. Mit ihr schreibt pgBadger sämtliche Abfragen in eine Textdatei, ohne einen Bericht zu erzeugen. Ausgegeben wird lediglich die vollständige Liste der in der PostgreSQL-Protokolldatei gefundenen Anweisungen. Bind-Parameter werden an ihren jeweiligen Positionen eingefügt. Es erfolgt keine Gruppierung nach eindeutigen Abfragen; alle Abfragen werden protokolliert. Dank an Shantanu Oak für den Funktionswunsch.
  • Dokumentation für –dump-all-queries hinzugefügt.
  • Vacuum-Bericht für neue PG-Versionen korrigiert. Dank an Alexey Timanovsky für den Bericht.
  • Neue Befehlszeilenoption –no-process-info hinzugefügt. Sie deaktiviert die Änderung des Prozesstitels, mit der sich der pgBadger-Prozess leichter identifizieren lässt, da einige Systeme diese Änderung nicht erlauben. Dank an Akshay2378 für den Bericht.
  • Neue Befehlszeilenoption –tempdir hinzugefügt, mit der sich das Verzeichnis für temporäre Dateien festlegen lässt. Standardwert: File::Spec->tmpdir() || ‘/tmp’ Dies ist auf Systemen nützlich, die das Schreiben in /tmp nicht erlauben. Dank an Akshay2378 für den Bericht.
  • Unterstützung komprimierter Dateinamen mit Leerzeichen und/oder Klammern korrigiert. Dank an Alexey Timanovsky für den Bericht.
  • Befehlszeilenoption –ssh-port hinzugefügt, mit der sich ein vom Standardwert 22 abweichender SSH-Port festlegen lässt. Die URI-Schreibweise unterstützt die Angabe des SSH-Ports in folgender Form: ssh://192.168.1.100:2222//var/log/postgresql-11.log Dank an Augusto Murri für den Funktionswunsch.

v11.2 · 2020-03-11

Diese Version von pgBadger behebt mehrere Probleme, die in den vergangenen sechs Monaten gemeldet wurden. Außerdem führt sie einige neue Funktionen ein:

  • Unterstützung und automatische Erkennung des AWS-Redshift-Protokollformats hinzugefügt.

  • Unterstützung für das neue Protokollformat von PgBouncer 1.11 hinzugefügt.

  • Unterstützung für die Komprimierungsformate zstd und lz4 hinzugefügt.

  • Vollständige Trennung von Statistikerzeugung und HTML-Berichtserstellung im inkrementellen Modus ermöglicht, ohne eine Protokolldatei lesen zu müssen. pgBadger kann beispielsweise stündlich wie folgt ausgeführt werden: pgbadger -I -O “/out-dir/data” –noreport /var/log/postgresql*.log

    Dabei werden lediglich die binären Datendateien in “/out-dir/data” erstellt. Anschließend können Sie beispielsweise jede Nacht die Berichte für den Folgetag im separaten Verzeichnis /out-dir/reports erzeugen: pgbadger -I -l “/out-dir/data/LAST_PARSED” -H “/out-dir/reports” /out-dir/data/2020/02/19/*.bin

    Dazu müssen Sie den Pfad zu den zuletzt ausgewerteten Informationen, den Zielpfad für die HTML-Berichte und die binäre Datendatei des jeweiligen Tages angeben.

Es gibt auch neue Befehlszeilenoptionen:

  • Neue Befehlszeilenoption –explain-url hinzugefügt, mit der sich die URL des grafischen Explain-Werkzeugs überschreiben lässt. Die Standard-URL lautet: http://explain.depesz.com/?is_public=0&is_anon=0&plan=

    Damit können Sie eine lokale Installation von PgExplain oder ein anderes Werkzeug verwenden. pgBadger hängt den Plan im Textformat URL-kodiert an das Ende der URL an.

  • Neue Option –no-week hinzugefügt. Sie weist pgBadger an, im inkrementellen Modus keine wöchentlichen Berichte zu erstellen, wenn deren Erzeugung zu viel Zeit und Ressourcen beansprucht.

  • Neue Befehlszeilenoption –command hinzugefügt. Mit ihr lässt sich ein Befehl festlegen, den pgBadger ausführt, um Protokolleinträge über stdin abzurufen. pgBadger öffnet eine Pipe zu diesem Befehl und verarbeitet die von ihm erzeugten Protokolleinträge. Zum Beispiel: pgbadger -f stderr –command ‘cat /var/log/postgresql.log’

    Dies entspricht dem direkten Aufruf von pgBadger mit der Protokolldatei als Argument. Die Option ist besonders nützlich, wenn die Protokolldatei während der Verarbeitung verändert werden muss oder die Protokolleinträge aus einem Programm beziehungsweise einer Datenbank stammen. Zum Beispiel:

    pgbadger -f csv –command ‘psql dbname -c “COPY jrn_log TO STDOUT (FORMAT CSV)”’

  • Neue Befehlszeilenoption –noexplain hinzugefügt. Sie verhindert, dass pgBadger von der Erweiterung auto_explain in das Protokoll geschriebene EXPLAIN-Pläne verarbeitet und ausgibt. Dies ist bei PostgreSQL-Versionen < 9.0 nützlich, bei denen EXPLAIN-Pläne im Protokoll zu fehlerhaften Berichten führen.

Rückwärtskompatibilität:

  • Standardmäßig kürzt pgBadger Abfragen auf höchstens 100000 Zeichen. Dieser frei gewählte Wert lässt sich mit –maxlength anpassen. Zuvor wurden Abfragen nicht gekürzt, was jedoch zu übermäßiger Ressourcennutzung führen konnte. Der Standardgrenzwert ist sicherer und in den meisten Fällen hoch genug, sodass keine Kürzung erfolgt. Abfragen mit mehr als 25000 Zeichen werden allerdings nicht formatiert.

Hier ist die vollständige Liste der Änderungen und Danksagungen:

  • Nicht funktionierende Option –exclude-client korrigiert. Dank an John Walsh für den Bericht.
  • Regressionstest für die RDS-Protokollanalyse und –exclude-client hinzugefügt.
  • Fortschrittsanzeige für PgBouncer-Protokolldateien korrigiert. Das Label “queries” wurde für PgBouncer-Protokolldateien in “stats” geändert.
  • Befehlszeilenoption –explain-url zum Überschreiben der URL des grafischen Explain-Werkzeugs hinzugefügt. Dank an Christophe Courtois für den Funktionswunsch.
  • Unterstützung für das neue Protokollformat von PgBouncer 1.11 hinzugefügt. Dank an Dan Aksenov für den Bericht.
  • Unterstützung für die Komprimierungsformate zstd und lz4 hinzugefügt. Dank an Adrien Nayrat für den Patch.
  • Unterstützung und automatische Erkennung des AWS-Redshift-Protokollformats hinzugefügt. Dank an Bhuvanesh für den Funktionswunsch.
  • Dokumentation zum Redshift-Protokollformat aktualisiert.
  • Neue Option –no-week hinzugefügt, mit der sich wöchentliche Berichte im inkrementellen Modus deaktivieren lassen. Dank an cleverKermit17 für den Funktionswunsch.
  • Musterabgleich im Dateipfad korrigiert, der pgBadger unter Windows zum Absturz brachte.
  • Problem #554 mit kyrillischen und anderen kodierten Anweisungsparametern behoben, die im HTML-Bericht selbst bei benutzerdefinierter Zeichenkodierung nicht korrekt ausgegeben wurden. Die Regression war durch eine Korrektur der bekannten Perl-Fehlermeldung “Wide character in print” entstanden. Der Patch wurde zurückgenommen; mit der neuen Befehlszeilenoption –wide-char lässt sich das frühere Verhalten wiederherstellen. Fügen Sie diese Option Ihrer pgBadger-Befehlszeile hinzu, wenn die Meldung “Wide character in print” auftritt. Außerdem wurde ein Regressionstest mit kyrillischer und französischer Kodierung ergänzt. Dank an 4815162342lost und yethee für den Bericht.
  • Dokumentation um den Hinweis ergänzt, dass auch lc_messages = ’en_US.UTF-8’ gültig ist. Dank an nodje für den Bericht.
  • Dokumentation zu –maxlength aktualisiert: Die standardmäßige Kürzungsgrenze beträgt nun 100000; Abfragen bleiben nicht länger standardmäßig ungekürzt. Dank an nodje für den Bericht.
  • Berechnung der Aufbewahrungsdauer beim Jahreswechsel korrigiert. Dank an Fabio Pereira für den Patch.
  • Verarbeitung des RDS-Protokollformats korrigiert. Dank an Kadaffy Talavera für den Bericht.
  • Erzeugung einer leeren Indexdatei im inkrementellen Modus verhindert, wenn keine neuen Protokolleinträge vorliegen. Dank an Kadaffy Talavera für den Bericht.
  • Veraltete Dokumentation aktualisiert. Dank an Eric Hanson für den Patch.
  • Befehlszeilenparameter von -no-explain in -noexplain korrigiert. Dank an Indrek Toom für den Patch.
  • Rückgriff auf die Standarddateigröße, wenn totalsize nicht ermittelt werden kann. Dank an Adrien Nayrat für den Patch.
  • Datumsangaben in Beispielen korrigiert. Dank an Greg Clough für den Patch.
  • Regulären Ausdruck für komprimierte Dateiendungen in den verbleibenden Tests verwendet und die Endung .bin in eine separate Bedingung ausgelagert.
  • Unterstützung für die Komprimierungsformate zstd und lz4 hinzugefügt. Dank an Adrien Nayrat für den Patch.
  • Verbleibenden Aufruf von SIGUSR2 unter Windows korrigiert. Dank an inrap für den Bericht.
  • Fortschrittsanzeige bei Protokolldateien unbekannter Größe korrigiert.
  • Neue Befehlszeilenoption –command hinzugefügt, mit der pgBadger einen Befehl zum Abrufen von Protokolleinträgen über stdin ausführt. Dank an Justin Pryzby für den Funktionswunsch.
  • Neue Befehlszeilenoption –noexplain hinzugefügt. Sie verhindert, dass pgBadger von der Erweiterung auto_explain in das Protokoll geschriebene EXPLAIN-Pläne verarbeitet und ausgibt. Dies ist bei PostgreSQL-Versionen < 9.0 nützlich, bei denen EXPLAIN-Pläne im Protokoll zu fehlerhaften Berichten führen. Dank an Massimo Sala für den Funktionswunsch.
  • RDS-Protokollverarbeitung bei über die Befehlszeile festgelegtem Präfix korrigiert. Dank an Bing Zhao für den Bericht.
  • Inkrementellen Modus mit dem RDS-Protokollformat korrigiert. Dank an Bing Zhao für den Bericht.
  • Einen möglichen Fehler bei der RDS-Protokollverarbeitung korrigiert. Dank an James van Lommel und Simon Dobner für den Bericht.
  • Klassifizierung von Anweisungen korrigiert und Regressionstest hinzugefügt. Dank an alexanderlaw für den Bericht.
  • Anonymisierung einzelner Zeichen in der IN-Klausel korrigiert. Dank an Massimo Sala für den Bericht.
  • RDS-Protokollverarbeitung für Zeilen ohne Client-, Benutzer- oder Datenbankinformationen korrigiert. Dank an Konrad für den Bericht.

v11.1 · 2019-09-16

Diese Version von pgBadger behebt mehrere Probleme, die in den vergangenen drei Monaten gemeldet wurden. Außerdem führt sie einige neue Funktionen und Berichte ein.

  • Bericht über die Top-N-Abfragen hinzugefügt, die im Prepare- oder Parse-Schritt die meiste Zeit beanspruchen.
  • Bericht über die Top-N-Abfragen hinzugefügt, die im Bind-Schritt die meiste Zeit beanspruchen.
  • Bericht über die Laufzeiten der Teilschritte Prepare/Bind/Execute hinzugefügt. Er erscheint in der neuen Registerkarte „Duration“ des Berichts „Global Stats“. Beispiel: Total query duration: 6m16s Prepare/parse total duration: 45s564ms Bind total duration: 4m46s Execute total duration: 44s71m Dadurch wurde auch der frühere Wert „Total query duration“ korrigiert, der lediglich die Gesamtdauer von Execute auswies.
  • Unterstützung für RDS- und CloudWatch-Protokollformate hinzugefügt; beide werden automatisch erkannt. Falls pgBadger das Protokollformat nicht automatisch erkennt, können Sie -f rds verwenden.
  • Neue Konfigurationsoption –month-report zum Erstellen monatlicher inkrementeller Berichte hinzugefügt.
  • Wiederherstellung der Unterstützung für das Windows-Betriebssystem.

Zusätzlich wurden einige Fehler behoben und Funktionen verbessert.

  • Automatisch erzeugte Markdown-Dokumentation in README.md mithilfe von pod2markdown hinzugefügt. Ist der Befehl nicht verfügbar, wird die Datei nicht erzeugt. Dank an Derek Yang für den Patch.
  • WITH-Anweisungen wieder als CTE eingeordnet; damit wurde eine in der letzten Version eingeführte Regression behoben.
  • Unterstützung für das Windows-Betriebssystem korrigiert.
  • Unterstützung für RDS- und CloudWatch-Protokollformate hinzugefügt. Falls pgBadger das Protokollformat nicht automatisch erkennt, kann -f rds verwendet werden. Dank an peruuparkar für den Funktionswunsch.
  • Option -f | –format korrigiert: Sie wurde nicht auf alle Dateien aus der Parameterliste angewendet, bei denen die automatische Formaterkennung fehlschlug; stattdessen wurde das Format der zuerst verarbeiteten Datei übernommen. Dank an Levente Birta für den Bericht.
  • Verweis auf pgBadger v7.x in der Quelldokumentation durch v11 ersetzt. Dank an Will Buckner für den Patch.
  • Anzeigehöhe der Top-Abfragen begrenzt, damit sehr große Abfragen nicht die gesamte Seite einnehmen. Dank an ilias ilisepe1 für den Patch.
  • Überlauf von Abfragen und Details im Abschnitt „Slowest individual queries“ korrigiert.
  • SSH-URIs für Dateien, Verzeichnisse und Platzhalter korrigiert. Dank an tbussmann für den Patch.
  • URI-Beispiele in der Dokumentation korrigiert. Dank an tbussmann für den Patch.
  • Hinweis auf die Verwendung der Standardausgabedatei bei –rebuild ausgeblendet.
  • Zusätzlichen Zeilenumbruch in die Ausgabe von usage() eingefügt, damit die POD-Dokumentation beim Erstellen nicht beschädigt wird.
  • Beschreibung der Option –exclude-client in der Dokumentation wiederhergestellt. Dank an Christoph Berg für den Bericht.

v11.0 · 2019-06-25

Diese Version von pgBadger fügt einige wichtige neue Funktionen hinzu und behebt einige seit den letzten vier Monaten gemeldete Probleme. Neue Funktionen:

  • Cursorbezogene Abfragen (DECLARE,CLOSE,FETCH,MOVE) im neuen Abfragetyp CURSOR zusammengefasst.

  • Top-Bind-Abfragen hinzugefügt, die die meisten temporären Dateien erzeugen. Dafür müssen log_connection und log_disconnection aktiviert sein.

  • Befehlszeilenoption –exclude-client hinzugefügt, um Protokolleinträge für die angegebene Client-IP auszuschließen. Die Option kann mehrfach verwendet werden.

  • Ausschließliche Verwendung von Uhrzeiten in den Filtern –begin und –end ermöglicht.

  • Optionen -H und –html-dir hinzugefügt, um einen separaten Zielpfad für HTML-Berichte im inkrementellen Modus festzulegen. Binärdateien verbleiben in dem mit -O und –outdir angegebenen Verzeichnis.

  • Option -E | –explode hinzugefügt, um den Hauptbericht in jeweils einen Bericht pro Datenbank aufzuteilen. Globale Informationen ohne Datenbankzuordnung werden dem Bericht der Datenbank postgres hinzugefügt.

  • Datenbankspezifische Berichte im inkrementellen Modus hinzugefügt. In diesem Modus wird für jede Datenbank ein Unterverzeichnis mit eigenen inkrementellen Berichten erstellt.

  • Unterstützung für das PostgreSQL-Logplex-Format von Heroku hinzugefügt. Die Protokolle lassen sich wie folgt verarbeiten:

    heroku logs -p postgres | pgbadger -f logplex -o heroku.html -

  • Bei Abfragen über 10Kb wird zunächst die Länge aller konstanten Zeichenkettenparameter auf 30 Zeichen begrenzt und die Abfrage anschließend auf 10Kb gekürzt. Dadurch wird verhindert, dass pgBadger bei sehr langen Abfragen unnötig Zeit verbraucht oder hängen bleibt, etwa beim Einfügen von bytea-Daten. Der Grenzwert von 10Kb lässt sich mit –maxlength steuern. Erst nach diesem ersten Begrenzungsversuch wird die Abfrage normalisiert oder auf den festgelegten Maximalwert gekürzt.

Diese neue Version ist nicht mit älteren Binär- oder JSON-Dateien kompatibel. Dies bedeutet auch, dass der inkrementelle Modus keine alten Binärdateien mehr lesen kann. Wenn Sie pgBadger aktualisieren und Ihre alten Berichte behalten möchten, achten Sie darauf, die Aktualisierung am Anfang einer neuen Woche durchzuführen, da andernfalls die wöchentlichen Berichte fehlerhaft werden können. pgBadger wird eine Warnmeldung ausgeben und die alte Binärdatei einfach überspringen.

Es wurden auch einige Fehler behoben und Funktionen verbessert.

  • Versionswarnung hinzugefügt und das Laden inkompatibler Binärdateien übersprungen.
  • Codeformatierer auf pgFormatter 4.0 aktualisiert.
  • Hängenbleiben von pgBadger unter Windows behoben. Dank an JMLessard für den Bericht.
  • Skript tools/pgbadger_tools an das neue Binärdateiformat von pgBadger v11 angepasst.
  • Top-Bind-Abfragen hinzugefügt, die die meisten temporären Dateien erzeugen. Diese Auswertung ist nur möglich, wenn log_connection und log_disconnection in postgresql.conf aktiviert sind. Dank an Ildefonso Camargo für den Funktionswunsch.
  • Automatische Erkennung der Zeitzone korrigiert. Dank an massimosala für die Korrektur.
  • Verbleibende Diagramme bei Verwendung von –nograph entfernt.
  • Verwendung der Endung .txt bei –normalized-only erzwungen.
  • Berichterstattung über Autovacuum/Analyze im Logplex-Format korrigiert. Dank an Konrad zichul für den Bericht.
  • Fortschrittsanzeige unter Windows korrigiert. Dank an JMLessard für den Bericht.
  • `$prefix_vars{’t_time’} zum Speichern der Protokollzeit verwendet. Dank an Luca Ferrari für den Patch.
  • Aufrufe und Dokumentation aktualisiert, um den Perl-Befehl aus pgBadger-Aufrufen zu entfernen. Dank an Luca Ferrari für den Patch.
  • Verwendung von begin und end mit Uhrzeiten ohne Datum ermöglicht. Dank an Luca Ferrari für den Patch.
  • Kleinere Rechtschreib- und Grammatikkorrekturen in der README-Datei vorgenommen. Dank an ofni yratilim für den Patch.
  • Remote-Pfade bei Verwendung von SSH korrigiert. Dank an Luca Ferrari für den Patch.
  • Regressionstest an die mit datenbankspezifischen Berichten eingeführte Struktur angepasst.
  • Sekundenbruchteile in allen Parametern begin und end korrigiert. Dank an Luca Ferrari für den Patch.
  • Dokumentations-URL korrigiert. Dank an Kara Mansel für den Bericht.
  • Verarbeitung von auto_explain korrigiert. Dokumentation der mehrfach verwendbaren Option -U erweitert. Dank an Douglas J Hunley für den Bericht.
  • Umfangreiche Verbesserungen an HTML- und CSS-Berichten vorgenommen. Dank an Pierre Giraud für die Patches.
  • Ressourcendatei aktualisiert.
  • Regressionstest für das Logplex-Format hinzugefügt.
  • Unterstützung für das PostgreSQL-Logplex-Format von Heroku hinzugefügt. Diese Protokolle lassen sich wie folgt verarbeiten: heroku logs -p postgres | pgbadger -f logplex -o heroku.html - oder falls die Ausgabe bereits in einer Datei gespeichert wurde: pgbadger heroku.log Das Logplex-Format wird wie jedes andere unterstützte Format automatisch erkannt. pgBadger erkennt folgenden Standardwert für log_line_prefix: database = %d connection_source = %r sql_error_code = %e oder einfacher: sql_error_code = %e Falls weitere Standardwerte für log_line_prefix existieren, können sie dem Projekt gemeldet werden. Das Präfix lässt sich jederzeit mit der pgBadger-Option -p | –prefix festlegen, zum Beispiel: pgbadger –p ‘base = %d source = %r sql_state = %e’ heroku.log Dank an Anthony Sosso für den Funktionswunsch.
  • pgBadger-Hilfe zur Verwendung von URIs korrigiert.
  • Fehlerhafte Verwendung von Wildcards in SSH-URIs korrigiert, die mit einem früheren Patch eingeführt worden war. Dank an Tobias Bussmann für die Meldung.
  • Unterstützung für URIs mit Leerzeichen im Pfad zur Protokolldatei hinzugefügt. Dank an Tobias Bussmann für den Bericht.
  • URI-Beispiele in der Dokumentation korrigiert. Dank an Tobias Bussmann für den Patch.
  • t/02_basics.t korrigiert, damit der Test nicht fehlschlägt, wenn der Syslog-Test länger als 10s dauert. Dank an Christoph Berg für den Patch.