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