Gérer ces processus/démons Python avec Supervisor

Date: 2/10/2013 | Catégories: Developpement,Open-source,Planet-libre | Tags: ,,,

C'est en lisant la document du projet 0Bin, une implémentation libre et auto-hébergé de PasteBin dont je reparlerai bientôt, que je suis tombé sur Supervisor. Supervisor est un système de contrôle de processus (comme launchd ou runinit) simple et orienté utilisateur (voir la documentation et les avantages ici) et donc idéal pour lancer des processus Python en mode démon (par un exemple un serveur Glances, mais ce n'est qu'un exemple...).

Installation de Supervisor

Sur un système Debian/Ubuntu, l'installation de Supervisor se résume à la saisie de la commande suivante dans un terminal:

sudo apt-get install supervisor

Une fois l'installation terminé, nous allons maintenant configurer Supervisor en utilisant le fichier /etc/supervisor/supervisord.conf (sur un système Debian).

Ajout d'un démon dans Supervisor

Nous allons donc prendre l'exemple d'un administrateur système qui souhaite que le serveur Glances soit lancé au démarrage de la machine et que celui ci soit redémarré automatiquement dans le cas ou Glances plante <mauvaisefois>ce qui n'arrive jamais</mauvaisefois>.

Pour lancer Glances en mode serveur, il faut utiliser la ligne de commande suivante:

/usr/local/bin/glances -s -C /etc/glances/glances.conf -P motdepasse

Il suffit donc d'ajouter la section suivante en fin du fichier  /etc/supervisor/supervisord.conf:

; Glances server section
[program:glances]
command=/usr/local/bin/glances -s -C /etc/glances/glances.conf -P motdepasse
user=nicolargo
autostart=true
autorestart=true

On demande a ce que le processus soit exécuté avec les droits d'un utilisateur standard (user=nicolargo dans mon exemple) et que le processus démarre automatiquement au démarrage de Supervisor (autostart=true) et qu'il soit bien redémarré si Supervisor détecte un problème sur le processus Glances.

Prendre en compte la configuration et administrer nos processus

Pour que notre configuration soit prise en compte, il faut relancer Supervisor avec les lignes de commandes:

sudo service supervisor stop
sudo service supervisor start

Normalement, à ce stade, votre processus Glances server doit être lancé. Pour le vérifier vous pouvez utiliser la commande supervisorctl qui permet d'avoir un statu des processus et un moyen simple de les arrêter / démarrer.

Vérification du statu du service Glances server:

$ sudo supervisorctl status
glances                          RUNNING    pid 5844, uptime 0:26:11

Je vous laisse regarder les autres commandes disponibles avec supervisorctl:

$ sudo supervisorctl help

default commands (type help <topic>):
=====================================
add    clear  fg        open  quit    remove  restart   start   stop  update 
avail  exit   maintail  pid   reload  reread  shutdown  status  tail  version

 

Partager ce billet