Traqueur en tâche de fond

Les utilisateurs n'aiment ni interrompre leur travail ni regarder le sablier
Répondre
Phil
Administrateur du site
Messages : 291
Enregistré le : mar. 1 sept. 2015 00:38
Localisation : France
Contact :

Traqueur en tâche de fond

Message par Phil »

Merci à un utilisateur pour sa question : "comment faut-il faire fonctionner le traqueur pour faire des rapports avec grafana ?"

Réponse : il faut faire tourner le traqueur en tâche de fond, par exemple en l'intégrant avec systemd ou autre. Pour tester rapidement, un petit script lancé en nohup peut aussi être suffisant, exemple :

Code : Tout sélectionner

while (true) do
	/var/lib/postgresql/traqueur.sh -b U -p -g "Cluster de test" -j -d 1
	/var/lib/postgresql/traqueur.sh -m 10
done
Cela permet de garder une dizaine de jours de données de traque. Attention, l'option -j utilise le partitionnement natif (ou déclaratif) et ne fonctionne donc qu'avec PostgreSQL 10+
Cdlt. Phil - pgphil.ovh
Phil
Administrateur du site
Messages : 291
Enregistré le : mar. 1 sept. 2015 00:38
Localisation : France
Contact :

Traqueur en tâche de fond (systemd)

Message par Phil »

Merci à un administrateur système pour sa question :

"Je lis qu'il est possible d'intégrer le traqueur avec systemd. Pouvez-vous détailler ?"

Réponse :

Oui, j'ai modifié récemment le traqueur pour faciliter cette intégration. Il faut une version 3.4.2 ou supérieure du traqueur et une version 11 ou supérieure de PostgreSQL pour bénéficier de l'option -K permettant de configurer facilement l'arrêt via ExecStopPost. Je reporterai pour les versions 10 et inférieures de PostgreSQL si j'ai des demandes.
Voici un exemple de fichier de configuration :

Code : Tout sélectionner

 
cat /etc/systemd/traqueur@11-main.service 
 
[Unit]
Description=Traqueur PostgreSQL Cluster 11-main
After=postgresql@11-main.service
Requires=postgresql@11-main.service

[Service]
Type=simple
Restart=always
RestartSec=1
User=postgres
ExecStart=/opt/pgphil/traqueur.sh -c "-p 5432 -d traqueur" -m 10 -b U -j -p -u -g "main" -d 1
ExecStopPost=/opt/pgphil/traqueur.sh -c "-p 5432 -d traqueur" -K

[Install]
WantedBy=multi-user.target

Code : Tout sélectionner

systemctl status traqueur@11-main.service
● traqueur@11-main.service - Traqueur PostgreSQL Cluster 11-main
   Loaded: loaded (/etc/systemd/system/traqueur@11-main.service; disabled; vendor preset: enabled)
   Active: active (running) since Wed 2019-05-15 00:34:10 CEST; 32min ago
  Process: 7722 ExecStopPost=/opt/pgphil/traqueur.sh -c -p 5432 -d traqueur -K (code=exited, status=0/SUCCESS)
 Main PID: 7775 (traqueur.sh)
   CGroup: /system.slice/system-traqueur.slice/traqueur@11-main.service
           ├─7775 /bin/bash /opt/pgphil/traqueur.sh -c -p 5432 -d traqueur -m 10 -b U -j -p -u -g main -d 1
           └─7831 /usr/lib/postgresql/11/bin/psql -p 5432 -d traqueur -f /tmp/traqueur.7775 -v ON_ERROR_STOP=1 --quiet -X

mai 15 00:34:10 vps197701.ovh.net traqueur.sh[7775]: traqueur 3.04.03 - https://pgphil.ovh - performance tool for PostgreSQL 9.4 => 12
mai 15 00:34:10 vps197701.ovh.net traqueur.sh[7775]: INFORMATION, connected to dedicated database traqueur
mai 15 00:34:10 vps197701.ovh.net traqueur.sh[7775]: INFORMATION, PostgreSQL version : 110003
mai 15 00:34:10 vps197701.ovh.net traqueur.sh[7775]: INFORMATION, deleting data collected in batch mode ...
mai 15 00:34:10 vps197701.ovh.net traqueur.sh[7775]: SET
mai 15 00:34:10 vps197701.ovh.net traqueur.sh[7775]: START TRANSACTION
mai 15 00:34:10 vps197701.ovh.net traqueur.sh[7775]: DO
mai 15 00:34:10 vps197701.ovh.net traqueur.sh[7775]: COMMIT
mai 15 00:34:10 vps197701.ovh.net traqueur.sh[7775]: INFORMATION, sql preparation ...
mai 15 00:34:10 vps197701.ovh.net traqueur.sh[7775]: INFORMATION, sql execution ...

C'est un exemple à adapter dans votre contexte. Il est valable sur Debian Stretch ou Buster pour un cluster PostgreSQL 11 appelé main écoutant sur le port 5432. Les données sont stockées dans des tables partitionnées et unlogged d'une base traqueur pendant 10 jours. Prévoir environ 1Go pour la base traqueur mais cela dépend bien sûr de l'activité.
Cdlt. Phil - pgphil.ovh
Phil
Administrateur du site
Messages : 291
Enregistré le : mar. 1 sept. 2015 00:38
Localisation : France
Contact :

Traqueur en tâche de fond (dépendance entre services)

Message par Phil »

Merci à un administrateur système pour sa question :

"Le service du traqueur démarre bien au boot du serveur mais si le cluster est arrêté, par exemple sur une mise à jour mineure PostgreSQL, il ne redémarre pas automatiquement.
Exemple :
systemctl stop postgresql@11-main.service
systemctl start postgresql@11-main.service
Plus de traqueur actif..."


Réponse :
Si vous voulez que le service du traqueur démarre implicitement au démarrage du service du cluster, il faut modifier la directive "wantedby" au niveau du fichier de configuration du service du traqueur.

Code : Tout sélectionner

cat /etc/systemd/traqueur@11-main.service 

...
[Install]
WantedBy=postgresql@11-main.service
Cdlt. Phil - pgphil.ovh
Phil
Administrateur du site
Messages : 291
Enregistré le : mar. 1 sept. 2015 00:38
Localisation : France
Contact :

Traqueur en tâche de fond : WantedBy KO

Message par Phil »

Merci à un administrateur système pour sa question :

"WantedBy, ça ne marche pas...j'ai fait les opérations indiquées mais toujours pas de traqueur après un stop/start du service PostgreSQL.

systemctl stop postgresql@11-main.service
systemctl start postgresql@11-main.service
Plus de traqueur actif..."


Réponse :

Pouvez-vous vérifier qu'il existe un dossier /etc/systemd/system/postgresql@11-main.service.wants ?

Code : Tout sélectionner

root@serveur:/etc/systemd/system/postgresql@11-main.service.wants# ls -l
total 0
lrwxrwxrwx 1 root root 44 août   9 21:07 traqueur@11-main.service -> /etc/systemd/system/traqueur@11-main.service
Si ce n'est pas le cas, vous n'avez pas activé le service :

Code : Tout sélectionner

systemctl enable traqueur@11-main.service
Cdlt. Phil - pgphil.ovh
Répondre