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
track_activity_query_size consomme beaucoup de ressources et alourdit le traitement fait par pgBadger. Les valeurs sont comprises entre 100 Bytes et 1 Megabytes.
log_min_duration_statement définit un seuil de durée d'exécution (en ms) au delà duquel les requêtes sont loggés. Par exemple, avec log_min_duration_statement = 300 seules les requêtes dont la durée d'execution dépasse 300 ms sont loggées. Commencez avec une valeur haute (eg. 2000) et descendez progressivement.
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