Aller au contenu

Vue imprimable multi-pages de cette section. .

Retour à la version par défaut.

Documentation de pgBadger 13.2

Analyse rapide des journaux PostgreSQL et PgBouncer avec des rapports détaillés et autonomes
logo pgBadger

pgBadger est un analyseur de journaux PostgreSQL rapide et autonome, écrit en Perl. Il lit les journaux PostgreSQL ou PgBouncer et génère des sorties détaillées au format HTML, texte, binaire, JSON ou CSV brut. Les rapports HTML sont autonomes, interactifs, zoomables et nécessitent uniquement un navigateur web pour être visualisés.

Pourquoi pgBadger

pgBadger est conçu pour les gros volumes de journaux et une utilisation opérationnelle :

  • un seul programme Perl, sans module obligatoire en dehors de la bibliothèque standard de Perl ;
  • détection automatique de stderr, syslog, csvlog, jsonlog, RDS, Cloud SQL, logplex, Redshift et PgBouncer en entrée ;
  • lecture directe de fichiers locaux, de l’entrée standard, de fichiers distants via SSH, ainsi que d’URL HTTP, FTP ou SFTP ;
  • entrée compressée avec gzip, bzip2, lz4, xz, zip ou zstd ;
  • analyse parallèle d’un grand fichier ou de nombreux petits fichiers ;
  • rapports incrémentiels quotidiens, hebdomadaires et mensuels à la demande ;
  • filtres par date et heure, base de données, utilisateur, client, application, processus, session et motif de requête.

Ce que contiennent les rapports

L’ensemble de rapports PostgreSQL couvre :

  • activité globale et statistiques des requêtes ;
  • requêtes lentes, fréquentes, longues, en attente et annulées ;
  • fichiers temporaires, points de contrôle, verrous, sessions et connexions ;
  • activité d’auto-vacuum et d’auto-analyse par table ;
  • erreurs et événements par gravité et catégorie ;
  • distributions par base de données, utilisateur, client, application et type de requête.

L’entrée PgBouncer ajoute des rapports sur le débit, la durée moyenne des requêtes, le nombre de sessions simultanées, la répartition des connexions et des sessions, l’utilisation du pool réservé, ainsi que des rapports sur les erreurs et événements les plus fréquents.

Plan de la documentation

Lisez le manuel dans cet ordre, ou utilisez la barre latérale pour accéder directement à une tâche :

  1. Téléchargez et installez pgBadger et ses modules optionnels.
  2. Consultez la référence complète de la ligne de commande .
  3. Configurez la journalisation de PostgreSQL avec un préfixe analysable.
  4. Choisissez le mode de traitement parallèle adapté.
  5. Générez des rapports incrémentiels de manière sécurisée.
  6. Sélectionnez un format de sortie et examinez les exemples locaux .
  7. Suivez l’historique des versions , le support et la licence .

1 - Téléchargement et installation

Versions officielles, paquets, prérequis et installation à partir du code source

Choisissez un canal de distribution

Canal Utilisation Emplacement
Version officielle Archives sources et notes de version GitHub Releases
Paquet RPM Distributions Linux basées sur RPM PostgreSQL Yum Repository
Paquet Debian/Ubuntu Distributions Linux basées sur APT PostgreSQL Apt Repository
Code source de développement Code actuel non encore publié darold/pgbadger

Les exemples d’installation utilisent pgBadger 13.2. Consultez la page des versions avant de choisir une version.

Conditions requises

Le rapport HTML ne nécessite que :

  • une distribution Perl moderne ;
  • un navigateur web pour afficher les graphiques JavaScript intégrés.

Les fonctionnalités facultatives ajoutent les dépendances suivantes :

Fonctionnalité Dépendance
Analyse des journaux CSV de PostgreSQL Text::CSV_XS
Génération de sorties au format JSON JSON::XS
Lecture de fichiers .gz, .bz2, .lz4, .xz, .zip ou .zst l’utilitaire correspondant zcat, bzcat, lz4cat, xz, unzip, ou zstdcat

Installez le support JSON sur Debian ou Ubuntu :

$ sudo apt-get install libjson-xs-perl

Sur un système basé sur RPM :

$ sudo yum install perl-JSON-XS

Utilisez --zcat pour remplacer le chemin du décompresseur. Fournir une commande personnalisée désactive la possibilité d’utiliser plusieurs formats compressés dans la même invocation.

L’utilitaire xz doit prendre en charge --robot pour que pgBadger puisse lire les métadonnées de l’archive. Compressez les journaux lz4 avec --content-size afin que pgBadger puisse déterminer leur taille décompressée.

Installer à partir d’une archive officielle

Téléchargez une archive de version, puis compilez et installez le programme à l’aide de la chaîne d’outils standard de Perl :

$ tar xzf pgbadger-13.2.tar.gz
$ cd pgbadger-13.2
$ perl Makefile.PL
$ make
$ sudo make install

Le schéma par défaut site installe le programme sous le nom /usr/local/bin/pgbadger et la page de manuel sous le nom /usr/local/share/man/man1/pgbadger.1.

Pour une installation conforme aux conventions des distributions sous /usr, générez le fichier Makefile avec :

$ perl Makefile.PL INSTALLDIRS=vendor
$ make
$ sudo make install

INSTALLDIRS=perl est une autre disposition prise en charge par le projet amont. Vérifiez les chemins générés avant d’installer dans un système géré.

Installer le code de développement

$ git clone https://github.com/darold/pgbadger.git
$ cd pgbadger
$ perl Makefile.PL
$ make
$ make test
$ sudo make install

Le code en développement peut contenir des modifications non encore documentées dans les notes de version. Privilégiez une archive associée à une version publiée pour produire des paquets reproductibles en production.

Vérifier l’installation

$ pgbadger --version
$ pgbadger --help

Poursuivez avec la référence de la ligne de commande et la configuration de la journalisation PostgreSQL .

2 - Référence en ligne de commande

Syntaxe complète de la commande pgBadger, options, entrée distante, codes de retour et exemples

Utilisation et options

Utilisation : pgbadger [options] logfile […]

Analyseur de journaux PostgreSQL avec rapports et graphiques détaillés.

Arguments :

logfile peut désigner un fichier journal, une liste de fichiers ou une commande
shell qui renvoie une liste de fichiers. Pour lire le contenu sur stdin,
utilisez - comme nom de fichier. L’entrée sur stdin ne fonctionne pas avec csvlog.

Options :

-a | --average minutes : nombre de minutes par intervalle des graphiques de
                         moyenne des requêtes et des connexions. Valeur par défaut : 5 minutes.
-A | --histo-average min: nombre de minutes par intervalle des histogrammes
                         de requêtes. Valeur par défaut : 60 minutes.
-b | --begin datetime  : date/heure de début des données à analyser dans le
                         journal (horodatage ou heure).
-c | --dbclient host   : ne rapporter que les entrées de l’hôte client
                         indiqué.
-C | --nocomment       : supprimer des requêtes les commentaires tels que
                         /* ... */.
-d | --dbname database : ne rapporter que les entrées de la base de données
                         indiquée.
-D | --dns-resolv      : remplacer les adresses IP clientes par leur nom
                         DNS. Attention, cela peut fortement ralentir pgBadger.
-e | --end datetime    : date/heure de fin des données à analyser dans le
                         journal (horodatage ou heure).
-E | --explode         : scinder le rapport principal en un rapport par base
                         de données. Les informations globales sans lien avec une base de données
                         sont ajoutées au rapport de la base postgres.
-f | --format logtype  : valeurs possibles : syslog, syslog2, stderr,
                         jsonlog, csv, pgbouncer, logplex, rds et redshift. À utiliser si pgBadger
                         ne détecte pas le format du journal.
-G | --nograph         : désactiver les graphiques dans la sortie HTML. Les
                         graphiques sont activés par défaut.
-h | --help            : afficher cette aide puis quitter.
-H | --html-outdir path: répertoire des rapports HTML en mode incrémentiel.
                         Les fichiers binaires restent dans le répertoire défini par -O, --outdir.
-i | --ident name      : nom du programme utilisé comme identifiant syslog.
                         Valeur par défaut : postgres.
-I | --incremental     : activer le mode incrémentiel ; les rapports
                         quotidiens sont générés dans des répertoires séparés. --outdir doit être
                         défini.
-j | --jobs number     : nombre de tâches simultanées pour un seul fichier
                         journal. Une seule tâche par défaut ou avec le format csvlog.
-J | --Jobs number     : nombre de fichiers journaux à analyser en
                         parallèle. Un seul fichier à la fois par défaut.
-l | --last-parsed file: permettre l’analyse incrémentielle en enregistrant
                         la dernière date/heure et la dernière ligne analysées. Utile pour examiner
                         les erreurs depuis la dernière exécution ou produire un rapport quotidien
                         sur un journal à rotation hebdomadaire.
-L | --logfile-list file: fichier contenant la liste des journaux à
                         analyser.
-m | --maxlength size  : longueur maximale d’une requête ; les requêtes plus
                         longues sont tronquées. Valeur par défaut : 100000.
-M | --no-multiline    : ne pas collecter les instructions multilignes afin
                         d’éviter du contenu parasite, notamment les erreurs qui produisent un
                         rapport énorme.
-N | --appname name    : ne rapporter que les entrées de l’application
                         indiquée.
-o | --outfile filename: nom du fichier de sortie. Selon le format :
                         out.html, out.txt, out.bin ou out.json par défaut. Peut être répété pour
                         produire plusieurs formats. JSON nécessite le module Perl JSON::XS.
                         Utiliser - comme nom de fichier pour écrire sur stdout.
-O | --outdir path     : répertoire où enregistrer les fichiers de sortie.
-p | --prefix string   : valeur exacte de log_line_prefix dans
                         postgresql.conf. À utiliser uniquement si le préfixe diffère des formes
                         standard documentées, par exemple avec des champs supplémentaires d’IP
                         cliente ou d’application. DOIT contenir les séquences temporelles (%t, %m
                         ou %n) et de processus (%p ou %c). Voir les exemples ci-dessous.
-P | --no-prettify     : désactiver la mise en forme des requêtes SQL.
-q | --quiet           : ne rien écrire sur stdout, pas même une barre de
                         progression.
-Q | --query-numbering : numéroter les requêtes avec --dump-all-queries ou
                         --normalized-only.
-r | --remote-host ip  : hôte où exécuter cat sur le journal distant afin de
                         l’analyser localement.
-R | --retention N     : nombre de semaines à conserver en mode
                         incrémentiel. Valeur par défaut : 0, désactivé. Les anciens répertoires de
                         semaines et de jours sont supprimés automatiquement du répertoire de
                         sortie.
-s | --sample number   : nombre d’exemples de requêtes à conserver. Valeur
                         par défaut : 3.
-S | --select-only     : ne rapporter que les requêtes SELECT.
-t | --top number      : nombre de requêtes à conserver/afficher. Valeur par
                         défaut : 20.
-T | --title string    : modifier le titre de la page HTML du rapport.
-u | --dbuser username : ne rapporter que les entrées de l’utilisateur
                         indiqué.
-U | --exclude-user username : exclure du rapport les entrées de
                         l’utilisateur indiqué. Peut être répété.
-v | --verbose         : activer le mode détaillé ou de débogage. Désactivé
                         par défaut.
-V | --version         : afficher la version de pgBadger puis quitter.
-w | --watch-mode      : ne rapporter que les erreurs, comme logwatch.
-W | --wide-char       : encoder les requêtes de la sortie HTML en UTF8 pour
                         éviter le message Perl "Wide character in print".
-x | --extension       : format de sortie : text, html, bin ou json. Valeur
                         par défaut : html.
-X | --extra-files     : en mode incrémentiel, écrire CSS et JS dans des
                         fichiers séparés du répertoire de sortie.
-z | --zcat exec_path  : chemin complet du programme zcat. À utiliser si
                         zcat, bzcat ou unzip n’est pas dans votre PATH.
-Z | --timezone +/-XX  : décalage horaire par rapport à GMT pour ajuster les
                         dates/heures des graphiques JavaScript. Entier, par exemple 2, ou nombre
                         décimal, par exemple 2.5.
--anonymize            : masquer tous les littéraux des requêtes afin de
                         cacher les données confidentielles.
--charset              : jeu de caractères HTML à utiliser. Valeur par
                         défaut : utf-8.
--command CMD          : commande qui fournit les entrées de journal sur
                         stdin. pgBadger ouvre un tube vers cette commande et analyse les entrées
                         qu’elle produit.
--csv-separator        : séparateur de champs CSV. Valeur par défaut : ,
--day-report YYYY-MM-DD: générer un rapport HTML pour le jour indiqué.
                         Nécessite les répertoires de sortie incrémentielle et tous les fichiers de
                         données binaires requis.
--disable-autovacuum   : ne pas générer le rapport d’autovacuum.
--disable-checkpoint   : ne pas générer le rapport de
                         checkpoint/restartpoint.
--disable-connection   : ne pas générer le rapport de connexions.
--disable-error        : ne pas générer le rapport d’erreurs.
--disable-hourly       : ne pas générer le rapport horaire.
--disable-lock         : ne pas générer le rapport de verrous.
--disable-query        : ne pas générer les rapports de requêtes (les plus
                         lentes, les plus fréquentes, par utilisateur, par base de données, etc.).
--disable-session      : ne pas générer le rapport de sessions.
--disable-temporary    : ne pas générer le rapport de fichiers temporaires.
--disable-type         : ne pas générer le rapport des requêtes par type,
                         base de données ou utilisateur.
--dump-all-queries     : émettre toutes les requêtes du journal après avoir
                         remplacé les paramètres liés à leur position respective.
--dump-raw-csv         : analyser le journal et exporter les informations au
                         format CSV. Aucun autre traitement ni rapport.
--enable-checksum      : ajouter une somme md5 sous chaque rapport de
                         requête.
--exclude-appname name : exclure du rapport les entrées de l’application
                         indiquée, par exemple "pg_dump". Peut être répété.
--exclude-client name  : exclure les entrées de l’adresse IP cliente
                         indiquée. Peut être répété.
--exclude-db name      : exclure du rapport les entrées de la base de
                         données indiquée, par exemple "postgres". Peut être répété.
--exclude-file filename: fichier contenant les expressions régulières des
                         requêtes à exclure du rapport. Une expression par ligne.
--exclude-line regex   : exclure les entrées de journal correspondant à
                         l’expression régulière. Peut être répété.
--exclude-query regex  : exclure les requêtes correspondant à l’expression
                         régulière, par exemple "^(VACUUM|COMMIT)". Peut être répété.
--exclude-time  regex  : exclure les horodatages correspondant à
                         l’expression régulière, par exemple "2013-04-12 .*". Peut être répété.
--explain-url URL      : remplacer l’URL de l’outil graphique EXPLAIN.
                         Valeur par défaut : https://explain.depesz.com/
--histogram-query VAL  : utiliser des bornes personnalisées pour
                         l’histogramme des durées de requête. Bornes par défaut en millisecondes :
                         0,1,5,10,25,50,100,500,1000,10000
--histogram-session VAL: utiliser des bornes personnalisées pour
                         l’histogramme des durées de session. Bornes par défaut en millisecondes :
                         0,500,1000,30000,60000,600000,1800000,3600000,28800000
--include-file filename: fichier contenant les expressions régulières des
                         requêtes à inclure dans le rapport. Une expression par ligne.
--include-query regex  : exclure les requêtes qui ne correspondent pas à
                         l’expression régulière. Peut être répété, par exemple "(tbl1|tbl2)".
--include-pid PID      : ne rapporter que les événements liés au PID de
                         session (%p). Peut être répété.
--include-session ID   : ne rapporter que les événements liés à
                         l’identifiant de session (%c). Peut être répété.
--include-time  regex  : inclure uniquement les horodatages correspondant à
                         l’expression régulière, par exemple "2013-04-12 .*". Peut être répété.
--iso-week-number      : en mode incrémentiel, faire commencer les semaines
                         le lundi selon ISO 8601, numérotées de 01 à 53. La semaine 1 est la
                         première contenant au moins 4 jours de la nouvelle année.
--keep-comments        : conserver les commentaires dans les requêtes
                         normalisées, afin de distinguer des requêtes ayant la même forme
                         normalisée.
--journalctl command   : remplacer le fichier journal PostgreSQL par un
                         appel à journalctl, par exemple :
                         journalctl -u postgresql-9.5
--log-duration         : forcer pgBadger à associer les entrées produites
                         par log_duration = on et log_statement = 'all'.
