Script pour Pgfouine

Pgfouine est un outil permettant de comprendre le comportement de PostgreSQL.

On distingue deux tâches :

  • Analyse des traces d'activités
  • Analyse du rapport du nettoyage des tables

Ces taches peuvent être automatisées pour générer des fichiers HTML, par exemple tous les jours avec un planificateur de tache comme crontab.

Le script suivant extrait la liste des bases de données d'un serveur, et lance le nettoyage et les analyses pour chacune de ces bases de données, et termine par une analyse globale des traces d'activités.

pgfouine.sh

#!/bin/sh 

PGUSER=postgres

# Emplacement des fichiers générés
PGFOUINESPOOL=/var/www/pgfouine

# Bases de données à ignorer 
EXCLUDEDBS="postgres template0 template1"

# Bases de données du serveur 
DBS=`psql -A -l -t -U $PGUSER | awk -F"|" '{ print $1 }'`

# Chemin du fichier de traces d'activités
PGLOG=/var/log/postgresql.log 

# Retire les bases de données "systèmes"
for ex in $EXCLUDEDBS 
do
  DBS=`echo $DBS | sed s/$ex//` 
done

# Boucle sur les bases de données
for db in $DBS
do
 # Crée le répertoire de spool
 spool=$PGFOUINESPOOL/$db/ 
 if [ ! -d $spool ]
 then
   mkdir -p $spool 
 fi

 # Nettoyage complet et analyse de la base de données  
 vacuumdb -U postgres -z -f -v $db > $spool/vacuum.log 2>&1

 # Analyse des message de nettoyage et d'analyse 
 pgfouine_vacuum -file $spool/vacuum.log > $spool/vacuum.html

 # Analysee des traces d'activités de la base
 pgfouine -file $PGLOG -database $db -format html-with-graphs -report $PGFOUINESPOOL/$db/pgfouine_report.html=overall,bytype,hourly,slowest,n-mosttime,n-mostfrequent,n-slowestaverage,n-mostfrequenterrors 

done

# Analyse du fichier de logs 
#pgfouine -file $PGLOG -format html > $PGFOUINESPOOL/pgfouine.html 

pgfouine -file $PGLOG -format html-with-graphs -report $PGFOUINESPOOL/pgfouine_report.html=overall,bytype,hourly,slowest,n-mosttime,n-mostfrequent,n-slowestaverage,n-mostfrequenterrors 

Haut de page