pgBadger - log analysis

Cette page décrit la mise en oeuvre de pgBadger, un outil d'analyse des logs PostgreSQL.

Ref: pgBadger - a fast PostgreSQL log analysis report

Installation

Configuration des clusters PostgreSQL

Il faut ajuster la configuration des clusters dont on veut analyser les requêtes.

Sur chaque serveur PostgreSQL à analyser, il faut ajouter les lignes suivantes dans postgresql.conf et redémarrer le cluster PostgreSQL.

Dans Muppy, ouvrez le cluster via Databases / Databases Cluster et entrez le bloc suivant dans l'onglet postgresql.conf après avoir éventuellement ajustées les valeurs de log_min_duration_statement et track_activity_query_size

# begin PGBadger 
log_statement = none              # required for pgBadger
log_min_duration_statement = 0    # adjust: minimum query duration to analyze
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
lc_messages='en_US.UTF-8'         # pgbdager does not parse fr_FR.UTF-8
track_activity_query_size = 1MB   # adjust: space reserved for textual repr of query
# PGBadger end

Installation de pgBagder

pgBadger est un programme perl qui s’installe à partir des sources.

Perl est installé en standard sous Ubuntu. Il est possible d’utiliser pgBadger sans rien installer.

pgBadger peut être installé en local sur un poste de travail (linux est recommandé) ou un serveur.

Procédure

Connecté en tant que ubuntu:

export PGBADGER_VERSION="13.0"  # Ajuster avec la dernière verson publiée
wget https://github.com/darold/pgbadger/archive/refs/tags/v${PGBADGER_VERSION}.tar.gz -O pgbadger-v${PGBADGER_VERSION}.tar.gz
tar xzf pgbadger-v${PGBADGER_VERSION}.tar.gz
rm pgbadger-v${PGBADGER_VERSION}.tar.gz
cd pgbadger-${PGBADGER_VERSION}/
perl Makefile.PL
make && sudo make install

Utilisation de pgBadger

pgBdger peut être utilisée en local ou remote (via ssh).

Les performances ne sont pas bien différentes entre le mode local et le remote.

En local dans le serveur

ubuntu@ns338066:~$ sudo pg_lsclusters 
Ver Cluster Port Status Owner    Data directory              Log file
16  main    5432 online postgres /var/lib/postgresql/16/main /var/log/postgresql/postgresql-16-main.log

ubuntu@ns338066:~$ pgbadger /var/log/postgresql/postgresql-16-main.log*
[========================>] Parsed 2601353 bytes of 2601353 (100.00%), queries: 7519, events: 23
LOG: Ok, generating html report...
ubuntu@ns338066:~$ ll
total 2328
drwxr-x--- 9 ubuntu ubuntu    4096 Dec 17 10:20 ./
drwxr-xr-x 4 root   root      4096 Nov 17 21:04 ../
-rw-rw-r-- 1 ubuntu ubuntu 1462393 Dec 17 10:20 out.html <= !!!!!!!!!!!!!! le report 

Le fichier out.html contient le résultat de l’analyse.

A distance via une connexion SSH

Dans ce mode, un pgBdager local traite le log d’un serveur postgresql auquel il se connecte via une connexion SSH.

Step 1 : Check connectivity

pgbadger doit pouvoir se connecter en SSH sans mot de passe !

ssh ubuntu@$PGHOST
ou ssh [email protected]

Step 2 : génération du rapport à distance

pgbadger ssh://ubuntu@$PGHOST:22//var/log/postgresql/postgresql-16-main.log*

Attention le // après le port est nécessaire

Consultation du rapport d’analyse

pgBadger a produit un fichier out.html qui contient toutes les données.

Rapport généré à distance

Il faut ouvrir le fichier out.html dans un navigateur pour le consulter.

Rapport généré dans un serveur distant.

Dans le cas où le rapport a été généré dans un serveur, 2 options sont disponibles:

  • Copier le fichier en local, via scp puis ouvrir le fichier

  • monter un serveur web temporaire pour la durée de la consultation

Monter un serveur http temporaire

Les lignes suivantes montre comment générer le rapport isolé dans un dossier pour le publier en http.

mkdir tmp_server
cd tmp_server
pgbadger /var/log/postgresql/postgresql-XX-main.log*
# Lance un serveur web sur le port 8000 poru consulter le rapport
python3 -m http.server 
# quitter avec CTRL-C

Last updated