--log-timezone +/-XX   : décalage horaire par rapport à GMT pour ajuster les
                         dates/heures du journal avant analyse. Cela complique les recherches par
                         date/heure. Entier, par exemple 2, ou nombre décimal, par exemple 2.5.
--month-report YYYY-MM : générer un rapport HTML cumulatif pour le mois
                         indiqué. Nécessite les répertoires de sortie incrémentielle et tous les
                         fichiers de données binaires requis.
--noexplain            : ne pas traiter les lignes générées par
                         auto_explain.
--no-fork              : ne créer aucun processus fils, à des fins de
                         débogage.
--no-process-info      : ne pas modifier le titre du processus pour
                         identifier pgBadger, car certains systèmes ne le prennent pas en charge.
--no-progressbar       : désactiver la barre de progression.
--noreport             : ne générer aucun rapport en mode incrémentiel.
--no-week              : ne pas générer les rapports hebdomadaires en mode
                         incrémentiel, s’ils prennent trop de temps.
--normalized-only      : émettre uniquement les requêtes normalisées dans
                         out.txt.
--pgbouncer-only       : afficher uniquement les menus liés à PgBouncer dans
                         l’en-tête.
--pid-dir path         : répertoire où stocker le fichier PID. Valeur par
                         défaut : /tmp
--pid-file file        : nom du fichier PID qui contrôle les exécutions
                         simultanées de pgBadger. Valeur par défaut : pgbadger.pid
--pie-limit num        : regrouper en une somme les portions de camembert
                         inférieures à num%.
--prettify-json        : mettre en forme la sortie JSON pour améliorer sa
                         lisibilité.
--rebuild              : reconstruire tous les rapports HTML des répertoires
                         de sortie incrémentielle contenant des données binaires.
--start-monday         : en mode incrémentiel, les semaines commencent par
                         défaut le dimanche. Cette option les fait commencer le lundi.
--tempdir DIR          : répertoire des fichiers temporaires. Valeur par
                         défaut : File::Spec->tmpdir() || '/tmp'

pgBadger est capable d’analyser un fichier journal distant en utilisant une connexion SSH sans mot de passe. Utilisez -r ou –remote-host pour définir l’adresse IP ou le nom d’hôte du serveur. Il existe également plusieurs options supplémentaires pour contrôler entièrement la connexion SSH.

--ssh-identity file      chemin du fichier d’identité à utiliser.
--ssh-option  options    liste des options -o de la connexion SSH. Options
                         toujours utilisées :
                         -o ConnectTimeout=$ssh_timeout
                         -o PreferredAuthentications=hostbased,publickey
--ssh-port port          port SSH de la connexion. Valeur par défaut : 22.
--ssh-program ssh        chemin du programme SSH. Valeur par défaut : ssh.
--ssh-timeout second     délai d’échec de connexion SSH. Valeur par défaut : 10
                         secondes.
--ssh-user username      nom de connexion. Par défaut : utilisateur qui exécute
                         pgBadger.

L’option --ssh-sudo préfixe par sudo les commandes distantes qui listent et lisent les fichiers journaux. L’utilisateur SSH distant doit pouvoir exécuter ces commandes avec sudo sans invite interactive.

Le fichier journal à analyser peut également être spécifié à l’aide d’un URI. Les protocoles pris en charge sont http[s] et [s]ftp. La commande curl sera utilisée pour télécharger le fichier, qui sera analysé pendant le téléchargement. Le protocole ssh est également pris en charge et utilisera la commande ssh, de la même manière qu’avec un hôte distant. Voir les exemples ci-dessous.

Codes de retour :

0: succès
1: arrêt sur erreur
2: interruption, par exemple avec Ctrl+C
3: le fichier PID existe déjà ou ne peut pas être créé
4: aucun fichier journal fourni en ligne de commande

Exemples :

pgbadger /var/log/postgresql.log
pgbadger /var/log/postgres.log.2.gz /var/log/postgres.log.1.gz /var/log/postgres.log
pgbadger /var/log/postgresql/postgresql-2012-05-*
pgbadger --exclude-query="^(COPY|COMMIT)" /var/log/postgresql.log
pgbadger -b "2012-06-25 10:56:11" -e "2012-06-25 10:59:11" /var/log/postgresql.log
cat /var/log/postgres.log | pgbadger -
# Préfixe de ligne pour une sortie de journal stderr
pgbadger --prefix '%t [%p]: user=%u,db=%d,client=%h' /pglog/postgresql-2012-08-21*
pgbadger --prefix '%m %u@%d %p %r %a : ' /pglog/postgresql.log
# Préfixe de ligne pour une sortie de journal syslog
pgbadger --prefix 'user=%u,db=%d,client=%h,appname=%a' /pglog/postgresql-2012-08-21*
# Utiliser 8 CPU pour analyser plus rapidement un fichier de 10GB
pgbadger -j 8 /pglog/postgresql-10.1-main.log

Utilisez la notation URI pour le fichier journal distant :

pgbadger http://172.12.110.1//var/log/postgresql/postgresql-10.1-main.log
pgbadger ftp://username@172.12.110.14/postgresql-10.1-main.log
pgbadger ssh://username@172.12.110.14:2222//var/log/postgresql/postgresql-10.1-main.log*

Vous pouvez utiliser conjointement un fichier journal PostgreSQL local et un fichier journal pgbouncer distant pour analyser :

pgbadger /var/log/postgresql/postgresql-10.1-main.log ssh://username@172.12.110.14/pgbouncer.log

Rapporter les erreurs chaque semaine par une tâche cron :

30 23 * * 1 /usr/bin/pgbadger -q -w /var/log/postgresql.log -o /var/reports/pg_errors.html

Générez un rapport chaque semaine en utilisant le comportement incrémental :

0 4 * * 1 /usr/bin/pgbadger -q `find /var/log/ -mtime -7 -name "postgresql.log*"` -o /var/reports/pg_errors-`date +\%F`.html -l /var/reports/pgbadger_incremental_file.dat

Cela suppose que votre fichier journal et le rapport HTML sont également rotés chaque semaine.

Ou mieux, utilisez les rapports incrémentiels générés automatiquement :

0 4 * * * /usr/bin/pgbadger -I -q /var/log/postgresql/postgresql.log.1 -O /var/www/pg_reports/

générera un rapport par jour et par semaine.

En mode incrémental, vous pouvez également préciser le nombre de semaines à conserver dans les rapports :

/usr/bin/pgbadger --retention 2 -I -q /var/log/postgresql/postgresql.log.1 -O /var/www/pg_reports/

Si vous disposez d’un pg_dump à 23:00 et à 13:00 chaque jour pendant une demi-heure, vous pouvez utiliser pgBadger comme suit pour exclure ces périodes du rapport :

pgbadger --exclude-time "2013-09-.* (23|13):.*" postgresql.log

Cette expression exclut chaque heure correspondante en entier, y compris le temps en dehors de la demi-heure de sauvegarde. Restreignez le motif des minutes si seule la période de sauvegarde doit être exclue.

Cela permettra d’éviter d’avoir des instructions COPY, générées par pg_dump, en tête de la liste des requêtes les plus lentes. Vous pouvez également utiliser –exclude-appname “pg_dump” pour résoudre ce problème de manière plus simple.

Vous pouvez également analyser la sortie de journalctl comme si elle était un fichier journal :

pgbadger --journalctl 'journalctl -u postgresql-9.5'

ou, dans le pire des cas, exécutez-le depuis un hôte distant :

pgbadger -r 192.168.1.159 --journalctl 'journalctl -u postgresql-9.5'

Vous n’avez pas besoin de spécifier de fichier journal en ligne de commande, mais si vous avez d’autres fichiers journaux PostgreSQL à analyser, vous pouvez les ajouter comme d’habitude.

Pour reconstruire tous les rapports HTML incrémentaux après coup, procédez comme suit :

