Utiliser pgBadger avec Windows

Objectif

Mettre en place une instance de pgBadger 9.1 sur un poste de travail équipé de Windows 7 SP1 avec PostGreSQL 9.6.

Installation

Le seul pré-requis est l’existence d’un environnement Perl sur la machine.

Ou peut utiliser :

Après avoir installé l’un de ces environnements, on télécharge puis on dézippe la dernière version de pgBadger (dans cet exemple la version 9.1) à l’adresse suivante : https://github.com/dalibo/pgbadger

Pour installer pgBadger, il suffit de double-cliquer sur le fichier Perl Makefile.PL.

Paramétrage des logs via postgresql.conf

Pour que les logs soient effectifs, il faut en premier lieu activer le paramètre suivant :

logging_collector = on

La documentation de pgBadger détaille ensuite tous les paramètres à modifier (en décommentant les lignes pour que les changements soient pris en compte) :

log_min_duration_statement = 0
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h '
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='C

Attention : les fichiers de log générés avec ce paramétrage peuvent être volumineux malgré leur rotation. Il faut donc surveiller l’espace disque disponible et éventuellement modifier le répertoire de sortie :

log_directory = 'E:/LOGS/pg_log'

On souhaite utiliser le mode incrémental de pgBadger pour générer un rapport quotidien ainsi qu’un rapport hebdomadaire.

Il faut donc modifier également les paramètres suivants pour le nommage des fichiers de log et leur rotation :

log_filename = 'postgresql-%w.log'
log_file_mode = 0640
log_truncate_on_rotation = on
log_rotation_age = 1d

Une fois les changements sauvegardés, on redémarre le service postgresql-x64-9.6 pour que le serveur puisse les prendre en compte.

Activation de pgBadger

En ligne de commande, on se positionne dans le répertoire de pgBadger :

cd « C:\Program Files\PostgreSQL\pgbadger-9.1 »

Puis on exécute la commande pour chacun des fichiers logs générés :

perl.exe pgbadger E:/LOGS/pg_log/postgresql-1.log -I -O C:/xampp/htdocs/pgbagder

Les options suivantes sont utilisées :

  • -I pour initier le mode incrémental,
  • -O pour spécifier le répertoire de sortie (obligatoire pour le mode incrémental).

Ici, on choisit comme destination le répertoire htdocs de XAMPP afin de pouvoir diffuser les résultats via un Intranet local.

Attention : on utilise le caractère slash plutôt que l’antislash dans les chemins d’accès au logs et au répertoire de destination puisque que l’antislash associé à lettre « p » (\p ou \P), que l’on peut retrouver dans cet exemple, correspond à une expression régulière Perl qui met le script en échec !

Automatisation de la génération des rapports

On compile dans un fichier .cmd qui sera exécuté quotidiennement l’ensemble des commandes pgbadger :

REM positionnement dans le répertoire pgbadger
c:
cd « C:\Program Files\PostgreSQL\pgbadger-9.1 »

REM exécution de la commande via perl pour la génération des rapports journaliers et du rapport hebdomadaire
perl.exe pgbadger E:\LOGS\_pg_log\_postgresql-1.log -I -O C:\xampp\htdocs\pgbadger
perl.exe pgbadger E:\LOGS\_pg_log\_postgresql-2.log -I -O C:\xampp\htdocs\pgbadger
perl.exe pgbadger E:\LOGS\_pg_log\_postgresql-3.log -I -O C:\xampp\htdocs\pgbadger
perl.exe pgbadger E:\LOGS\_pg_log\_postgresql-4.log -I -O C:\xampp\htdocs\pgbadger
perl.exe pgbadger E:\LOGS\_pg_log\_postgresql-5.log -I -O C:\xampp\htdocs\pgbadger
perl.exe pgbadger E:\LOGS\_pg_log\_postgresql-6.log -I -O C:\xampp\htdocs\pgbadger
perl.exe pgbadger E:\LOGS\_pg_log\_postgresql-7.log -I -O C:\xampp\htdocs\pgbadger

On utilise ensuite le planificateur de tâches Windows pour exécuter ce fichier tous les jours.

Résultat

Le script génère dans le répertoire pgbadger les fichiers et répertoire suivants :

pgbadger_result

Le répertoire 2017 contient des sous-répertoires par mois, semaine et jour stockant les données tirées des logs.

Le fichier LAST_PARSED indique la date et l’heure de la dernière ligne parcourue dans le log.

Le fichier index.html renvoie sur un agenda permettant de consulter les différentes statistiques par jour et par semaine :

pgbadger_year

pgbadger_day

 

 

Sources