Postgresql slow queries

De BlaxWiki
Révision datée du 14 janvier 2020 à 14:18 par 127.0.0.1 (discussion) (Page créée avec « Ce script va parser le fichier de log de slow queries, puis l exporter en csv suivant des critères <pre> #!/bin/bash date="$(date '+%Y%m%d')" sortie="/opt/agarik/script... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigationAller à la recherche

Ce script va parser le fichier de log de slow queries, puis l exporter en csv suivant des critères

#!/bin/bash

date="$(date '+%Y%m%d')"
sortie="/opt/agarik/scripts/slow_queries/slow_queries_${date}.csv"
rep_logs='/opt/applis/postgresql/data/pg_log'
nb_jours='10' # X derniers jours a analyser
duree_min='60' #duree minnimal d'une requete a loguer en secondes
heure_min='7'
heure_max='20'
jds_min='1' # jour de la semaine minimum (1=lundi)
jds_max='5' # jour de la semaine maximum (1=lundi)

cd "${rep_logs}"
echo 'duree;date;heure;ip;utilisateur;bdd;requete' > "${sortie}"
ls -t postgresql-*.log | head "-${nb_jours}" | while read fichier; do
        date="$(date -d"$(head -1 "${fichier}" | awk '{print $1}')" '+%u')"
        if [ "${date}" -ge "${jds_min}" -a "${date}" -le "${jds_max}" ]; then
                grep -E 'LOG:  duration: [0-9]+\..*ms  execute' "${fichier}" | \
                sed -r 's/^([0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]) ([0-9][0-9]:[0-9][0-9]:[0-9][0-9]) CET \[[0-9]*\]: \[[-0-9]*\] user=([^ ]*),db=([^ ]*),app=[^,]*,client=([^ ]*) LOG:[[:space:]]+duration:[[:space:]]+([\.0-9]*) ms[[:space:]]+execute[[:space:]]+[^ ]+[[:space:]]+(.*)/\6;\1;\2;\5;\3;\4;\7/g' | \
                grep -v '; COMMIT$' | awk -F';' 'BEGIN {OFS = FS}$1 /= 1000' | awk -F';' 'BEGIN {OFS = FS}$1>'"${duree_min}" | awk -F';' 'BEGIN {OFS = FS}split($3,c,":") && c[1]>='"${heure_min}"' && c[1]<'"${heure_max}"
        fi
done | sort -nr >> "${sortie}"
rm -f "${sortie}.gz"
gzip -9 "${sortie}"
echo "Liste des requetes de plus de ${duree_min} ms des ${nb_jours} derniers jours." | sendmail -t vincent.quenel@agarik.com -m "Rapport slow queries ${date}" -a "${sortie}.gz"