rm /path/to/reports/*.js
rm /path/to/reports/*.css
pgbadger -X -I -O /path/to/reports/ --rebuild

Il mettra également à jour tous les fichiers de ressources (JS et CSS). Utilisez -E ou –explode si les rapports ont été générés en utilisant cette option.

pgBadger prend également en charge les journaux PostgreSQL Heroku au format logplex :

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

Cela enverra les journaux Heroku PostgreSQL à pgBadger via stdin.

pgBadger peut détecter automatiquement les journaux PostgreSQL RDS et CloudWatch en utilisant le format rds :

pgbadger -f rds -o rds_out.html rds.log

Chaque journal CloudSQL PostgreSQL est un journal PostgreSQL relativement classique, mais encapsulé au format JSON. Il est détecté automatiquement par pgBadger, mais en cas de besoin, forcez le format de journalisation en utilisant jsonlog :

pgbadger -f jsonlog -o cloudsql_out.html cloudsql.log

Cela fonctionne de la même manière que l’extension jsonlog : le format JSON est différent, mais pgBadger peut parser les deux formats.

pgBadger prend également en charge les journaux produits par l’opérateur Postgres CloudNativePG pour Kubernetes :

pgbadger -f jsonlog -o cnpg_out.html cnpg.log

Pour créer un rapport cumulatif sur une période d’un mois, utilisez la commande :

pgbadger --month-report 2019-05 /path/to/incremental/reports/

Cela ajoutera un lien vers le nom du mois dans la vue calendrier des rapports incrémentiels pour consulter le rapport du mois de mai 2019. Utilisez -E ou –explode si les rapports ont été générés en utilisant cette option.

3 - Configuration de la journalisation de PostgreSQL

Configurer la journalisation des requêtes, log_line_prefix, la locale et les statistiques associées pour pgBadger

pgBadger ne peut rapporter que les informations écrites par PostgreSQL dans les journaux. Commencez par un préfixe analysable et une politique de journalisation explicite des requêtes, puis ajoutez les événements opérationnels que vous souhaitez analyser.

Journalisation minimale des requêtes

Pour inclure le texte et la durée de la requête, activez la journalisation des instructions basée sur la durée :

log_min_duration_statement = 0

0 enregistre chaque instruction terminée. Sur un serveur très sollicité, sélectionnez une valeur plus élevée en millisecondes afin de contrôler le volume des journaux. Mesurez la surcharge et la croissance du stockage avant d’activer un seuil faible en production.

Si vous avez besoin uniquement de la durée et du nombre de requêtes, et non du texte des requêtes, utilisez :

log_min_duration_statement = -1
log_duration = on

Privilégiez log_min_duration_statement lorsque vous avez besoin des rapports sur les requêtes les plus lentes et le temps total passé aux requêtes.

Champs de préfixe requis

Un log_line_prefix personnalisé doit inclure les deux éléments suivants :

  • un champ temporel : %t, %m ou %n ;
  • un champ de processus ou de session : %p ou %c.

Un préfixe stderr minimal est :

log_line_prefix = '%t [%p]: '

Un préfixe plus utile enregistre l’utilisateur, la base de données, l’application et le client :

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

Le préfixe équivalent pour une destination syslog omet l’horodatage et les champs processus déjà fournis par syslog :

log_line_prefix = 'user=%u,db=%d,app=%a,client=%h '

Un autre ordre de clés pris en charge est :

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

Lorsque votre préfixe n’est pas l’une des formes reconnues par pgBadger, passez la valeur exacte avec --prefix. Ne la simplifiez ni ne la retapez différemment par rapport à postgresql.conf.

Activez les classes d’événements que vous souhaitez voir apparaître dans le rapport :

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

Ces paramètres peuvent générer un trafic de journalisation important. En particulier, log_temp_files = 0 et log_autovacuum_min_duration = 0 journalisent chaque événement correspondant ; ajustez-les en fonction de la charge de travail et du budget de rétention.

Garder les messages serveur en anglais

Le parseur reconnaît les messages du serveur PostgreSQL en anglais. Utilisez l’une des options suivantes :

lc_messages = 'en_US.UTF-8'

ou :

lc_messages = 'C'

Les locales telles que fr_FR.UTF-8 ne sont pas prises en charge par le parseur du projet amont.

Éviter les conflits entre les paramètres de journalisation des instructions

N’activez pas simultanément log_min_duration_statement, log_duration et log_statement = 'all'. La même exécution peut être journalisée plus d’une fois, ce qui fausse les compteurs de pgBadger et augmente considérablement le volume des journaux.

Objectif Paramétrage recommandé
Texte de requête et chronométrage log_min_duration_statement = 0 ou un seuil choisi
Durée et comptage uniquement log_min_duration_statement = -1, log_duration = on
Audit étendu des instructions Traiter log_statement comme une politique de journalisation distincte ; ne pas combiner les trois paramètres pour les statistiques de pgBadger

Après avoir rechargé PostgreSQL, examinez plusieurs entrées de journal réelles avant d’exécuter une analyse importante. Vérifiez que les champs horodatage, identifiant de processus/session, utilisateur, base de données, application et client correspondent au format sélectionné.

4 - Traitement parallèle

Choisissez entre le découpage parallèle d’un seul journal et le traitement parallèle de plusieurs journaux

pgBadger dispose de deux modes de traitement parallèle complémentaires. Choisissez selon la structure des données d’entrée, et non simplement selon le nombre de processeurs.

Option Unité parallèle Cas adapté Contrainte principale
-j N / --jobs N tronçons d’un fichier journal un seul fichier journal volumineux et permettant un accès direct aux positions dans le fichier les limites des tronçons peuvent dupliquer ou omettre un petit nombre de requêtes
-J N / --Jobs N fichiers journaux entiers plusieurs fichiers journaux indépendants utile uniquement lorsque suffisamment de fichiers sont disponibles pour occuper les processus de travail

Découper un grand fichier avec -j

$ pgbadger -j 8 /var/log/postgresql/postgresql.log

L’algorithme du projet amont divise chaque fichier en N plages d’octets, lance un parseur par plage, écrit des statistiques binaires temporaires, puis fusionne ces statistiques pour produire le rapport final.

pour chaque fichier journal
    diviser le fichier en N tronçons
    trouver les positions de début et de fin de chaque tronçon
    créer N processus d’analyse à ces positions
    écrire un fichier temporaire de statistiques binaires par processus
attendre la fin des processus de travail
fusionner les fichiers binaires et générer le rapport

Étant donné que les enregistrements de journal et les requêtes multilignes ne correspondent pas parfaitement aux décalages d’octets, jusqu’à environ N requêtes par fichier peuvent être tronquées, omises ou, plus fréquemment, comptées deux fois aux limites des tronçons. Utilisez ce mode pour une analyse agrégée de fichiers très volumineux, et non pour un flux de travail nécessitant un décompte précis de chaque enregistrement.

Traiter plusieurs fichiers avec -J

$ pgbadger -J 8 /var/log/postgresql/postgresql-*.log

Chaque processus de travail traite un fichier complet, ce qui permet d’éviter les lacunes aux limites des tronçons. Ce mode devient particulièrement utile avec des centaines de petits fichiers et une capacité CPU et E/S suffisante. La documentation officielle autorise également -J pour des fichiers compressés indépendants ; le découpage en tronçons sur un seul fichier avec -j nécessite une entrée permettant un accès direct aux positions dans le fichier, non compressée.

Benchmark du projet amont

Le manuel du projet amont indique ces mesures sur un hôte à 8 processeurs. Considérez-les comme une comparaison entre les deux algorithmes, et non comme une prédiction pour le matériel actuel.

Un fichier de 9,5 Go :

Option 1 CPU 2 CPU 4 CPU 8 CPU
-j 1h41m18 50m25 25m39 15m58
-J 1h41m18 54m28 41m16 34m45

Deux cents fichiers de 10 Mo, soit 2 Go au total :

Option 1 CPU 2 CPU 4 CPU 8 CPU
-j 20m15 9m56 5m20 4m20
-J 20m15 9m49 5m00 2m40

En pratique, privilégiez -j pour quelques fichiers volumineux et -J pour de nombreux petits fichiers. Les deux modes peuvent être combinés lorsque l’entrée et la plateforme le permettent, mais testez cette combinaison : l’analyse des journaux peut devenir limitée par le débit de stockage avant le processeur.

Limites et fichiers temporaires

  • -j n’est pas disponible pour les entrées compressées ou au format CSV et repose sur la duplication de processus, il n’est donc pas compatible avec Windows.
  • La lecture distante de fichiers CSV n’est pas prise en charge par le mécanisme de lecture distante du projet amont.
  • L’analyse parallèle crée des fichiers temporaires nommés comme tmp_pgbadgerXXXX.bin dans le répertoire temporaire sélectionné (par défaut, le répertoire temporaire du système).
  • Ne supprimez pas ces fichiers pendant l’exécution de pgBadger. Utilisez --tempdir pour les placer sur un stockage disposant d’une capacité suffisante.
  • Commencez avec un nombre modeste de processus de travail et surveillez la charge CPU, le débit de lecture, la consommation d’espace temporaire et le temps écoulé.

5 - Rapports incrémentiels

Générer des rapports quotidiens et hebdomadaires, contrôler la rétention, reconstruire la sortie et ajouter des synthèses mensuelles

Le mode incrémentiel stocke les statistiques analysées sous forme binaire, puis génère un rapport HTML par jour, un rapport cumulatif par semaine et un index au format calendrier reliant ces rapports. Il est destiné à un traitement répété des journaux ayant subi une rotation sans compter deux fois les mêmes entrées.

Générer des rapports quotidiens et hebdomadaires

Exécutez pgBadger après la rotation quotidienne des journaux et spécifiez un répertoire de sortie persistant :

crontab
0 4 * * * /usr/bin/pgbadger -I -q /var/log/postgresql/postgresql.log.1 -O /var/www/pg_reports/

-I active le mode incrémentiel et -O sélectionne le répertoire contenant l’état binaire, l’index calendrier et les rapports générés. pgBadger conserve son propre état incrémentiel dans ce répertoire, donc --last-parsed est inutile sauf si vous souhaitez délibérément placer le fichier d’état ailleurs.

Utilisez un répertoire HTML séparé tout en conservant l’état binaire dans le répertoire d’origine :

$ pgbadger -I -O /var/lib/pgbadger/data -H /var/www/pg_reports postgresql.log.1

Traitez les fichiers binaires comme des données sources pour des reconstructions ultérieures. Sauvegardez-les ou conservez les journaux d’origine si la régénération du rapport est importante.

Rétention

Gardez uniquement un nombre choisi de semaines :

$ pgbadger --incremental --retention 8 \
    --outdir /var/www/pg_reports \
    /var/log/postgresql/postgresql.log.1

Les répertoires semaine et jour plus anciens sont supprimés automatiquement. Testez la politique sur une copie hors production avant de l’activer sur votre seul historique de rapports.

Écrire les ressources partagées séparément

Par défaut, les rapports HTML intègrent leur JavaScript et leur CSS. Dans un répertoire contenant de nombreux rapports incrémentiels, -X / --extra-files écrit les ressources partagées séparément et réduit la duplication de sortie :

$ pgbadger -X -I -O /var/www/pg_reports postgresql.log.1

Tous les rapports ainsi que leur répertoire de ressources versionnées doivent être déplacés ensemble.

Reconstruire les rapports existants

Après une mise à jour de pgBadger ou l’application d’une correction de génération de rapport, reconstruisez le HTML à partir des données binaires conservées :

$ rm /var/www/pg_reports/*.js
$ rm /var/www/pg_reports/*.css
$ pgbadger -X -I -O /var/www/pg_reports --rebuild

Utilisez -E / --explode à nouveau si les rapports originaux ont été générés par base de données.

Utilisez l’option longue --rebuild. Dans la référence actuelle des commandes, -R signifie --retention ; traiter -R comme un raccourci de reconstruction appliquerait l’option incorrecte.

Ajouter un rapport mensuel

Les rapports quotidiens et hebdomadaires sont automatiques. L’agrégation mensuelle est explicite, car elle peut être coûteuse pour un historique important :

$ pgbadger -X --month-report 2026-07 /var/www/pg_reports/

Le mois généré est ajouté à l’index du calendrier. Exécuter à nouveau la commande reconstruit ce mois à partir des données binaires disponibles. Pour l’historique par base de données, répétez -E :

$ pgbadger -E -X --month-report 2026-07 /var/www/pg_reports/

La référence complète des commandes fournit également --day-report YYYY-MM-DD, --no-week, --noreport, --start-monday, et --iso-week-number pour des calendriers d’exécution plus spécialisés.

Ouvrez l’exemple de rapport incrémentiel fourni pour examiner le calendrier, les liens par semaine et la hiérarchie des rapports journaliers sans connexion réseau.

6 - Formats de sortie

Choisissez une sortie HTML, texte, binaire, JSON ou CSV brut et combinez les fichiers intermédiaires

pgBadger sélectionne la sortie en fonction de l’extension du nom de fichier ou de -x / --extension. Utilisez -o / --outfile plus d’une fois pour générer plusieurs formats à partir de la même analyse.

Format Extension typique Meilleur usage
HTML .html rapport interactif avec graphiques, destiné à la lecture humaine
Texte .txt consultation dans un terminal et archivage en texte brut
Binaire .bin statistiques intermédiaires fusionnables et reconstructions de rapport
JSON .json intégration avec d’autres logiciels ; nécessite JSON::XS
CSV brut fichier de sortie choisi extraction orientée ligne avec --dump-raw-csv

HTML et texte

La sortie par défaut est out.html :

$ pgbadger postgresql.log -o report.html

HTML intègre normalement les scripts, styles, polices et données de rapport nécessaires à la visualisation autonome. -X / --extra-files déplace les ressources JavaScript et CSS partagées hors des rapports incrémentiels ; conservez ces ressources à côté de l’arborescence HTML.

Spécifiez explicitement une sortie texte :

$ pgbadger -x text -o report.txt postgresql.log

Utilisez - comme nom de fichier de sortie pour écrire un format pris en charge sur la sortie standard.

Données intermédiaires binaires

La sortie binaire sépare l’analyse de la présentation. Générez des incréments horaires à partir d’un journal quotidien en croissance :

$ pgbadger --last-parsed .pgbadger_last_state \
    -o sunday/hour01.bin \
    /var/log/pgsql/postgresql-Sun.log

Fusionnez un ou plusieurs fichiers binaires dans un nouveau rapport :

$ pgbadger -o sunday.html sunday/*.bin

Lorsque le serveur écrit un fichier journal par heure, créez un fichier binaire pour chaque rotation, puis reconstruisez le fichier HTML cumulatif chaque fois que nécessaire :

$ pgbadger -o day1/hour01.bin postgresql-2026-08-15_01.log
$ pgbadger -o day1/hour02.bin postgresql-2026-08-15_02.log
$ pgbadger -o day1/hour03.bin postgresql-2026-08-15_03.log
$ pgbadger -o day1.html day1/*.bin

Gardez les fichiers binaires provenant de versions compatibles de pgBadger ensemble. Consultez les notes de version pour la compatibilité des formats incrémentiels avant de mettre à jour un répertoire de rapports à long terme.

JSON

La sortie JSON est destinée aux programmes qui traitent les données, tels que les chaînes de supervision ou de génération de rapports :

$ pgbadger -o report.json postgresql.log

Installez JSON::XS en premier. Ajoutez --prettify-json pour améliorer la lisibilité lorsque la taille du fichier et le temps de génération sont secondaires.

Exports bruts et orientés requêtes

La référence de commande fournit également des exports spécialisés :

  • --dump-raw-csv analyse le journal et écrit un fichier CSV orienté ligne sans générer de rapport ;
  • --csv-separator change le délimiteur du CSV brut ; la version 13.2 utilise la virgule par défaut ;
  • --dump-all-queries émet chaque requête après avoir remplacé les paramètres liés ;
  • --normalized-only écrit les requêtes normalisées ;
  • --query-numbering numérote la sortie texte orientée requête.

Ces modes peuvent contenir du SQL d’application, des identificateurs, des utilisateurs, des adresses clientes ou des valeurs littérales. Examinez la sortie avant de la partager et utilisez --anonymize lorsque l’analyse prévue ne nécessite pas de valeurs littérales.

7 - Rapports d'exemple

Consulter les rapports pgBadger complets, incrémentaux et limités aux erreurs

Le contenu d’exemple a été généré par pgBadger 11.8 en mai 2022. La navigation dans les rapports, les graphiques, les styles et les scripts sont disponibles hors ligne.

Exemple Ce qu’il illustre Copie locale
Rapport complet Activité PostgreSQL ainsi que les statistiques de PgBouncer Ouvrir le rapport complet
Rapport incrémentiel Index calendrier, agrégation hebdomadaire et pages quotidiennes Ouvrir l’index incrémentiel
Erreurs et événements Un rapport limité aux erreurs et aux événements opérationnels Ouvrir le rapport d’erreurs

Rapport complet

Le rapport complet est un document HTML autonome. Utilisez la navigation en haut pour examiner les statistiques globales, les requêtes, les sessions, les connexions, les fichiers temporaires, les points de contrôle, l’activité d’autovacuum, les verrous et les graphiques spécifiques à PgBouncer.

Les données constituent un exemple de démonstration, non une référence de benchmark actuelle. Les valeurs, les versions de PostgreSQL et l’interface utilisateur pgBadger intégrée reflètent la date de génération du rapport.

Hiérarchie incrémentielle

Arborescence des rapports incrémentiels :

report/
├── index.html
├── 2012/
│   ├── week-49/index.html
│   ├── week-50/index.html
│   └── 12/06 … 12/index.html
└── 11/
    ├── pgbadger.min.css
    ├── pgbadger.min.js
    └── ressources graphiques et d’interface intégrées

L’index principal pointe vers deux rapports hebdomadaires et sept rapports quotidiens. Déplacer uniquement index.html romprait les liens ; conservez l’arborescence complète.

Sécurité et vie privée

Les rapports réels peuvent exposer du texte SQL, des valeurs liées, des noms de base de données et d’utilisateurs, des noms d’applications, des adresses clientes, des détails d’erreurs et des profils de charge. Avant de publier un rapport :

  • utilisez --anonymize lorsque les littéraux ne sont pas nécessaires ;
  • appliquez les filtres d’inclusion/exclusion avant la génération du rapport ;
  • inspectez le rapport HTML final ou les données exportées, et non seulement la ligne de commande ;
  • protégez l’emplacement du rapport avec le même soin que les journaux opérationnels.

8 - Historique des versions

Historique des versions de pgBadger 9.x à 13.x

Historique des versions de pgBadger 9.x à 13.x, regroupé par version majeure et présenté de la plus récente à la plus ancienne.

Les anciennes versions peuvent utiliser d’autres valeurs par défaut ou nécessiter des procédures de mise à niveau différentes. Pour la configuration de la version 13.2, consultez la référence de la ligne de commande et le guide de journalisation PostgreSQL.

Série Versions incluses Première – dernière publication Page
13.x 13.0–13.2 2024-12-08 – 2025-12-29 Lire 13.x
12.x 12.0–12.4 2022-09-13 – 2023-12-25 Lire 12.x
11.x 11.0–11.8 2019-06-25 – 2022-04-08 Lire 11.x
10.x 10.0–10.3 2018-09-09 – 2019-02-14 Lire 10.x
9.x 9.0–9.2 2016-09-02 – 2017-07-27 Lire 9.x

Archives et fichiers téléchargeables : GitHub Releases .

8.1 - Notes de version pgBadger 13.x

Notes de version complètes de la série pgBadger 13.x

v13.2 · 2025-12-29

Il s’agit d’une version de maintenance de pgBadger qui corrige des problèmes et applique des correctifs signalés par les utilisateurs depuis la dernière version.

  • Corriger la normalisation qui ne traitait pas correctement les chaînes entre guillemets simples équilibrées, y compris les guillemets échappés à l’intérieur. Remerciements à Bertrand Bourgier pour le rapport.
  • Corriger les exigences relatives aux espaces réservés dans la documentation.
  • Corriger le cas où aucune entrée d’exemple d’erreur n’était rapportée. Remerciements à john doe pour le rapport.
  • Corriger un problème potentiel de priorité entre ! et %s. Remerciements à Luca Santarelli et Philipp Trulson pour le rapport.
  • Mettre à jour le code pgFormatter à la version 5.9
  • Ajouter une action CI GitHub pour le test lors de la poussée de commit.
  • Corriger l’analyse du champ %r dans log_line_prefix. Remerciements à nike7o0 pour le rapport.
  • Corriger l’avertissement relatif à une valeur non initialisée. Remerciements à Ales Zeleny pour le rapport.
  • Améliorer la documentation des options SSH pour l’analyse des journaux PostgreSQL avec des exemples. Remerciements à Ulrich Konrad pour le correctif.
  • Ajouter la commande –ssh-sudo pour exécuter des commandes via SSH avec sudo. Remerciements à Andrew Jackson pour le correctif.
  • Corriger un problème potentiel de priorité entre ! et l’opérateur de comparaison de chaînes eq. Remerciements à Adrien Nayrat pour le rapport.
  • Corriger l’analyse des statistiques de pgbouncer. Remerciements à mrgtt pour le rapport.

v13.1 · 2025-03-16

Il s’agit d’une version de maintenance de pgBadger qui corrige des problèmes signalés par les utilisateurs depuis la dernière version et ajoute certaines nouvelles fonctionnalités :

  • Ajouter un nouveau rapport sur le débit de vacuum avec un graphique affichant le vacuum par table consommant le plus de CPU. Le rapport de sortie sous forme de tableau inclut les temps d’I/O lecture et écriture par table ainsi que le temps CPU écoulé par table. Merci à Ales Zeleny pour la demande de fonctionnalité. Cette mise à jour ajoute également les pages et les tuples gelés au rapport Vacuum par table.
  • Ajouter l’option –no-fork à des fins de débogage pour ne pas créer de processus fils du tout. Merci à Ales Zeleny pour la demande de fonctionnalité.
  • Ajouter les millisecondes à la sortie brute au format CSV. Merci à Henrietta Dombrovskaya pour la demande de fonctionnalité.
  • Ajouter le nom du fichier de journal aux rapports d’exemples lorsque plusieurs fichiers sont traités. Merci à Adrien Nayrat pour la demande de fonctionnalité.

Voici la liste complète des modifications et des remerciements :

  • Corriger l’analyse des paramètres liés. Remerciements à Thomas Kotzian pour le correctif
  • Appliquer le filtre de requête aux requêtes sur plusieurs lignes. Remerciements à Benjamin Jacobs pour le correctif
  • Mettre à jour les résultats des tests suite aux modifications du stockage du nom de fichier journal
  • Corriger le niveau de message ERROR par rapport à LOG dans la sortie JSON. Remerciements à Philippe Viegas pour le rapport.
  • Supprimer l’importation de la méthode tmpdir non exportée depuis File::Temp. Remerciements à kmoradha pour le rapport.

v13.0 · 2024-12-08

Il s’agit d’une version majeure de pgBadger qui corrige les problèmes signalés par les utilisateurs depuis la dernière version et ajoute certaines nouvelles fonctionnalités :

  • Ajouter deux nouvelles options permettant de redéfinir les bornes des histogrammes de temps de requête et de session. –histogram-query VAL : utiliser des bornes personnalisées pour les durées de requête. Bornes par défaut en millisecondes: 0,1,5,10,25,50,100,500,1000,10000 –histogram-session VAL : utiliser des bornes personnalisées pour les durées de session. Bornes par défaut en millisecondes: 0,500,1000,30000,60000,600000,1800000,3600000,28800000 Merci à JosefMachytkaNetApp pour la demande de fonctionnalité.
  • Ajouter le support de l’affichage du plan auto_explain pour les formats de journalisation csv et json. Merci à zxwsbg et à Alexander Rumyantsev pour le rapport.
  • Ajouter trois messages LOG qui n’étaient pas signalés comme événements : « unexpected EOF », « incomplete startup packet » et « detected deadlock while waiting for ». Merci à dottle pour le rapport.

Problèmes de compatibilité descendante :

  • Modifier la manière dont les événements de niveau LOG signalés dans les rapports Events sont stockés. Certains d’entre eux étaient encore signalés et comptés comme des erreurs au lieu d’être traités comme des entrées de niveau LOG. La correction consiste à les stocker et à les rapporter comme des EVENTLOG afin de les distinguer des requêtes. Ce changement introduit une rupture de compatibilité descendante lorsque pgBadger est utilisé en mode incrémentiel. Vous aurez simplement un comportement double durant la semaine de la mise à jour. Merci à Matti Linnanvuori pour le signalement.

Correctifs de bogues :

  • Corriger les requêtes non rapportées générant le plus d’annulations en raison de statement_timeout.
  • Mettre à jour les tests de régression
  • Corriger le formatage du plan EXPLAIN extrait du format CSV.
  • Corriger la perte de données d’auto-vacuum dans les rapports JSON : « Average Autovacuum Duration », « Tuples removed per table » et le nombre de vacuum par heure dans le rapport d’activité d’autovacuum. Remerciements à Ales Zeleny pour le correctif.
  • Corriger la ligne orpheline non associée aux requêtes bind coûteuses en temps. Remerciements à Henrietta Dombrovskaya pour le signalement. Corriger l’utilisation d’une valeur non initialisée dans la correspondance de motif. Remerciements à Junior Dias pour le correctif.
  • Appliquer l’option –csv-separator à l’export brut au format CSV. Le séparateur par défaut est le point-virgule (;). Remerciements à Henrietta Dombrovskaya pour la demande de fonctionnalité.
  • Sortie CSV brute : ne pas ajouter de guillemets doubles aux paramètres et au nom d’application s’ils sont vides.
  • Ajouter des guillemets doubles lorsque les requêtes contiennent un point-virgule dans la sortie CSV brute. Remerciements à Henrietta Dombrovskaya pour le signalement.

8.2 - Notes de version de pgBadger 12.x

Notes de version complètes de la série pgBadger 12.x

v12.4 · 2023-12-25

Il s’agit d’une version de maintenance de pgBadger qui corrige les problèmes signalés par les utilisateurs depuis la dernière version.

  • Correction du rapport pgbouncer avec la version 1.21. Remerciements à Ales Zeleny pour le correctif.
  • Empêcher que le nombre de processus Perl parallèles dépasse le nombre de fichiers. Remerciements à maliangzhu pour le signalement.
  • Correction du test de régression cassé depuis la version 12.3. Remerciements à ieshin pour le signalement.
  • Correction des cas où les entrées LOG étaient comptées comme des entrées de niveau d’erreur. Remerciements à Matti Linnanvuori pour le signalement.

v12.3 · 2023-11-27

Il s’agit d’une version de maintenance de pgBadger qui corrige des problèmes signalés par les utilisateurs depuis la dernière version. Elle introduit également quelques nouvelles fonctionnalités :

  • Ajouter l’option –include-pid pour ne rapporter que les événements liés à une session pid (%p). Peut être utilisée plusieurs fois. Merci à Henrietta Dombrovskaya pour la demande de fonctionnalité.
  • Ajouter l’option –include-session pour ne rapporter que les événements liés à l’identifiant de session (%c). Peut être utilisée plusieurs fois. Merci à Henrietta Dombrovskaya pour la demande de fonctionnalité.
  • Ajouter une nouvelle option –dump-raw-csv pour ne parser que le journal et exporter les informations au format CSV. Aucun traitement supplémentaire n’est effectué, aucun rapport n’est généré. Merci à Henrietta Dombrovskaya pour la demande de fonctionnalité.

Voici la liste complète des modifications et des remerciements :

  • Mettre à jour pgFormatter à la version 5.5
  • Corriger la date de fin de traitement avec le format jsonlog. Remerciements à jw1u1 pour le rapport.
  • Corriger l’orthographe dans « Sessions per application ». Remerciements à fairyfar pour le correctif.
  • Corriger le bug du graphique « INSERT/UPDATE/DELETE Traffic ». Remerciements à fairyfar pour le correctif.
  • Corriger l’analyse des lignes orphelines avec les requêtes bind. Remerciements à youxq pour le rapport.
  • Corriger le rapport « Analyze per table » avec les nouvelles versions de PG. Remerciements à Jean-Christophe Arnu pour le correctif.
  • Corriger le parseur d’entrée syslog lorsque l’horodatage syslog contient des millisecondes. Remerciements à Pavel Rabel pour le rapport.

v12.2 · 2023-08-20

Il s’agit d’une version de maintenance de pgBadger qui corrige les problèmes signalés par les utilisateurs depuis la dernière version. Elle introduit également deux nouvelles fonctionnalités :

  • Ajouter le support de la durée d’autovacuum max, avg, min. Remerciements à Francisco Reinolds pour le correctif.
  • Ajouter le support du temps moyen d’attente de pgbouncer. Remerciements à Francisco Reinolds pour le correctif.

Voici la liste complète des modifications et des remerciements :

  • Corriger la sortie HTML corrompue lorsque le nom d’application contient <…>. Remerciements à Fabio Geiss pour le rapport.
  • Corriger l’association incorrecte des lignes orphelines lorsqu’un filtre sur la base de données est appliqué. Remerciements à jcasanov pour le rapport.
  • Corriger l’analyse du préfixe logplex.
  • Corriger la détection des lignes orphelines logplex.
  • Corriger l’analyse de la ligne autovacuum de system usage: CPU: .... Remerciements à Francisco Reinolds pour le correctif.
  • Éviter d’ajouter le répertoire de sortie si la sortie est stdout.
  • Uniformiser l’étiquette « Average Query Duration ». Remerciements à Francisco Reinolds pour le correctif.
  • Mettre à jour la documentation pour les nouvelles options de pgBadger. Remerciements à Francisco Reinolds pour le correctif.
  • Corriger le cas où l’analyse n’était pas interrompue lorsque aucun descripteur de fichier ne pouvait être ouvert. Remerciements à vp pour le rapport.
  • Corriger l’aide en ajoutant les champs obligatoires %p/%t pour les informations de journal. Remerciements à Christophe Courtois pour le correctif.
  • Corriger le paramètre –retention. Remerciements à Bertrand Bourgier pour le correctif.
  • Rétablir le nettoyage du répertoire de sortie supprimé par le commit 0e5c7d5 lorsque le répertoire de sortie HTML est défini. Remerciements à Bertrand Bourgier pour le rapport.
  • Corriger l’extension de sortie lorsque le répertoire de destination contient un caractère nécessitant un échappement en expression régulière. Remerciements à Bertrand Bourgier pour le correctif.
  • Remplacer les appels à POSIX::strftime("%s", ….) par un appel à localtime pour la version Windows. Remerciements à Bertrand Bourgier pour le correctif.
  • Corriger le nettoyage du répertoire de sortie HTML. Remerciements à Bertrand Bourgier pour le correctif.
  • Utiliser https par défaut pour l’URL explain. Remerciements à Philipp Trulson pour le correctif.

v12.1 · 2023-03-20

Il s’agit d’une mise à jour de maintenance de pgBadger qui corrige les problèmes signalés par les utilisateurs au cours des six derniers mois.

Voici la liste complète des modifications et des remerciements :

  • Corriger l’analyse des paramètres multilignes. Remerciements à Bekir Niyaz pour le rapport.
  • Corriger l’échec de normalisation de la requête avec ::tsrange. Remerciements à Philippe Griboval pour le rapport.
  • Ajouter au rapport d’événements le point de cohérence et le point de départ du décodage logique pour les entrées de slot.
  • Gérer les autres formats d’horodatage avec ns + fuseau horaire. Remerciements à Ronan Dunklau pour le rapport.
  • Corriger la détection de %m lors de l’utilisation de la notation avec T. Remerciements à Ronan Dunklau pour le rapport.
  • Ajouter l’analyse des journaux générés par CloudNativePG. Remerciements à codrut panea pour le correctif.
  • Corriger l’option inutilisée –outdir dans la génération du rapport. Remerciements à Frederic Guiet pour le rapport.
  • Mettre à jour le README avec les dernières modifications de la documentation. Remerciements à Manisankar pour le rapport.
  • Corriger une faute de frappe dans les exemples de pgBadger. Remerciements à Shinichi Hashiba pour le correctif.

v12.0 · 2022-09-13

Cette version majeure de pgBadger corrige certains problèmes signalés par les utilisateurs au cours des cinq derniers mois. Comme à l’accoutumée, elle inclut également de nouvelles fonctionnalités et des améliorations :

  • Supprimer le support de la sortie Tsung.
  • Améliorer les performances de pgBadger lorsque des centaines de paramètres liés doivent être remplacés.
  • Supprimer l’option -n | –nohighlight qui n’est plus utilisée depuis la mise à jour vers pgFormatter 4.
  • Utiliser la méthode POST pour envoyer le plan auto_explain à explain.depesz.com afin d’éviter la limite de longueur des paramètres GET.
  • Appliquer –exclude-query et –include-query aux traces bind/parse.
  • Ajouter un lien vers des exemples de rapports pgBadger dans la documentation.

Voici la liste complète des modifications et des remerciements :

  • Corriger les rapports mensuels qui échouaient sur « log file … must exists ». Merci à Jaume Sabater pour le signalement.
  • Corriger l’analyse du démarrage de pgbouncer lors de la lecture d’un message de débogage depuis stdin. Merci à aleszeleny pour le signalement.
  • Supprimer le support des sorties au format Tsung.
  • Améliorer considérablement les performances de pgBadger pour le remplacement des paramètres liés, qui pouvait entraîner une exécution infinie lorsque des centaines de paramètres étaient présents. Merci à Monty Mobile pour le signalement.
  • Corriger la documentation concernant les codes de retour de pgBadger, ainsi que certains codes de retour incorrects à certains endroits. Merci à Jaume Sabater pour le signalement.
  • Corriger plusieurs fautes de frappe. Merci à David Gilman pour le correctif.
  • Supprimer l’option -n | –nohighlight qui n’est plus utilisée depuis la mise à jour vers pgFormatter 4. Merci à Elena Indrupskaya pour le signalement.
  • Nombreuses corrections dans la documentation de pgBadger. Merci à Elena Indrupskay de Postgres Pro pour le correctif.
  • Permettre une demi-heure dans –log-timezone et –timezone, la valeur peut être un entier, par exemple 2, ou un nombre à virgule, par exemple 2.5. Merci à Mujjamil-K pour la demande de fonctionnalité.
  • Permettre l’utilisation d’expressions régulières pour –exclude-app et –exclude-client. Merci à rdnkrkmz pour la demande de fonctionnalité.
  • Permettre l’utilisation de –explain-url avec le commit précédent et restaurer la limitation au format texte d’EXPLAIN.
  • Utiliser la méthode POST pour envoyer le plan auto_explain à explain.depesz.com afin d’éviter la limite de longueur des paramètres GET. Merci à hvisage pour le signalement.
  • Appliquer –exclude-query et –include-query aux traces bind/parse. Merci à Alec Lazarescu pour le signalement.
  • Corriger l’analyse des statistiques d’autovacuum provenant des journaux RDS. Merci à David Gilman pour le signalement.
  • Corriger le passage du format de journal lors de l’analyse d’un journal distant. Merci à spookypeanut pour le signalement.
  • Ajouter un lien vers des exemples de rapports pgBadger dans la documentation.
  • Corriger les rapports « Session per user ». Merci à vitalca pour le signalement.
  • Corriger l’analyse des journaux json provenant de la sortie PG15.
  • Corriger le rapport d’erreurs/événements basé sur du texte. Merci à Michael Banck pour le correctif.
  • Corriger la faute de frappe dans la fonction normalize_error(). Merci à Michael Banck pour le correctif.

8.3 - Notes de version de pgBadger 11.x

Notes de version complètes de la série pgBadger 11.x

v11.8 · 2022-04-08

Cette version de pgBadger corrige certains problèmes signalés par les utilisateurs au cours des trois derniers mois, en particulier deux correctifs concernant la détection des nouvelles entrées de journal en mode incrémentiel.

  • Corriger la détection des nouvelles entrées de journal avec horodatage lorsque le format milliseconde (%m) ou époque (%n) était utilisé dans log_line_prefix.
  • Corriger la détection des nouvelles entrées de journal dans le fichier local lorsque le mode multiprocessus n’était pas utilisé.

Voici la liste complète des modifications et des remerciements :

  • Revue complète et simplification de la détection des modifications dans le fichier journal.
  • Rapports des messages « could not (receive|send) data (from|to) client » dans les rapports Events. Remerciements à Adrien Nayrat pour le signalement.
  • Correction d’un problème d’analyse lorsque le nom d’une requête préparée contient le caractère « : ». Remerciements à aleszeleny pour le signalement.
  • Correction de la détection des nouvelles entrées de journal avec horodatage lorsque les millisecondes (%m) ou l’époque (%n) sont utilisées. Remerciements à aleszeleny pour le signalement.
  • Correction de la détection des nouvelles entrées de journal dans un fichier local lorsque le mode multiprocessus n’était pas utilisé. Remerciements à aleszeleny pour le signalement.
  • Correction de la détection des nouvelles entrées de journal dans les fichiers distants via SSH. Remerciements à Luca Ferrari pour le signalement.
  • Correction des données incorrectes dans le nom d’utilisateur du rapport « Connections per user ». Remerciements à caseyandgina pour le signalement.
  • Correction de la commande SSH lors de l’utilisation d’une URI, les options SSH étaient manquantes. Remerciements à Luca Ferrari pour le signalement.
  • Prise en charge du champ queryid %Q. Remerciements à Adrien Nayrat pour le correctif.
  • Correction d’une faute de frappe dans une phrase d’erreur. Remerciements à Luca Ferrari pour le correctif.
  • Rapport du message : « server process was terminated by signal » dans le rapport Events. Remerciements à Avi Vallarapu pour le signalement.
  • doc : correction du nom de fichier pour la commande incrémentale hebdomadaire. Remerciements à Theophile Helleboid pour le correctif.
  • t/04_advanced.t : correction du test syslog. Remerciements à Christoph Berg pour le correctif.

v11.7 · 2022-01-23

Cette version de pgBadger corrige certains problèmes signalés par les utilisateurs au cours des cinq derniers mois, ainsi que certaines améliorations :

  • Ajouter une nouvelle option –no-progressbar pour ne pas l’afficher tout en conservant les autres sorties.
  • Ajouter une nouvelle option –day-report permettant de régénérer un rapport HTML pour une journée spécifique. Comme l’option –month-report, mais uniquement pour une journée. Elle nécessite la présence des répertoires de sortie incrémentielle et de tous les fichiers binaires nécessaires. La valeur doit être une date au format : YYYY-MM-DD
  • Améliorer l’analyse des journaux Heroku logplex et cloudsql au format JSON.

Voici la liste complète des modifications et des remerciements :

  • Mettre à jour les guides de contribution et le fichier Makefile.PL afin d’améliorer la cohérence, la clarté et les dépendances. Merci à diffuse pour le correctif.
  • Corriger l’utilisation du fichier de dernière analyse (–last-parsed) en mode binaire. Merci à wibrt pour le signalement.
  • Ajouter un test de régression pour l’utilisation de –last-parsed et corriger le test de régression sur le rapport pour les fichiers temporaires uniquement.
  • Corriger le titre du graphique session par hôte. Merci à Norbert Bede pour le signalement.
  • Corriger le numéro de semaine lors du calcul des rapports hebdomadaires lorsque les options –iso-week-number et –incremental sont activées. Merci à hansgv pour le signalement.
  • Ajouter l’option –no-progressbar pour ne pas l’afficher tout en conservant les autres sorties. Merci à seidlmic pour la demande de fonctionnalité.
  • Empêcher l’affichage excessif de lignes au format inconnu en mode débogage pour les fichiers JSON multilignes.
  • Corriger l’analyse du journal JSON en ligne simple cloudsql. Merci à Thomas Leclaire pour le signalement.
  • Corriger le résumé des fichiers temporaires avec log_temp_files uniquement.
  • Afficher un message de débogage avec -v même si -q ou –quiet est utilisé.
  • Corriger la détection automatique du fichier jsonlog.
  • Corriger l’analyse du fichier journal cloudsql. Merci à Luc Lamarle pour le signalement.
  • Corriger l’extraction du PID dans parse_json_input. Merci à Francois Scala pour le correctif.
  • Ajouter une nouvelle option –day-report avec une valeur au format : YYYY-MM-DD, pouvant être utilisée pour reconstruire un rapport HTML pour la journée spécifiée. Merci à Thomas Leclaire pour la demande de fonctionnalité.
  • Corriger le compteur de requêtes dans la barre de progression. Merci à Guillaume Lelarge pour le signalement.
  • Corriger les requêtes incomplètes stockées pour les rapports top bind et prepare.
  • Corriger la normalisation de l’identifiant d’objet, dans certains cas les chiffres étaient remplacés par un ?.
  • Corriger les requêtes normalisées non formatées lorsque des commentaires sont présents au début.
  • Corriger le format multiligne dans stderr lorsque –dbname est utilisé. Merci à Guillaume Lelarge pour le signalement.
  • Corriger la non-génération de rapports en mode incrémental lorsque –dbname est utilisé. Merci à Dudley Perkins pour le signalement.
  • Ne plus interrompre l’exécution si un fichier binaire n’est pas compatible, passer au fichier suivant. Merci à Thomas Leclaire pour la suggestion.
  • Corriger le changement de format Heroku logplex dans le parseur pgBadger. Merci à François Pietka pour le signalement.

v11.6 · 2021-09-04

Cette version de pgBadger corrige certains problèmes signalés par les utilisateurs au cours des sept derniers mois, ainsi que certaines améliorations :

  • Ajouter la détection de l’identifiant de requête dans log_line_prefix, nouvelle fonctionnalité disponible depuis PG14. Remerciements à Florent Jardin pour le signalement.
  • Ajouter des tests de régression avancés avec exclusion de base de données et la génération d’un rapport par base de données. Remerciements à MigOps Inc pour le correctif.
  • Appliquer le traitement multiprocessus à la génération du rapport lorsque –explode est utilisé. Remerciements à MigOps Inc pour le correctif et à Thomas Leclaire pour la demande de fonctionnalité.
  • Ajouter –iso-week-number en mode incrémentiel, les semaines du calendrier commencent un lundi et respectent le numéro de semaine ISO 8601, compris entre 01 et 53, où la semaine 1 est la première semaine qui contient au moins 4 jours dans la nouvelle année. Remerciements à Alex Muntada pour la demande de fonctionnalité.
  • Ajouter l’option de ligne de commande –keep-comments pour ne pas supprimer les commentaires des requêtes normalisées. Utile si vous souhaitez distinguer des requêtes normalisées identiques. Remerciements à Stefan Corneliu Petrea pour la demande de fonctionnalité.
  • Ignorer les lignes INFO introduites dans le fichier journal par des logiciels tiers. Remerciements à David Piscitelli pour le signalement.
  • Ajouter la compatibilité avec les fichiers journaux PostgresPro incluant le nombre de lignes et la taille en octets suivant la durée d’exécution de l’instruction. Remerciements à panatamann pour le signalement.
  • Analyser les horodatages contenant des T pour permettre l’utilisation des timestamps issus de journalctl. Remerciements à Graham Christensen pour le correctif.
  • Améliorer le portage sous Windows. Remerciements à Bertrand Bourgier pour les correctifs.

Note importante :

  • S’attendre à ce que –iso-week-number devienne la valeur par défaut dans la prochaine version majeure et que l’option –start-monday soit supprimée, car la semaine commencera toujours un lundi. La possibilité de faire commencer les rapports hebdomadaires un dimanche sera supprimée afin de simplifier le code.

Voici la liste complète des modifications et des remerciements :

  • Corriger la duplication du message d’avertissement : “database … must be vacuumed within … transactions”. Remerciements à Christophe Courtois pour le signalement.
  • Corriger l’utilisation d’une variable non initialisée. Remerciements à phiresky pour le signalement.
  • Améliorer la détection de l’identifiant de requête, qui peut être négatif, ainsi que sa lecture depuis les fichiers CSV.
  • Corriger le cas où le dernier fichier en mode incrémentiel est toujours analysé, même s’il avait déjà été traité. Remerciements à Thomas Leclaire pour le signalement.
  • Mettre à jour l’expression régulière du format syslog pour gérer le cas où l’indicateur de session contient un seul entier au lieu de deux entiers séparés par un tiret. Remerciements à Timothy Alexander pour le correctif.
  • Corriger le défaut de –exclude-db qui générait encore le rapport de la base exclue avec des journaux JSON. Remerciements à MigOps Inc pour le correctif et à Thomas Leclaire pour le signalement.
  • Ajouter un test de régression concernant la version défectueuse de Storable.
  • Corriger l’utilisation d’une valeur non initialisée dans l’itérateur de substitution en mode incrémentiel lors de la génération du rapport hebdomadaire. Remerciements à Thomas Leclaire, Michael Vitale, Sumeet Shukla et Stefan Corneliu Petrea pour le signalement.
  • Ajouter l’option ‘g’ pour remplacer tous les paramètres liés. Remerciements à Nicolas Lutic et Sebastien Lardiere pour le correctif.
  • Améliorations de la documentation. Remerciements à Stefan Petrea pour le correctif.
  • Corriger le calcul lors du changement de fuseau horaire du journal. Remerciements à Stefan Petrea pour le correctif.
  • Corriger le filtre de journal par heure de début/fin.
  • Corriger l’association erronée des lignes orphelines pour les requêtes multilignes avec un filtre sur la base de données. Remerciements à Abhishek Mehta pour le signalement.
  • Corriger les rapports en mode incrémentiel lorsque le paramètre –dbname est partiellement ignoré avec l’option “explode” (-E). Remerciements à lrevest pour le signalement.
  • Mettre à jour les ressources JavaScript.
  • Corriger l’affichage du menu avant le passage en mode hamburger lorsque l’écran est réduit. Remerciements à Guillaume Lelarge pour le signalement.
  • Corriger le traitement des valeurs de paramètres liés sur plusieurs lignes dans le journal, qui n’était pas correctement pris en charge.
  • Appliquer la même correction que celle du correctif précédent dans pgFormatter.
  • Corriger une autre utilisation d’une valeur non initialisée dans l’itérateur de substitution issu du code de pgFormatter. Remerciements à Christophe Courtois pour le signalement.
  • Corriger la normalisation des requêtes. Remerciements à Jeffrey Beale pour le correctif.
  • S’assurer que toutes les instructions se terminent par un point-virgule lorsque –dump-all-queries est utilisé. Remerciements à Christian pour le signalement.
  • Corriger une faute de frappe et l’initialisation du type de fin de ligne avec plusieurs fichiers journaux.
  • Ajouter la détection automatique du type de fin de ligne pour corriger le décalage LAST_PARSED lorsque le type EOL est sur 2 octets (cas Windows). Remerciements à Bertrand Bourgier pour le correctif.
  • Corriger le portage de get_day_of_week() sous Windows où strftime %u n’est pas pris en charge. Remerciements à Bertrand Bourgier pour le correctif.
  • Corriger le portage sous Windows qui appelait l’utilitaire perl pl2bat.bat pour créer un pgbadger.bat corrompu en raison de la manière dont DATA était lu dans pgBadger. Remerciements à Bertrand Bourgier pour le correctif.
  • Corriger le filtre par heure de début/fin et ajouter un test de régression pour les filtres de timestamp. Remerciements à Alexis Lahouze et plmayekar pour le signalement.
  • Corriger l’utilisation d’une valeur non initialisée dans la correspondance de motif introduite par la mise à jour de pgFormatter. Remerciements à arlt pour le signalement.

v11.5 · 2021-02-18

Cette version de pgBadger corrige certains problèmes signalés par les utilisateurs au cours des trois derniers mois, ainsi que certaines améliorations :

  • Ajouter un rapport sur le temps d’inactivité des sessions, calculé à l’aide de : “(total sessions time - total queries time) / number of sessions” Cela nécessite que les options log_connections et log_disconnections soient activées, ainsi que log_min_duration_statement = 0 (toutes les requêtes sont journalisées) pour obtenir une valeur fiable. Ce rapport permet de connaître la quantité de temps d’inactivité perdue, et d’évaluer si un mode de transaction avec pooler serait utile. Ce rapport est disponible dans l’onglet « Sessions » du rapport « Global Stats » et dans l’onglet « Sessions » des rapports « General Activity » (par heure).
  • Ajouter le masquage des valeurs numériques, remplacées par 4 chiffres aléatoires.
  • Mettre à jour le formateur SQL basé sur pgFormatter 5.0.

Voici la liste complète des modifications et des remerciements :

  • Corriger l’analyse des instructions multilignes cloudsql. Remerciements à Jon Young pour le rapport.
  • Ajouter un test de régression pour l’anonymisation.
  • Corriger l’anonymisation cassée par la troncature maxlength. Remerciements à artl pour le rapport.
  • Ajouter l’anonymisation des paramètres dans les rapports sur les préparations et liaisons coûteuses en temps. Remerciements à arlt pour le rapport.
  • Ajouter la prise en charge des microsecondes dans le préfixe de ligne de journal logplex. Remerciements à Ross Gardiner pour le rapport.
  • Ajouter un rapport sur le temps d’inactivité des sessions. Remerciements à Guillaume Lelarge pour la demande de fonctionnalité.
  • Compléter le correctif pour prendre en charge les lignes multilignes au format jsonlog.

v11.4 · 2020-11-24

Cette version de pgBadger corrige certains problèmes signalés par les utilisateurs au cours des quatre derniers mois. Elle améliore le support des informations de journalisation de PostgreSQL 13 et ajoute quelques nouvelles fonctionnalités :

  • Ajouter des informations complètes sur l’autovacuum dans le rapport « Vacuums per table » concernant l’utilisation des tampons (accès en cache, défauts de cache, tampons modifiés), les sauts dus aux pins, les sauts dus au gel et l’utilisation du WAL (enregistrements, images de pages entières, octets). Dans le rapport « Tuples removed per table », ajouter également les informations suivantes sur l’autovacuum : tuples restants, tuples non encore supprimables et pages restantes. Ces informations ne sont disponibles que dans l’onglet « Table ».
  • Ajouter un nouveau rapport de répartition concernant les causes de démarrage des points de contrôle.
  • Ajouter la détection du nom d’application à partir des traces d’autorisation de connexion.

Voici la liste complète des modifications et des remerciements :

  • Corriger une faute de frappe dans un message d’erreur. Remerciements à Vidar Tyldum pour le correctif.
  • Corriger le portage sous Windows avec l’erreur : « can not load incompatible binary data ». Remerciements à Eric Brawner pour le signalement.
  • Corriger une faute de frappe sur l’option –html-outdir dans l’utilisation et la documentation de pgBadger. Remerciements à Vidar Tyldum pour le correctif.
  • Corriger la détection automatique du format jsonlog/cloudsql. Remerciements à Jon Young pour le signalement.
  • Corriger l’analyse des logs CSV avec PG v13. Remerciements à Kanwei Li pour le signalement et à Kaarel Moppel pour le correctif.
  • Corriger le tri des requêtes générant le rapport des fichiers temporaires les plus nombreux. Remerciements à Sebastien Lardiere pour le signalement.
  • Ajouter la trace de la version de pgBadger en mode débogage.

v11.3 · 2020-07-26

Cette version de pgBadger corrige plusieurs problèmes signalés par les utilisateurs au cours des quatre derniers mois. Elle introduit également certaines nouvelles fonctionnalités et de nouvelles options de ligne de commande :

  • Ajouter la détection automatique des horodatages UTC afin d’éviter d’appliquer un fuseau horaire aux graphiques.
  • Ajouter le support du format de journal JSON de GCP CloudSQL.
  • Ajouter une nouvelle option –dump-all-queries pour utiliser pgBadger afin d’extraire toutes les requêtes dans un fichier texte, aucun rapport n’est généré, uniquement la liste complète des instructions trouvées dans le journal PostgreSQL. Les paramètres liés sont insérés dans les requêtes à leur position respective.
  • Ajouter une nouvelle option -Q | –query-numbering utilisée pour numéroter les requêtes dans la sortie lors de l’utilisation des options –dump-all-queries ou –normalized-only.
  • Ajouter une nouvelle option de ligne de commande –tempdir pour définir le répertoire où les fichiers temporaires seront écrits. Utile sur les systèmes qui n’autorisent pas l’écriture dans /tmp.
  • Ajouter l’option de ligne de commande –ssh-port pour définir le port SSH si ce n’est pas le port par défaut 22. La notation URI prend également en charge la spécification du port SSH en utilisant la forme suivante : ssh://192.168.1.100:2222//var/log/postgresql-11.log

Voici la liste complète des modifications et des remerciements :

  • Corriger les rapports incrémentiels pour le format de journal jsonlog/cloudsql. Merci à Ryan DeShone pour le rapport
  • Ajouter la détection automatique de l’horodatage UTC afin d’éviter d’appliquer un fuseau horaire détecté automatiquement aux graphiques. Avec une heure UTC, le JavaScript appliquera le fuseau horaire local. Merci à Brett Stauner pour le rapport.
  • Corriger l’analyse incrémentielle des journaux journalctl qui ne fonctionnait pas à partir de la deuxième exécution. Merci à Paweł Koziol pour le correctif.
  • Corriger le chemin vers le fichier de ressources lorsque -X et -E sont utilisés. Merci à Ryan DeShone pour le rapport.
  • Corriger le rapport d’activité générale concernant les requêtes de lecture/écriture. Merci à alexandre-sk5 pour le rapport.
  • Ajouter un message de débogage lorsque le mode parallèle n’est pas utilisé.
  • Corriger la logique elsif dans la détection de la taille du fichier et l’espace supplémentaire introduit dans la commande journalctl lorsque l’option –since est ajoutée. Merci à Pawel Koziol pour le correctif.
  • Corriger l’erreur « not a valid file descriptor ». Merci à Pawel Koziol pour le rapport.
  • Corriger le mode incrémentiel avec les fichiers RDS. Merci à Ildefonso Camargo, nodje et John Walsh pour le rapport.
  • Ajouter une nouvelle option -Q | –query-numbering utilisée pour numéroter les requêtes dans la sortie lors de l’utilisation des options –dump-all-queries ou –normalized-only. Cela peut être utile pour extraire des requêtes multilignes du fichier de sortie à l’aide d’un script externe. Merci à Shantanu Oak pour la demande de fonctionnalité.
  • Corriger l’analyse des journaux json cloudsql lorsque log_min_duration_statement est activé. Merci à alexandre-sk5 pour le rapport.
  • Corriger la clé de hachage erronée pour les utilisateurs dans les journaux RDS. Merci à vosmax pour le rapport.
  • Corriger l’erreur liée à la modification d’une valeur de tableau non créable. Merci à John Walsh et Mark Fletcher pour le rapport.
  • Ajouter le support du format de journal json GCP CloudSQL, le format de journal (-f) est jsonlog. Merci à Thomas Poindessous pour la demande de fonctionnalité.
  • Ajouter une nouvelle option –dump-all-queries permettant d’utiliser pgBadger pour exporter toutes les requêtes dans un fichier texte, aucun rapport n’est généré, uniquement la liste complète des instructions trouvées dans le journal PostgreSQL. Les paramètres liés aux requêtes sont insérés à leur position respective. Aucun tri sur les requêtes uniques n’est effectué, toutes les requêtes sont journalisées. Merci à Shantanu Oak pour la demande de fonctionnalité.
  • Ajouter la documentation pour l’option –dump-all-queries.
  • Corriger le rapport vacuum pour les nouvelles versions de PG. Merci à Alexey Timanovsky pour le rapport.
  • Ajouter une nouvelle option de ligne de commande –no-process-info pour désactiver le changement du titre du processus afin d’aider à identifier le processus pgBadger, certains systèmes ne le permettent pas. Merci à Akshay2378 pour le rapport.
  • Ajouter une nouvelle option de ligne de commande –tempdir pour définir le répertoire où les fichiers temporaires seront écrits. Valeur par défaut : File::Spec->tmpdir() || ‘/tmp’ Peut être utile sur les systèmes qui n’autorisent pas l’écriture dans /tmp. Merci à Akshay2378 pour le rapport.
  • Corriger les noms de fichiers compressés non pris en charge contenant des espaces et/ou des crochets. Merci à Alexey Timanovsky pour le rapport.
  • Ajouter une option de ligne de commande –ssh-port utilisée pour définir le port SSH si ce n’est pas le port par défaut 22. La notation URI ajoute également le support de la spécification du port SSH en utilisant la forme : ssh://192.168.1.100:2222//var/log/postgresql-11.log Merci à Augusto Murri pour la demande de fonctionnalité.

v11.2 · 2020-03-11

Cette version de pgBadger corrige plusieurs problèmes signalés par les utilisateurs au cours des six derniers mois. Elle introduit également quelques nouvelles fonctionnalités :

  • Ajouter le support et la détection automatique du format de journal AWS Redshift.

  • Ajouter le support du nouveau format de journal de pgbouncer 1.11.

  • Gérer les formats de compression zstd et lz4.

  • Permettre de séparer entièrement la construction des statistiques et celle du rapport HTML en mode incrémentiel, sans avoir à lire un fichier journal. Par exemple, il est possible d’exécuter pgBadger chaque heure comme suit : pgbadger -I -O “/out-dir/data” –noreport /var/log/postgresql*.log

    Il crée simplement les fichiers binaires de données dans “/out-dir/data”, puis, par exemple, vous pouvez générer des rapports chaque soir pour la journée suivante dans un répertoire séparé /out-dir/reports : pgbadger -I -l “/out-dir/data/LAST_PARSED” -H “/out-dir/reports” /out-dir/data/2020/02/19/*.bin

    Cela nécessite de définir le chemin vers les informations analysées pour la dernière fois, le chemin où les rapports HTML seront écrits et le fichier binaire de données de la journée.

Il existe également de nouvelles options de ligne de commande :

  • Ajouter une nouvelle option de ligne de commande –explain-url utilisée pour remplacer l’URL de l’outil d’explication graphique. L’URL par défaut est : http://explain.depesz.com/?is_public=0&is_anon=0&plan=

    Si vous souhaitez utiliser une installation locale de PgExplain ou un autre outil. pgBadger ajoutera le plan au format texte, échappé, à la fin de l’URL.

  • Ajouter l’option –no-week pour indiquer à pgBadger de ne pas générer de rapports hebdomadaires en mode incrémentiel. Utile si cela prend trop de temps et de ressources.

  • Ajouter l’option de ligne de commande –command afin de pouvoir définir une commande que pgBadger exécutera pour récupérer les entrées de journal sur stdin. pgBadger ouvrira un tube vers la commande et analysera les entrées de journal générées par celle-ci. Par exemple : pgbadger -f stderr –command ‘cat /var/log/postgresql.log’

    ce qui revient à exécuter pgBadger en spécifiant directement le fichier journal en argument. L’intérêt de cette option est évident si vous devez modifier le fichier journal en temps réel ou si les entrées de journal sont extraites d’un programme ou générées à partir d’une base de données. Par exemple :

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

  • Ajouter l’option de ligne de commande –noexplain pour empêcher pgBadger de parser et de rapporter les plans d’exécution écrits dans le journal par l’extension auto_explain. Cela est utile si vous utilisez une version de PostgreSQL inférieure à 9.0, où pgBadger génère des rapports corrompus lorsqu’un plan d’exécution est présent dans le journal.

Compatibilité descendante :

  • Par défaut, pgBadger tronque les requêtes jusqu’à 100000 caractères. Cette valeur arbitraire peut être ajustée à l’aide de l’option –maxlength. Le comportement précédent consistait à ne pas tronquer les requêtes, mais cela pouvait entraîner une utilisation excessive des ressources. Limiter la taille par défaut est plus sûr, et la limite de taille permet généralement d’éviter la troncature dans la majorité des cas. Toutefois, les requêtes ne seront pas reformattées si elles dépassent 25000 caractères.

Voici la liste complète des modifications et des remerciements :

  • Correction de l’option –exclude-client non fonctionnelle. Remerciements à John Walsh pour le signalement.
  • Ajout d’un test de régression pour l’analyse des fichiers journaux RDS et –exclude-client.
  • Correction de la barre de progression pour les fichiers journaux de pgbouncer. L’étiquette « queries » est désormais « stats » pour les fichiers journaux de pgbouncer.
  • Ajout de l’option en ligne de commande –explain-url permettant de remplacer l’URL de l’outil d’explication graphique. Remerciements à Christophe Courtois pour la demande de fonctionnalité.
  • Ajout du support du nouveau format de fichier journal de pgbouncer 1.11. Remerciements à Dan Aksenov pour le signalement.
  • Gestion des formats de compression zstd et lz4. Remerciements à Adrien Nayrat pour le correctif.
  • Ajout du support et de la détection automatique du format de fichier journal AWS Redshift. Remerciements à Bhuvanesh pour la demande de fonctionnalité.
  • Mise à jour de la documentation concernant le format de fichier journal Redshift.
  • Ajout de la nouvelle option –no-week pour indiquer à pgBadger de ne pas générer de rapports hebdomadaires en mode incrémentiel. Remerciements à cleverKermit17 pour la demande de fonctionnalité.
  • Correction d’un motif de correspondance sur le chemin du fichier qui provoquait une panne de pgBadger sous Windows.
  • Correction du problème #554 concernant les paramètres d’instruction encodés en cyrillique et autres, qui n’étaient pas correctement rapportés dans le rapport HTML même avec un jeu de caractères personnalisé. La régression avait été introduite par une correction de l’erreur Perl bien connue « Wide character in print ». Le correctif a été annulé et une nouvelle option en ligne de commande : –wide-char est désormais disponible pour restaurer ce comportement. Ajoutez cette option à votre commande pgbadger si vous obtenez le message « Wide character in print ». Ajout d’un test de régression avec des encodages cyrillique et français. Remerciements à 4815162342lost et yethee pour le signalement.
  • Mise à jour de la documentation pour indiquer que lc_messages = ’en_US.UTF-8’ est également valide. Remerciements à nodje pour le signalement.
  • Mise à jour de la documentation concernant –maxlength dont la taille par défaut de troncature est désormais 100000, au lieu de l’absence de troncature par défaut. Remerciements à nodje pour le signalement.
  • Correction du calcul de rétention à la frontière d’année. Remerciements à Fabio Pereira pour le correctif.
  • Correction de l’analyse du format de fichier journal RDS. Remerciements à Kadaffy Talavera pour le signalement.
  • Empêcher la génération d’un fichier d’index vide en mode incrémentiel lorsque aucune nouvelle entrée de journal n’est présente. Remerciements à Kadaffy Talavera pour le signalement.
  • Correction de la documentation non à jour. Remerciements à Eric Hanson pour le correctif.
  • Correction du paramètre en ligne de commande de -no-explain à -noexplain. Remerciements à Indrek Toom pour le correctif.
  • Passer à la taille de fichier par défaut lorsque totalsize n’est pas disponible. Remerciements à Adrien Nayrat pour le correctif.
  • Correction de certaines dates dans les exemples. Remerciements à Greg Clough pour le correctif.
  • Utilisation de l’expression régulière des extensions de fichiers compressés dans les tests restants et extraction de l’extension .bin dans une condition séparée.
  • Gestion des formats de compression zstd et lz4. Remerciements à Adrien Nayrat pour le correctif.
  • Correction de l’appel restant de SIGUSR2 sous Windows. Remerciements à inrap pour le signalement.
  • Correction de la barre de progression avec les fichiers journaux de taille indéterminée.
  • Ajout de la nouvelle option en ligne de commande –command permettant de définir une commande que pgBadger exécutera pour récupérer les entrées de journal sur stdin. Remerciements à Justin Pryzby pour la demande de fonctionnalité.
  • Ajout de la nouvelle option en ligne de commande –noexplain pour empêcher pgBadger d’analyser et de rapporter les plans d’exécution écrits dans le journal par l’extension auto_explain. Cela est utile si vous utilisez une version de PostgreSQL inférieure à 9.0, où pgBadger génère des rapports corrompus lorsqu’un plan d’exécution est présent dans le journal. Remerciements à Massimo Sala pour la demande de fonctionnalité.
  • Correction de l’analyse des fichiers journaux RDS lorsque le préfixe est défini en ligne de commande. Remerciements à Bing Zhao pour le signalement.
  • Correction du mode incrémentiel avec le format de fichier journal RDS. Remerciements à Bing Zhao pour le signalement.
  • Correction d’un problème possible d’analyse des fichiers journaux RDS. Remerciements à James van Lommel et Simon Dobner pour le signalement.
  • Correction de la classification des requêtes et ajout d’un test de régression. Remerciements à alexanderlaw pour le signalement.
  • Correction de l’anonymisation des caractères simples dans les clauses IN. Remerciements à Massimo Sala pour le signalement.
  • Correction de l’analyse des fichiers journaux RDS pour les lignes sans informations client/utilisateur/base de données. Remerciements à Konrad pour le signalement.

v11.1 · 2019-09-16

Cette version de pgBadger corrige plusieurs problèmes signalés par les utilisateurs depuis trois mois. Elle introduit également certaines nouvelles fonctionnalités et rapports :

  • Ajouter un rapport des N requêtes les plus coûteuses en temps durant les étapes de préparation ou d’analyse.
  • Ajouter un rapport des N requêtes les plus coûteuses en temps durant l’étape de liaison.
  • Ajouter un rapport des durées des différentes parties d’une requête : préparation/liaison/exécution. Affiché dans un nouvel onglet « Duration » du rapport « Global Stats ». Exemple : Total query duration: 6m16s Prepare/parse total duration: 45s564ms Bind total duration: 4m46s Execute total duration: 44s71m Cela corrige également le rapport précédent de « Total query duration », qui ne rapportait que la durée totale d’exécution.
  • Ajouter le support des formats de journaux RDS et CloudWatch, détectés automatiquement. Vous pouvez utiliser -f rds si pgBadger n’est pas en mesure de détecter automatiquement le format du journal.
  • Ajouter une nouvelle option de configuration –month-report afin de pouvoir générer des rapports incrémentiels mensuels.
  • Restaurer le support du système d’exploitation Windows.

Il existe également quelques corrections de bogues et améliorations de fonctionnalités.

  • Ajouter la documentation Markdown générée automatiquement dans README.md à l’aide de l’outil pod2markdown. Si la commande n’est pas disponible, le fichier ne sera tout simplement pas généré. Merci à Derek Yang pour le correctif.
  • Traduire l’action WITH en CTE, correction d’un bug de régression introduit dans la dernière version.
  • Corriger la prise en charge du système d’exploitation Windows.
  • Ajouter la prise en charge des formats de journaux RDS et CloudWatch, utiliser -f rds si pgBadger n’est pas en mesure de détecter automatiquement ce format de journal. Merci à peruuparkar pour la demande de fonctionnalité.
  • Corriger l’option -f | –format qui n’était pas appliquée à tous les fichiers extraits de la liste de paramètres, où la détection automatique du format de journal échouait ; le format était pris à partir du premier fichier analysé. Merci à Levente Birta pour le signalement.
  • Mettre à jour le fichier de documentation source pour remplacer la référence à pgBadger v7.x par v11. Merci à Will Buckner pour le correctif.
  • Limiter la hauteur d’affichage des requêtes les plus importantes afin d’éviter de remplir toute la page avec des requêtes très longues. Merci à ilias ilisepe1 pour le correctif.
  • Corriger le débordement des requêtes et des détails dans les requêtes les plus lentes.
  • Corriger les URI SSH pour les fichiers, répertoires et caractères génériques. Merci à tbussmann pour le correctif.
  • Corriger les exemples d’URI dans la documentation. Merci à tbussmann pour le correctif.
  • Masquer le message d’utilisation du fichier de sortie par défaut lorsque –rebuild est utilisé.
  • Ajouter une ligne vide supplémentaire à la sortie de la fonction usage() afin d’éviter que la documentation POD ne soit coupée lors de la compilation.
  • Réappliquer la description de l’option –exclude-client dans la documentation. Merci à Christoph Berg pour le signalement.

v11.0 · 2019-06-25

Cette version de pgBadger introduit de nouvelles fonctionnalités majeures et corrige certains problèmes signalés par les utilisateurs au cours des quatre derniers mois. Nouvelles fonctionnalités :

  • Regrouper les requêtes liées au curseur (DECLARE, CLOSE, FETCH, MOVE) dans un nouveau type de requête CURSOR.

  • Ajouter les requêtes top bind générant un plus grand nombre de fichiers temporaires. Nécessite que log_connections et log_disconnections soient activés.

  • Ajouter l’option en ligne de commande –exclude-client afin de pouvoir exclure les entrées de journal pour une IP cliente spécifique. Peut être utilisée plusieurs fois.

  • Permettre l’utilisation de l’heure uniquement dans les filtres –begin et –end.

  • Ajouter les options -H et –html-dir afin de pouvoir définir un chemin différent où écrire le rapport HTML en mode incrémentiel. Les fichiers binaires restent dans le répertoire défini par l’option -O, –outdir.

  • Ajouter l’option -E | –explode afin de diviser le rapport principal en un rapport par base de données. Les informations globales non liées à une base sont ajoutées au rapport de la base postgres.

  • Ajouter le rapport par base de données en mode incrémentiel. Dans ce mode, un sous-répertoire par base de données sera créé, avec des rapports incrémentiels dédiés.

  • Ajouter le support du format logplex de Heroku pour PostgreSQL. Les journaux peuvent être analysés à l’aide de :

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

  • Lorsqu’une requête dépasse 10 Ko, on limite d’abord la taille de tous les paramètres de chaîne de caractères constants à 30 caractères, puis on tronque la requête à 10 Ko. Cela empêche pgBadger de consommer du temps ou de bloquer avec des requêtes très longues, par exemple lors de l’insertion de données bytea. La limite de 10 Ko peut être ajustée à l’aide du paramètre en ligne de commande –maxlength. La normalisation ou la troncature de la requête à la valeur maxlength n’est effectuée qu’après cette première étape de limitation de taille.

Cette nouvelle version rompt la compatibilité descendante avec les anciens fichiers binaires ou JSON. Cela signifie également que le mode incrémentiel ne pourra pas lire les anciens fichiers binaires. Si vous souhaitez mettre à jour pgBadger tout en conservant vos anciens rapports, veillez à effectuer la mise à jour au début d’une nouvelle semaine, sinon le rapport hebdomadaire sera corrompu. pgBadger affichera un avertissement et ignorera simplement le fichier binaire ancien.

Il existe également quelques corrections de bogues et améliorations de fonctionnalités.

  • Ajouter un avertissement concernant la version et ignorer le chargement du fichier binaire incompatible.
  • Mettre à jour le formateur de code pour pgFormatter 4.0.
  • Corriger le blocage de pgBadger sous le système d’exploitation Windows. Remerciements à JMLessard pour le rapport.
  • Mettre à jour le script tools/pgbadger_tools pour assurer la compatibilité avec le nouveau format binaire introduit dans pgBadger v11.
  • Ajouter les requêtes bind générant le plus de fichiers temporaires. Cette collecte est possible uniquement si les options log_connections et log_disconnections sont activées dans postgresql.conf. Remerciements à Ildefonso Camargo pour la demande de fonctionnalité.
  • Corriger la détection automatique du fuseau horaire. Remerciements à massimosala pour la correction.
  • Supprimer certains graphiques restants lorsque –nograph est utilisé.
  • Forcer l’utilisation de l’extension .txt lorsque –normalized-only est utilisé.
  • Corriger l’affichage des rapports d’auto-vacuum/analyze au format logplex. Remerciements à Konrad zichul pour le rapport.
  • Corriger l’utilisation de la barre de progression sous le système d’exploitation Windows. Remerciements à JMLessard pour le rapport.
  • Utiliser une variable $prefix_vars{'t_time'} pour stocker l’heure du journal. Remerciements à Luca Ferrari pour le correctif.
  • Mettre à jour l’aide et la documentation pour supprimer la commande perl des appels à pgBadger. Remerciements à Luca Ferrari pour le correctif.
  • Utiliser begin et end avec des heures sans date. Remerciements à Luca Ferrari pour le correctif.
  • Ajouter quelques corrections mineures d’orthographe et de grammaire dans le fichier readme. Remerciements à ofni yratilim pour le correctif.
  • Corriger les chemins distants utilisant SSH. Remerciements à Luca Ferrari pour le correctif.
  • Mettre à jour les tests de régression pour qu’ils fonctionnent avec la nouvelle structure introduite par la fonctionnalité de rapport par base de données.
  • Corriger les secondes fractionnaires dans tous les paramètres begin et end. Remerciements à Luca Ferrari pour le correctif.
  • Corriger l’URL de la documentation. Remerciements à Kara Mansel pour le rapport.
  • Corriger l’analyse de auto_explain. Ajouter plus d’informations sur l’option -U pouvant être utilisée plusieurs fois. Remerciements à Douglas J Hunley pour le rapport.
  • Nombreuses améliorations du rapport HTML / CSS. Remerciements à Pierre Giraud pour les correctifs.
  • Mettre à jour le fichier de ressources.
  • Ajouter un test de régression pour le format logplex.
  • Ajouter le support du format logplex de Heroku. Vous devriez pouvoir analyser ces journaux comme suit : heroku logs -p postgres | pgbadger -f logplex -o heroku.html - ou si vous avez déjà enregistré la sortie dans un fichier : pgbadger heroku.log Le format logplex est détecté automatiquement comme tout autre format pris en charge. pgBadger comprend les préfixes par défaut suivants pour log_line_prefix : database = %d connection_source = %r sql_error_code = %e ou simplement : sql_error_code = %e Faites-moi savoir s’il existe d’autres préfixes par défaut. Le préfixe peut toujours être défini à l’aide de l’option -p | –prefix de pgBadger : pgbadger –p ‘base = %d source = %r sql_state = %e’ heroku.log par exemple. Remerciements à Anthony Sosso pour la demande de fonctionnalité.
  • Corriger l’aide de pgBadger pour les URI.
  • Corriger l’utilisation incorrecte des caractères génériques dans les URI SSH introduite dans le correctif précédent. Remerciements à Tobias Bussmann pour le rapport.
  • Permettre les URI contenant des espaces dans le chemin du fichier journal. Remerciements à Tobias Bussmann pour le rapport.
  • Corriger les exemples d’URI dans la documentation. Remerciements à Tobias Bussmann pour le correctif.
  • Corriger t/02_basics.t pour qu’il ne faille pas si le test syslog prend plus de 10 secondes. Remerciements à Christoph Berg pour le correctif.

8.4 - Notes de version pgBadger 10.x

Notes de version complètes de la série pgBadger 10.x

v10.3 · 2019-02-14

Cette version de pgBadger est une mise à jour de maintenance qui corrige certains problèmes de détection automatique du format de journalisation, ainsi qu’un autre problème de lecture des journaux de pgBouncer signalé par les utilisateurs. Une nouvelle fonctionnalité est également disponible :

L'option -o | --outfile peut désormais être utilisée plusieurs fois pour
générer des sorties en plusieurs formats dans une seule commande. Par exemple :
    pgbadger -o out.html -o out.json /log/pgsql-11.log
créera deux rapports aux formats html et json, enregistrés dans les
deux fichiers correspondants.

Il existe également quelques corrections de bogues et améliorations de fonctionnalités.

  • Corriger les rapports statistiques lorsque l’on applique un filtre sur la base de données, l’utilisateur, le client ou l’application. Certaines requêtes n’étaient pas rapportées.
  • Corriger la détection automatique du préfixe de ligne de journal par défaut pour pg>=10.
  • Corriger la détection automatique du fichier journal lorsqu’il utilise un préfixe de ligne de journal « non standard ». Si –prefix spécifie %t, %m ou %n ainsi que %p ou %c, définir le format sur stderr. Merci à Alex Danvy pour le signalement.
  • Supprimer l’espace supplémentaire en fin de ligne.
  • Ajouter un test minimal pour le parseur syslog.
  • Corriger un appel à autodetect_format().
  • Tronquer l’instruction lorsque maxlength est utilisé. Merci à Thibaud Madelaine pour le correctif.
  • Ajouter un test pour plusieurs formats de sortie.
  • L’option -o | –outfile peut désormais être utilisée plusieurs fois pour générer plusieurs formats de sortie dans une même commande. Par exemple : pgbadger -o out.txt -o out.html -o - -x json /log/pgsql-11.log Dans ce cas, pgBadger créera deux rapports au format texte et HTML, sauvegardés dans les fichiers correspondants. Il produira également un rapport au format json sur la sortie standard. Merci à Nikolay pour la demande de fonctionnalité.
  • Déplacer la détection du format de sortie et la définition du nom de fichier de sortie vers une fonction dédiée set_output_extension().
  • Corriger un autre problème de parsing des journaux pgBouncer. Merci à Douglas J. Hunley pour le signalement.

v10.2 · 2018-12-27

Cette version de pgBadger est une mise à jour de maintenance qui corrige les problèmes signalés par les utilisateurs au cours des trois derniers mois. Elle inclut également quelques nouvelles fonctionnalités :

  • Ajouter la prise en charge du format de journal des statistiques pgbouncer 1.8.
  • Ajuster automatiquement le fuseau horaire des graphiques JavaScript.

Une nouvelle option de ligne de commande est disponible :

  • Ajouter l’option –exclude-db pour générer un rapport sur tout sauf la base de données spécifiée.

  • Ajouter le support du téléchargement distant de fichiers journaux PostgreSQL via http ou ftp. Le fichier journal est analysé pendant le téléchargement à l’aide de la commande curl et n’est jamais sauvegardé sur le disque. En cas d’analyse distante via ssh, vous pouvez utiliser l’URI en tant qu’argument de ligne de commande pour préciser le fichier journal PostgreSQL. ssh://localhost/postgresql-10-main.log http://localhost/postgresql-10-main.log.gz ftp://localhost/postgresql-10-main.log

    Avec les protocoles http et ftp, vous devez spécifier le format du fichier journal à la fin de l’URI :

        http://localhost/postgresql-10-main.log:stderr
    

    Vous pouvez spécifier plusieurs URI pour les fichiers journaux à analyser. C’est utile lorsque le fichier journal pgbouncer se trouve sur un hôte distant et que les journaux PostgreSQL sont sur l’hôte local.

    Avec le protocole ssh, vous pouvez également utiliser des caractères génériques comme en mode distant, ex. : ssh://localhost/postgresql-10-main.log*

    L’ancienne syntaxe d’analyse des fichiers journaux distants avec l’option -r fonctionne toujours, mais elle est obsolète et pourrait être supprimée dans les versions futures.

Il existe également quelques corrections de bogues et améliorations de fonctionnalités.

  • Ajuster la fin de la barre de progression pour les fichiers dont la taille estimée est connue (fichiers compressés bz2 et fichiers distants compressés).
  • Mettre à jour l’année dans le copyright.
  • Ajouter des informations sur la notation URI pour analyser les fichiers journaux distants.
  • Forcer la progression à atteindre 100 % à la fin de l’analyse d’un fichier distant compressé.
  • Extraire les informations sur les appels de fonctions PL/pgSQL présents dans les requêtes des rapports de fichiers temporaires. Ces informations sont ajoutées au bloc d’affichage détaillé.
  • Corriger la barre de progression pour les fichiers CSV.
  • Corriger la lecture d’un fichier binaire comme fichier d’entrée au lieu du fichier journal.
  • Encoder la sortie HTML des requêtes en UTF8 afin d’éviter le message « Wide character in print ». Merci à Colin ’t Hart pour le signalement.
  • Ajouter la clé/valeur « Checkpoints distance » pour le pic de distance.
  • Corriger l’analyse des logs de pgbouncer et les rapports de débit de requêtes. Merci à Levente Birta pour le signalement.
  • Corriger l’utilisation de csvlog au lieu de csv pour le format d’entrée.
  • Ajouter la prise en charge du format de journal pgbouncer 1.8. Merci à Levente Birta pour le signalement.
  • Ajouter un avertissement concernant le traitement parallèle désactivé avec csvlog. Merci à cstdenis pour le signalement.
  • Ajouter des informations dans la sortie d’aide sur le forçage du processus unique avec le format csvlog via les options -j et -J. Merci à cstdenis pour le signalement.
  • Corriger l’erreur « unknown line format » pour les journaux multilignes lors d’une analyse incrémentale via SSH. Merci à Wooyoung Cho pour le signalement.
  • Ajouter l’option -k (–insecure) à la commande curl afin de pouvoir télécharger des journaux depuis un serveur utilisant un certificat auto-signé.
  • Ajuster automatiquement le fuseau horaire des graphiques JavaScript. Merci à Massimino Sala pour la demande de fonctionnalité.
  • Ajouter la prise en charge du téléchargement des journaux HTTP par pgBadger, par exemple : /usr/bin/pgbadger http://www.mydom.com/postgresql-10.log
  • Analyser le fichier pendant son téléchargement à l’aide de la commande curl.
  • Corriger la documentation. Merci à 0xflotus pour le correctif.
  • Réappliquer la correction relative au remplacement des paramètres liés après un nettoyage de code supplémentaire. Merci à Bernhard J. M. Grun pour le signalement.
  • Ajouter l’option –exclude-db pour générer un rapport sur tout sauf la base de données spécifiée. Cette option peut être utilisée plusieurs fois.

v10.1 · 2018-09-12

Cette version de pgBadger est une mise à jour de maintenance qui corrige les rapports en mode incrémentiel et en mode multiprocessus avec l’option -j. La lecture des journaux depuis l’entrée standard était également défectueuse. Si vous utilisez la version 10.0, mettez à jour dès maintenant.

  • Ajouter un test sur le parseur de journaux de pgbouncer.
  • Quelques améliorations de performances mineures.
  • Corriger l’erreur « not a valid file descriptor at pgbadger line 12314 ».
  • Corriger le saut de ligne indésirable dans la barre de progression au démarrage.
  • Supprimer les fichiers CircleCI du projet.
  • Supprimer la dépendance à bats et jq pour la suite de tests, remplacés par Test::Simple et JSON::XS.
  • Ajouter davantage de tests, notamment pour le mode incrémentiel et l’entrée depuis stdin, qui était défectueuse dans la version 10.0.
  • Synchroniser pgBadger, pod et README, et corriger quelques erreurs de syntaxe. Remerciements à Christoph Berg pour le correctif.
  • Ajouter la documentation sur la manière d’installer le module Perl JSON::XS depuis les dépôts apt et yum.
  • Corriger l’URI pour le CSS en mode incrémentiel. Remerciements à Floris van Nee pour le signalement.
  • Corriger l’erreur fatale lors de la recherche de journaux depuis STDIN. Remerciements à Jacek Szpot pour le signalement.
  • Corriger l’utilisation de SED pour les builds OSX. Remerciements à Steve Newson pour le correctif.
  • Corriger l’erreur « illegal division by zero » en mode incrémentiel. Remerciements à aleszeleny pour le signalement.
  • Remplacer SQL::Beautify par la version 3.1 de pgFormatter::Beautify.

v10.0 · 2018-09-09

Cette version de pgBadger est une version majeure qui introduit de nouvelles fonctionnalités et corrige tous les problèmes signalés par les utilisateurs depuis la dernière version.

  • Ajouter le support du format de fichier journal syslog de pgbouncer.
  • Ajouter le support de tous les formats auto_explain (texte, XML, JSON et YAML).
  • Ajouter le support du champ %q dans log_line_prefix.
  • Ajouter le format jsonlog de l’extension de Michael Paquier, avec -f jsonlog pgBadger pourra parser le fichier journal.
  • Remplacer le formateur SQL/embellisseur par la version 3.0 de pgFormatter.

Une nouvelle option de ligne de commande est disponible :

  • Ajouter l’option en ligne de commande –prettify-json pour formater de manière lisible la sortie JSON.
  • Ajouter l’option en ligne de commande –log-timezone +/-XX pour définir le nombre d’heures par rapport à GMT de la zone horaire à utiliser afin d’ajuster les dates/heure lues dans le fichier journal avant leur analyse. Notez que vous pourriez toutefois devoir ajuster la zone horaire du graphique en utilisant -Z lorsque le client n’utilise pas la même zone horaire.
  • Ajouter l’option –include-time pour permettre de choisir les périodes que vous souhaitez afficher, plutôt que d’exclure toutes les périodes que vous ne souhaitez pas voir (–exclude-time).

Le projet pgBadger et ses droits d’auteur ont été transférés de Dalibo à l’auteur et au mainteneur officiel du projet. Veuillez mettre à jour vos liens :

Je tiens à remercier chaleureusement les équipes de Dalibo pour leurs investissements constants dans pgBadger au fil des années, et plus particulièrement Damien Clochard et Jean-Paul Argudo pour leur aide précieuse à la promotion de pgBadger.

  • Corriger la distance du point de contrôle et l’estimation non rapportées en mode incrémentiel. Remerciements à aleszeleny pour le signalement.
  • Corriger le titre du rapport des sessions simultanées de pgbouncer. Remerciements à Jehan Guillaume De Rorthais pour le signalement.
  • Ajouter le support du format de fichier journal syslog de pgbouncer. Remerciements à djester pour la demande de fonctionnalité.
  • Corriger l’erreur lorsque un fichier journal distant est vide. Remerciements à Parasit Hendersson pour le signalement.
  • Corriger le test avec le format binaire. Le fichier binaire doit être généré tel quel, car il dépend de la plateforme. Remerciements à Michal Nowak pour le signalement.
  • Corriger le cas où un plan d’explication vide est généré.
  • Corriger l’analyse du format par défaut détecté automatiquement avec un préfixe en ligne de commande.
  • Supprimer la dépendance à la commande git dans Makefile.PL.
  • Mettre à jour la documentation concernant les modifications d’options et supprimer la partie [%l-1] du préfixe obligatoire.
  • Corriger l’analyse de l’utilisation système vacuum / analyze pour PostgreSQL 10. Remerciements à Achilleas Mantzios pour le correctif.
  • Corriger le tableau de l’activité des fichiers temporaires.
  • Supprimer la dépendance à git lors de l’installation.
  • Ajouter l’option en ligne de commande –log-timezone +/-XX pour définir le nombre d’heures par rapport à GMT du fuseau horaire à utiliser pour ajuster les dates/heure lues dans le fichier journal avant leur analyse. L’utilisation de cette option rend la recherche de dates/heure dans le fichier journal plus difficile, car l’heure ne sera pas la même dans le fichier. Notez que vous pourriez toujours devoir ajuster le fuseau horaire du graphique en utilisant -Z lorsque le client n’a pas le même fuseau horaire. Remerciements à xdexter pour la demande de fonctionnalité et à Julien Tachoire pour le correctif.
  • Ajouter le support du format de sortie json pour auto_explain. Remerciements à dmius pour le signalement.
  • Corriger le parseur auto_explain et les requêtes comptées deux fois. Remerciements à zam6ak pour le signalement.
  • Corriger l’expression régulière du point de contrôle pour qu’elle corresponde aux messages de journal de PostgreSQL 10. Remerciements à Edmund Horner pour le correctif.
  • Mettre à jour la description de l’option -f | –format en ajoutant des informations sur le format jsonlog.
  • Corriger la normalisation des requêtes pour éviter les doublons avec les requêtes bind. La normalisation des valeurs est désormais transformée en un seul ? au lieu de 0 pour les nombres et deux apostrophes simples pour les chaînes. Remerciements à vadv pour le signalement.
  • Corriger le comptage des niveaux de journalisation. Remerciements à Jean-Christophe Arnu pour le signalement.
  • Rendre pgBadger plus conforme à B::Lint pour les noms de sous-routines nues.
  • Rendre perlcritic satisfait.
  • Ajouter l’option en ligne de commande –prettify-json pour formater proprement la sortie JSON. La sortie par défaut est sur une seule ligne.
  • Corriger le rapport de répartition des événements.
  • Corriger le bug avec –prefix lorsque log_line_prefix contient plusieurs %%. Remerciements à svb007 pour le signalement.
  • Ajouter l’option en ligne de commande –log-timezone +/-XX pour définir le nombre d’heures par rapport à GMT du fuseau horaire à utiliser pour ajuster les dates/heure lues dans le fichier journal avant leur analyse. L’utilisation de cette option rend la recherche de dates/heure dans le fichier journal plus difficile, car l’heure ne sera pas la même dans le fichier. Notez que vous pourriez toujours devoir ajuster le fuseau horaire du graphique en utilisant -Z lorsque le client n’a pas le même fuseau horaire. Remerciements à xdexter pour la demande de fonctionnalité.
  • Supprimer INDEXES de la liste des mots-clés et ajouter BUFFERS à cette liste.
  • Corriger la normalisation des requêtes utilisant des curseurs.
  • Supprimer le Dockerfile et la documentation relative à docker run. pgBadger est fourni sous forme d’un seul script Perl sans dépendance et peut être utilisé sur toute plateforme. Il est inutile d’utiliser Docker pour exécuter pgBadger, si vous ne souhaitez rien installer : copiez simplement le fichier pgbadger là où vous le souhaitez et exécutez-le.
  • Corriger la grille cassée lorsque aucune activité de fichiers temporaires n’est présente. Remerciements à Pierre Giraud pour le correctif.
  • Ajouter un avertissement dans la documentation concernant log_min_duration_statement vs log_duration + log_statement. Remerciements à Julien Tachoire pour le correctif.
  • Appliquer le décalage de fuseau horaire aux graphiques en barres. Remerciements à Julien Tachoire pour le correctif.
  • Supprimer les informations actuelles sur les fichiers temporaires si une erreur est rencontrée pour le même PID. Remerciements à Julien Tachoire pour le correctif.
  • Utiliser de manière cohérente app= dans les exemples, et prendre en charge appname=. Certains exemples d’utilisation utilisaient appname= dans le préfixe, mais le code ne reconnaissait pas ce jeton. Utilisez app= dans tous les exemples, et ajoutez appname= au parseur de préfixe. Remerciements à Christoph Berg pour le correctif.
  • Corriger le nom long incorrect de l’option -J qui devrait être –Jobs au lieu de –job_per_file. Remerciements à Chad Trabant pour le signalement et à Etienne Bersac pour le correctif.
  • Ignorer les fichiers blib. Remerciements à Etienne Bersac pour le correctif.
  • Ajouter des tests de cohérence. Remerciements à damien clochard pour le correctif.
  • Mise à jour de la documentation : stderr n’est pas la valeur par défaut pour -f. Remerciements à Christophe Courtois pour le correctif.
  • Mettre à jour en permanence le POD et le README. Remerciements à Etienne Bersac pour le correctif.
  • Ajouter des tests de régression. Remerciements à Etienne Bersac pour le correctif.
  • Ajouter la configuration editorconfig. Remerciements à Etienne Bersac pour le correctif.
  • Supprimer les fichiers temporaires vi du fichier gitignore. Remerciements à Etienne Bersac pour le correctif.
  • Ajouter l’option –include-time pour permettre de choisir les moments que vous souhaitez voir, plutôt que d’exclure tous les moments que vous ne souhaitez pas voir. Cela est pratique lorsque vous souhaitez afficher uniquement un ou deux jours parmi une semaine de journaux (réduit de plusieurs options –exclude-time à une seule option –include-time). Remerciements à Wesley Bowman pour le correctif.
  • Vérifier la syntaxe du POD. Remerciements à Etienne Bersac pour le correctif.
  • Ajouter HACKING pour documenter les tests. Remerciements à Etienne Bersac pour le correctif.
  • Supprimer l’option obsolète –bar-graph. Remerciements à Etienne Bersac pour le correctif.
  • Supprimer le fichier .perltidyrc trompeur. Ce fichier date de 2012 et le code de pgBadger est bien loin d’être conforme. Le diff unifié de perltidy atteint 10 k lignes. Supprimons-le. Remerciements à Etienne Bersac pour le correctif.
  • Corriger l’utilisation d’une valeur non initialisée dans la mise en forme SQL. Remerciements à John Krugger pour le signalement et à Jean-paul Argudo pour le signalement.

8.5 - Notes de version de pgBadger 9.x

Notes de version complètes de la série pgBadger 9.x

v9.2 · 2017-07-27

Cette version de pgBadger est une mise à jour de maintenance qui ajoute quelques nouvelles fonctionnalités.

  • Ajouter un rapport de distance entre les points de contrôle et une estimation.
  • Ajouter le support des mots-clés AWS Redshift dans le formateur de code SQL.
  • Ajouter la détection automatique du format du fichier journal en mode distant afin de permettre l’analyse distante du fichier journal de pgbouncer conjointement avec le fichier journal PostgreSQL.

Il existe également quelques corrections de bogues et améliorations de fonctionnalités.

  • Correction du rapport avec histogramme qui n’affichait pas les données supérieures à la dernière plage.
  • Correction de l’analyse de journalctl sans le motif de numéro de ligne ([%l-n]). Remerciements à Christian Schmitt pour le signalement.
  • Ajout du rapport sur la distance et l’estimation du point de contrôle. Remerciements à jjsantam pour la demande de fonctionnalité.
  • Ajout d’informations supplémentaires sur les actions effectuées par le script pour mettre à jour les fichiers CSS et JavaScript, tools/updt_embedded_rsc.pl.
  • Ne plus émettre d’avertissement lorsque tous les fichiers journaux sont vides et quitter avec le code 0.
  • Correction de build_log_line_prefix_regex() qui ne comprenait pas %n comme clé de recherche dans %regex_map. Remerciements à ghosthound pour le correctif.
  • Changement du niveau d’erreur de « FATAL: cannot use CSV » au niveau WARNING. Remerciements à kong1man pour le signalement.
  • Correction de l’avertissement relatif à une valeur non initialisée. Remerciements à Payal pour le signalement.
  • Ajout de « permission denied » à la normalisation des erreurs.
  • Mise à jour de pgBadger vers le dernier commit 5bdc018 de pgFormatter.
  • Ajout du support des mots-clés AWS Redshift. Remerciements à cavanaug pour la demande de fonctionnalité.
  • Correction de l’absence de requête dans le rapport de fichier temporaire lorsque la requête était annulée. Remerciements à Fabrizio de Royes Mello pour le signalement.
  • Normalisation des requêtes avec paramètres liés, remplacés par un « ? ».
  • Vérification de cohérence pour éviter une heure de fin antérieure à l’heure de début. Remerciements à Christophe Courtois pour le correctif.
  • Correction de nombreux mots mal orthographiés et ajustements grammaticaux. Utilisation de « pgBadger » lorsqu’il s’agit du programme et non du fichier binaire. Utilisation d’expressions officielles telles que PgBouncer, GitHub et CSS. Le fichier POD a été synchronisé avec README. Remerciements à Euler Taveira pour le correctif.
  • Correction du menu cassé lors de l’utilisation de –disable-type : le test top_cancelled_info et la fermeture de la liste doivent se trouver à l’intérieur du test disable_type. À cette occasion, mise en retrait du test disable_lock. Remerciements à Euler Taveira pour le correctif.
  • Correction de l’utilisation d’une valeur non initialisée. Remerciements à johnkrugger pour le signalement.
  • Suppression du test de lecture du fichier journal pendant l’auto-détection du format du journal lorsque le fichier est hébergé à distance. Remerciements à clomdd pour le signalement.
  • Ajout de l’auto-détection du format du journal en mode distant pour permettre l’analyse distante du fichier journal de pgbouncer en parallèle avec celui de PostgreSQL.
  • Correction de l’incrémentation erronée du nombre de sessions après la validation de la ligne journal. Remerciements à Achilleas Mantzios pour le signalement.
  • Réorganisation mineure de la description de pgBadger.
  • Correction d’informations redondantes dans la documentation. Remerciements à cscatolini pour le correctif.

v9.1 · 2017-01-24

Cette version de pgBadger est une mise à jour de maintenance qui ajoute quelques nouvelles fonctionnalités.

  • Ajouter un rapport de répartition des classes d’erreur lorsque SQLState est disponible dans log_line_prefix (voir le champ %e).
  • Mettre à jour le formateur SQL pour utiliser le code pgFormatter v1.6.
  • Améliorer la normalisation des messages d’erreur.
  • Ajouter l’option –normalized-only pour générer un fichier texte contenant toutes les requêtes normalisées trouvées dans un journal, avec leur fréquence.
  • Permettre à %c (identifiant de session) de remplacer %p (PID) comme identifiant unique de session.
  • Ajouter les messages d’attente de verrou aux rapports d’événements.
  • Ajouter l’option –start-monday pour faire commencer les semaines du calendrier le lundi au lieu du dimanche par défaut.

Il existe également quelques corrections de bogues et améliorations de fonctionnalités.

  • Ajouter un rapport de répartition des classes d’erreurs lorsque SQLState est disponible dans le préfixe de ligne de journal. Remerciements à jacks33 pour la demande de fonctionnalité.
  • Corriger l’index global incrémental lors du redimensionnement. Remerciements à clomdd pour le rapport.
  • Corriger le champ %i (étiquette de commande) de log_line_prefix pour autoriser le caractère espace.
  • Corriger les options –exclude-line et la suppression du répertoire obsolète lorsque la rétention est activée et que –noreport est utilisé.
  • Corriger une faute de frappe dans « vacuum activity table ». Remerciements à Nicolas Gollet pour le correctif.
  • Corriger le rapport d’autovacuum. Remerciements à Nicolas Gollet pour le correctif.
  • Corriger l’auteur du logo de pgBadger – Damien Cazeils – et l’anglais dans les commentaires. Remerciements à Thibaut Madelaine pour le correctif.
  • Ajouter des informations sur le format de journal de pgbouncer dans l’option -f. Remerciements à clomdd pour le rapport.
  • Ajouter des informations sur –normalized-only dans la documentation.
  • Corriger le rapport cassé de la date-heure introduit dans le correctif précédent.
  • Corriger l’association durée/requête lorsque log_duration=on et log_statement=all. Remerciements à Eric Jensen pour le rapport.
  • Corriger la normalisation des messages concernant les verrous consultatifs (advisory locks). Remerciements à Thibaut Madelaine pour le rapport.
  • Corriger le rapport de sortie d’auto_explain. Remerciements à fch77700 pour le rapport.
  • Corriger la détection automatique du format de journal incorrecte avec les entrées de journal provenant de stdin. Remerciements à Jesus Adolfo Parra pour le rapport.
  • Ajouter une parenthèse ouvrante à la liste des caractères « stop » de la regex utilisée pour rechercher le client base de données dans le préfixe, afin de gérer le format de chaîne du client PostgreSQL incluant le port source. Remerciements à Jon Nelson pour le correctif.
  • Corriger certaines erreurs d’orthographe. Remerciements à Jon Nelson pour le correctif.
  • Permettre à %c (identifiant de session) de remplacer %p (PID) comme identifiant unique de session. Remerciements à Jerryliuk pour le rapport.
  • Permettre à pgBadger de parser le préfixe de journal par défaut qui sera probablement utilisé dans la version 10.0 : ‘%m [%p] '
  • Corriger la ligne manquante initiale avec l’appel à l’interpréteur.
  • Corriger l’absence des valeurs Moy. dans le rapport CSV. Remerciements à Yosuke Tomita pour le rapport.
  • Corriger le message d’erreur dans la méthode autodetect_format().
  • Ajouter l’option –start-monday pour commencer les semaines du calendrier le lundi au lieu du dimanche par défaut. Remerciements à Joosep Mae pour la demande de fonctionnalité.
  • Corriger l’option –histo-average. Remerciements à Yves Martin pour le rapport.
  • Supprimer la forme plurielle de –ssh-option dans la documentation. Remerciements à mark-a-s pour le rapport.
  • Corriger le filtre –exclude-time et réécrire le code pour ignorer les lignes non souhaitées ainsi que le code mis à jour pour la barre de progression. Remerciements à Michael Chesterton pour le rapport.
  • Corriger la prise en charge du champ %r dans le préfixe au lieu de %h.

v9.0 · 2016-09-02

Cette version majeure de pgBadger est une migration vers Bootstrap 3 ainsi qu’une mise à jour de toutes les ressources (CSS et JavaScript). Elle inclut également la correction de certains bogues et des améliorations de fonctionnalités.

La compatibilité descendante avec les anciens rapports incrémentiels peut être préservée.

  • Les sources et licences des fichiers de ressources sont désormais disponibles dans un sous-répertoire dédié. Un script permettant de mettre à jour la version minifiée intégrée au script pgBadger a été ajouté. Remerciements à Christoph Berg pour son aide et sa demande de fonctionnalité.

  • Essayer de détecter l’utilisateur/base de données/hôte à partir des chaînes de connexion si log_connections est activé et si log_line_prefix ne les inclut pas. Extension de l’expression régulière pour détecter automatiquement le nom de la base de données, le nom de l’utilisateur, l’adresse IP du client et le nom de l’application. Les expressions régulières sont désormais les suivantes :

    db => qr/(?:db|database)=([^,]*)/;
    user => qr/(?:user|usr)=([^,]*)/;
    client => qr/(?:client|remote|ip|host)=([^,]*)/;
    appname => qr/(?:app|application)=([^,]*)/;
    
  • Ajouter la compatibilité descendante avec les versions antérieures de pgBadger en mode incrémentiel en créant un sous-répertoire pour les nouveaux fichiers CSS et JavaScript. Ce sous-répertoire est nommé en fonction du numéro de version majeure de pgBadger.

  • Augmenter la taille du logo pgBadger qui apparaît trop petit avec la nouvelle taille de police.

  • Normaliser les informations détaillées dans tous les rapports.

  • Corriger l’icône de copie en double dans le rapport des verrous.

  • Corriger le graphique manquant dans l’histogramme du temps de session. Remerciements à Guillaume Lelarge pour le rapport.

  • Ajouter un fichier LICENSE indiquant les licences utilisées par les fichiers de ressources. Remerciements à Christoph Berg pour le correctif.

  • Ajouter un correctif à la bibliothèque jqplot pour corriger une boucle infinie lors de la tentative de téléchargement de certains graphiques. Merci à Julien Tachoires pour son aide dans la résolution de ce problème.

  • Le script tools/updt_embedded_rsc.pl appliquera le correctif au fichier de ressources resources/jquery.jqplot.js et ne produira pas d’alerte s’il a déjà été appliqué.

  • Supprimer la virgule finale unique à la fin du jeu de données du graphique camembert. Merci à Julien Tachoires pour le rapport.

  • Modifier l’affichage de l’erreur normalisée

  • Supprimer les fichiers inutilisés ou générés automatiquement

  • Mettre à jour tous les fichiers de ressources (js+css) et créer un répertoire pour inclure les sources des bibliothèques JavaScript utilisées par pgBadger. Un nouveau script, tools/updt_embedded_rsc.pl, peut être utilisé pour générer la version minifiée de ces fichiers et les intégrer directement dans pgBadger. Ce script intègre également le fichier de police open truetype FontAwesome.otf dans le fichier fontawesome.css.

9 - Assistance et contribution

Signalez des bogues, demandez des fonctionnalités, contribuez à des correctifs et trouvez un support professionnel PostgreSQL

pgBadger est maintenu dans le cadre d’un projet open source. Les rapports de bogues, les propositions de fonctionnalités, les corrections de documentation et les correctifs sont gérés via le dépôt GitHub du projet amont.

Signalements de bogues et demandes de fonctionnalités

  1. Passez à la dernière version publiée et vérifiez que le comportement persiste.
  2. Recherchez dans les problèmes ouverts et les problèmes fermés une réponse existante.
  3. Réduisez le problème au plus petit extrait de journal partageable et à la ligne de commande minimale qui permettent encore de le reproduire.
  4. Supprimez les identifiants, les requêtes SQL sensibles, les valeurs liées, les noms d’hôtes, les adresses et les données métier.
  5. Ouvrez un nouveau problème avec la version de pgBadger, le système d’exploitation, le format d’entrée, les options exactes, le résultat observé et le résultat attendu.

En cas de plantage ou d’erreur d’analyse, incluez uniquement les lignes de journal minimales et expurgées nécessaires pour reproduire le cas limite. Un journal de production complet ou un rapport généré convient rarement à un ticket public.

Contribuez à un correctif

Le projet inclut un fichier .editorconfig pour un espacement cohérent. Veillez à aligner l’aide des commandes, la documentation POD et la documentation Markdown générée lorsqu’un changement affecte un comportement visible pour l’utilisateur.

Le processus de génération de la documentation du projet amont est :

$ perl Makefile.PL
$ make README

doc/pgBadger.pod est la source principale de la documentation détaillée. pgbadger --help fournit la syntaxe et les options, tandis que les fichiers README sont des vues générées. Exécutez les tests pertinents avant de soumettre une demande de fusion.

Support commercial

Le projet pgBadger ne garantit ni maintenance ni support selon sa licence. Pour obtenir une aide payante concernant la journalisation PostgreSQL, l’analyse de performance ou l’automatisation des rapports, consultez le répertoire des services professionnels PostgreSQL .

10 - Licence et crédits

Conditions de licence PostgreSQL, auteur et composants tiers intégrés

pgBadger est un logiciel libre et open source distribué sous la licence PostgreSQL. Il peut être utilisé, copié, modifié et redistribué sans frais, sous réserve du maintien des mentions de copyright et de licence.

Licence PostgreSQL

Copyright (c) 2012-2026, Gilles Darold

Permission to use, copy, modify, and distribute this software and its documentation for any purpose, without fee, and without a written agreement is hereby granted, provided that the above copyright notice and this paragraph and the following two paragraphs appear in all copies.

IN NO EVENT SHALL Darold BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF Darold HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Darold SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN “AS IS” BASIS, AND Darold HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.

Auteurs et crédits de conception

  • pgBadger est une œuvre originale de Gilles Darold.
  • Le logo de pgBadger est une création originale de Damien Cazeils.
  • La conception de pgBadger v4.x a été réalisée par l’entreprise « Art is code ».
  • Le site web est une œuvre de Gilles Darold.
  • Les contributeurs sont remerciés tout au long du fichier ChangeLog du projet principal.

Ressources embarquées et de rapport

Une version modifiée du module Perl SQL::Beautify est intégrée à pgBadger. Elle est protégée par le droit d’auteur © 2009 Jonas Kramer et publiée sous la Licence Artistic 2.0.

Les ressources du rapport généré ont leurs propres mentions, notamment :

Composant Licence
bean.js, Bootstrap, jQuery, Underscore MIT
jqPlot MIT ou GPL-2.0, au choix de l’utilisateur
police Font Awesome SIL Open Font License 1.1
CSS Font Awesome MIT

Le fichier resources/LICENSE précise les licences des ressources. Les rapports d’exemple incluent les mentions de licence de leurs composants.