Aller au contenu

pg_cluu

pgCluu est un outil de collecte de métriques de performances. Il génère un rapport HTML complet comprenant :

  • Des informations sur le système ;
  • Graphes de consommation des ressources CPU, RAM, I/O ;
  • Informations sur le cluster, graphes…

Il est développé par Gilles Darold. L’outil est disponible sur github à l’adresse : https://github.com/darold/pgcluu

Pour voir un exemple de rapport généré par pgCluu, vous pouvez consulter la page d’exemple sur le site du projet.

Installation

pgCluu s’articule autour de deux outils : pgcluu_collectd (collecte des métriques) et pgcluu (génération du rapport).

Note

Pré-requis :

  • Perl
  • Paquet sysstat : permet d’obtenir des métriques système (CPU, disque, RAM, réseau…)

Pour contrôler que ce dernier paquet est fonctionnel, testez le bon fonctionnement de sar et iostat :

$ sar 1 5
Linux 5.15.0-57-generic (pegase)        11/01/2023      _x86_64_        (4 CPU)

15:50:13        CPU     %user     %nice   %system   %iowait    %steal     %idle
15:50:14        all     30,30      0,00      8,84      0,25      0,00     60,61
15:50:15        all     17,53      0,00      7,90      0,00      0,00     74,57
15:50:16        all     23,29      0,00     11,65      0,25      0,00     64,81
15:50:17        all      8,86      0,00      3,54      0,00      0,00     87,59
15:50:18        all      7,46      0,00      2,57      0,26      0,00     89,72
Moyenne :      all     17,53      0,00      6,92      0,15      0,00     75,40

$ iostat 1  1
Linux 5.15.0-57-generic (pegase)        11/01/2023      _x86_64_        (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          30,05    0,22    8,48    0,18    0,00   61,06

Device             tps    kB_read/s    kB_wrtn/s    kB_dscd/s    kB_read    kB_wrtn    kB_dscd
dm-0             46,46       519,13      1251,96      1704,91  102697593  247667791  337273159
dm-1              8,12       228,23       183,46       119,11   45149494   36293628   23562364
dm-10             0,00         0,03         0,00         0,00       5302          0          0
dm-2             19,79        30,71        52,13         0,00    6075356   10313400          0

Il est possible d’installer pgcluu à partir des dépôts PGDG avec la commande suivante (sans la dépendance Apache qui ne sert que pour des rapports réguliers !) :

sudo dnf install --setopt=install_weak_deps=False pgcluu

ou

sudo apt-get install pgcluu

Pour installer la dernière version, si elle n’est pas présente dans les dépôts, il est possible de télécharger l’archive au format tar.gz présente sur le site https://github.com/darold/pgcluu/releases.

L’installation est alors classique :

tar xzf pgcluu-X.X.tar.gz
cd pgcluu-X.X/
perl Makefile.PL
make
sudo make install

À noter qu’il n’est pas nécessaire d’installer de paquets, les scripts pgcluu et pgcluu_collectd peuvent être utilisés directement depuis l’archive.

Collecte des métriques

Dans un premier temps il va falloir lancer pgcluu_collectd qui va collecter les différentes métriques. Cet outil dispose de nombreuses options. Pour obtenir le détail : ./pgcluu_collectd --help

Nous allons présenter les options principales :

  • -D, --daemonize : Permet de lancer la capture en tant que daemon. L’exécution du processus se fait en arrière-plan ;
  • -i, --interval=NUM : Intervalle en seconde entre chaque collecte (60 secondes par defaut) ;
  • -M, --max-size=SIZE : Cette option permet de limiter le volume de données collectée. Il peut devenir important suivant la fréquence de collecte, le nombre de bases et la durée de la collecte. Par exemple 2GB ou 2000MB ;
  • -k, --kill Stoppe la collecte.

Pour lancer la collecte, il faut spécifier le répertoire où seront stockées les mesures (le répertoire doit être créé au préalable).

Note

pgcluu doit pouvoir se connecter à la base, le plus simple est de le lancer sous le compte postgres, sinon il est possible d’utiliser un fichier .pgpass et spécifier les options connexion.

Voici un exemple de commande :

postgres$ ./pgcluu_collectd -v -D -i 60 /tmp/report
LOG: Detach from terminal with pid: 2610

Pour arrêter la collecte :

postgres$ ./pgcluu_collectd -k
OK: pgcluu_collectd exited with value 0

Voir aussi cette page pour configurer le service pgcluu_collectd.

Génération du rapport

Une fois les métriques collectée on peut lancer la génération du rapport avec pgcluu. Là encore, l’outil dispose de nombreuses options. Pour obtenir le détail : ./pgcluu --help

Il est possible de spécifier le répertoire de destination avec l’option -o. Voici un exemple de commande pour générer le rapport dans le répertoire /tmp/report/html/ (créé au préalable) :

./pgcluu  -o /tmp/report/html/ /tmp/report

Réaliser une capture ponctuelle

Il est possible de demander à pgCluu de se contenter de collecter ponctuellement toutes informations disponibles, sans tourner en arrière-plan ou chercher à mesurer l’activité. C’est particulièrement utile pour récupérer un récapitulatif de la configuration d’une instance et du serveur.

Pour cela, il suffit de lancer la commande suivante (avec un utilisateur qui peut se connecter à l’instance, par exemple postgres) :

pgcluu_collectd --capture

Les données seront écrites dans le fichier suivant : /tmp/pgcluu_capture.tgz

Un rapport peut ensuite être généré à partir du contenu de ce fichier en suivant la méthode décrite précédemment.