2. PgBadger
JJ Outil d’analyse en Perl pour les logs PostgreSQL
JJ Anciennement pgFouine
JJ Open-Source (PostgreSQL License)
JJ Nécessite l’activation des logs dans PostgreSQL
1
3. Installation
Source à télécharger sur http://sourceforge.net/projects/pgbadger/
Commandes pour l’installation
$ tar -xzf pgbadger-3.x.tar.gz
$ cd pgbadger-3.x/
$ perl Makefile.PL
$ make && make install
2
4. Activation des logs dans PostgreSQL
Commande pour trouver ou se trouve le fichier postgresql.conf
$ psql dbname -c ‘SHOW config_file’ | grep ‘.conf’
Activation des logs avec une durée minimale en milliseconde (0 : tout, -1 : désactiver)
log_min_duration_statement = 2
log_destination = ‘stderr’
Choix du répertoire pour les logs
log_directory = ‘pg_log’
Noms des fichiers de log
log_filename = ‘postgresql-%Y-%m-%d.log’
3
5. Activation des logs dans PostgreSQL
Eviter d’écraser les logs en cas de redémarrage de la db
log_truncate_on_rotation = off
Format minimum pour les logs
log_line_prefix = ‘%t [%p]: [%l-1] ‘
Rotation des logs
log_rotation_age = 1d
log_rotation_size = 10MB
Redémarrage de PostgreSQL
$ pg_ctl stop
waiting for server to shut down.... done
server stopped
$ pg_ctl start
server starting
4
6. Activation des logs dans PostgreSQL
Exemple de log PostgreSQL
2013-02-22 17:21:14 CET [95200]: [81-1] LOG: duration: 60.945 ms statement: SELECT count(1) AS
count_1
FROM vacationvt.list JOIN vacationvt.list_status_view ON vacationvt.list.id = vacationvt.list_
status_view.list_id
WHERE vacationvt.list.isvalid = true AND vacationvt.list.prestation_min_date >= ‘2012-04-01T00
:00:00’::timestamp AND vacationvt.list.prestation_max_date <= ‘2012-06-30T23:59:00’::timestamp AND
vacationvt.list.type = E’VISIT_PORCS’ AND vacationvt.list.list_type = E’FINAL’ AND vacationvt.list_
status_view.status IS NOT NULL AND vacationvt.list.vt_id = E’BE00005016’ AND vacationvt.list.
creation_date < ‘2012-07-27T10:01:52.549269’::timestamp
5
7. Analyse des logs
Exécution de l’analyse
pgbadger /opt/local/var/db/postgresql90/defaultdb/pg_log/postgresql-2013-02-22.log
-o 2013-02-22.html
6