Installation et configuration de Supervisor sur Ubuntu 16.04

Supervisor est un système client / serveur utilisé pour contrôler un certain nombre de processus UNIX, plus spécifiquement les processus liés à un projet ou à un client. Par exemple, vous pouvez utiliser le superviseur pour générer et surveiller un nombre arbitraire de files d'attente de travail de votre application Web.

Les composants de ce système sont:

  • supervisord: la partie serveur du système.
  • supervisorctl: l' interface de ligne de commande utilisée pour interagir avec le serveur.
  • Serveur Web: un serveur Web simple et une interface utilisateur Web avec des fonctionnalités de base par rapport à supervisorctl .
  • Interface XML-RPC: le même serveur HTTP utilisé par le client Web sert une interface XML-RPC qui peut être utilisée pour contrôler les programmes du superviseur.

Dans ce didacticiel, nous allons installer la version la plus récente du superviseur, montrer comment générer et gérer des programmes supervisorctlet configurer une interface Web pour gérer nos programmes.

Installation et configuration de base

Nous allons installer le superviseur via easy_install, une fonctionnalité des setuptools de python.

Tout d'abord, mettez à jour votre liste de packages locaux, puis installez python setuptools.

sudo apt-get update && sudo apt-get install python-setuptools

Maintenant, nous pouvons installer le superviseur.

sudo easy_install supervisor

Une fois l'installation terminée, nous devons générer notre fichier de configuration. Créez un dossier nommé à l' supervisorintérieur /etc.

sudo mkdir /etc/supervisor

Et puis exécutez ce qui suit.

echo_supervisord_conf >  /etc/supervisor/supervisord.conf

Si vous n'êtes pas connecté avec l' rootutilisateur, vous pouvez obtenir une Permission deniederreur (même avec sudo). Cela est dû à la redirection. Pour surmonter cela, connectez-vous en tant que root.

sudo su

Ensuite, vous pouvez réexécuter la commande.

echo_supervisord_conf > /etc/supervisor/supervisord.conf

Vous pouvez maintenant laisser l' rootutilisateur avec la exitcommande. La echo_supervisord_confcommande a été fournie par notre superviseur d'installation.

Configuration de base

Ouvrez le /etc/supervisor/supervisord.conffichier et vérifiez son contenu. Vous remarquerez que ce fichier de configuration suit la INIsyntaxe, et il est divisé par sections (représenté par des crochets comme dans [section-name]).

Pour ajouter des programmes à gérer par le superviseur, il suffit de créer les [program]sections appropriées . Cependant, pour éviter de déconner avec le fichier de configuration principal chaque fois que nous devons ajouter (ou modifier) ​​un programme, nous utiliserons la [include]section. Recherchez cette section, décommentez-la, puis modifiez-la pour qu'elle ressemble à ce qui suit.

[include]
files=conf.d/*.conf

Maintenant, pour chaque programme que nous voulons ajouter, nous allons créer un .inifichier dans le /etc/supervisor/conf.d/répertoire. Permet de créer ce dossier.

sudo mkdir /etc/supervisor/conf.d

Démarrage du serveur superviseur

Comme indiqué précédemment, le superviseur est composé d'un serveur et de clients qui s'y connectent. Pour pouvoir gérer et contrôler les programmes, nous devons démarrer le serveur. Pour ce faire, nous enregistrerons le serveur superviseur dans systemd, afin que le serveur puisse être démarré au démarrage du système.

Pour ce faire, créez un fichier appelé supervisord.servicedans le /etc/systemd/systemrépertoire.

sudo touch /etc/systemd/system/supervisord.service

Ajoutez le contenu suivant au fichier.

[Unit]
Description=Supervisor daemon
Documentation=http://supervisord.org
After=network.target

[Service]
ExecStart=/usr/local/bin/supervisord -n -c /etc/supervisor/supervisord.conf
ExecStop=/usr/local/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/local/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target
Alias=supervisord.service

Activez le service Supervord.

sudo systemctl start supervisord.service

Tant que le fichier de service se trouve dans le /etc/systemd/systemrépertoire, il sera automatiquement démarré au démarrage du système.

Vous pouvez vérifier l'état du service.

systemctl status supervisord.service

Vous pouvez également consulter les journaux.

sudo journalctl -u supervisord.service

Ajout de programmes

Les programmes contrôlés par le superviseur sont donnés par différentes [program]sections de la configuration. Pour chaque programme que nous voulons gérer, nous créerons un fichier de configuration autonome informant le chemin exécutable de la commande, toutes les variables d'environnement, comment exécuter en cas d'arrêt.

Tout d'abord, créons un script simple qui enregistre un horodatage. Créez un fichier appelé hello_supervisor.sh(partout où vous le souhaitez, nous référencerons le chemin complet de ce script).

touch hello_supervisor.sh

Maintenant, mettez-y le contenu suivant

#!/bin/bash
while true
do 
    # Echo current timestamp to stdout
    echo Hello Supervisor: `date`
    # Echo 'error!' to stderr
    echo An error ocurred at `date`! >&2
    sleep 1
done

Rendez-le maintenant exécutable

chmod +x hello_supervisor.sh

En termes pratiques, ce script est pratiquement inutile. Cependant, nous pouvons l'utiliser pour démontrer le pouvoir du superviseur. Créez le fichier de configuration correspondant en exécutant ce qui suit.

sudo touch /etc/supervisor/conf.d/hello_supervisor.conf

Maintenant, mettez le contenu suivant dans ce fichier.

[program:hello_supervisor]
command=/home/USER/hello_supervisor.sh
autostart=true
autorestart=true
stderr_logfile=/var/log/hello_supervisor.err.log
stdout_logfile=/var/log/hello_supervisor.out.log

Remarque: assurez-vous de remplacer USERpar votre nom d'utilisateur.

Nous allons revoir cette configuration étape par étape.

[program:hello_supervisor]
command=/home/USER/hello_supervisor.sh

Tout d'abord, la configuration commence par définir un programme de nom hello_supervisor . Il informe également le chemin complet de l'exécutable à exécuter.

autostart=true

Cette ligne indique que ce programme doit être démarré automatiquement au démarrage du superviseur.

autorestart=true

Si le programme se ferme, pour une raison quelconque, cette ligne informe le superviseur de redémarrer automatiquement le processus.

stderr_logfile=/var/log/hello_supervisor.err.log
stdout_logfile=/var/log/hello_supervisor.out.log

Ces lignes définissent l'emplacement du fichier journal pour stderret stdout, respectivement.

Gérer les programmes

Maintenant que nous avons installé et configuré le superviseur, nous sommes en mesure de gérer nos processus.

Après avoir ajouté un nouveau programme, nous devons exécuter les deux commandes suivantes, pour informer le serveur de relire les fichiers de configuration et d'appliquer les modifications.

sudo supervisorctl reread
sudo supervisorctl update

Exécutez maintenant le supervisorctlclient.

sudo supervisorctl

Vous serez accueilli avec une liste des processus enregistrés. Vous verrez un processus appelé hello_supervisoravec un RUNNINGstatut.

hello_supervisor                 RUNNING   pid 6853, uptime 0:22:30
supervisor>

Tapez helppour une liste de commandes disponibles.

supervisor> help

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

En un mot, nous pouvons start, stopet des restartprogrammes en passant le nom du programme comme argument à la commande respective.

supervisor> stop hello_supervisor 
hello_supervisor: stopped
supervisor> start hello_supervisor 
hello_supervisor: started
supervisor> restart hello_supervisor 
hello_supervisor: stopped
hello_supervisor: started
supervisor> 

Nous pouvons également jeter un œil à la sortie du programme avec la tailcommande.

supervisor> tail hello_supervisor 
Hello Supervisor: Mon Sep 25 19:27:29 UTC 2017
Hello Supervisor: Mon Sep 25 19:27:30 UTC 2017
Hello Supervisor: Mon Sep 25 19:27:31 UTC 2017

Pour la stderrsortie, vous pouvez également utiliser tail.

supervisor> tail hello_supervisor stderr
An error ocurred at Mon Sep 25 19:31:12 UTC 2017!
An error ocurred at Mon Sep 25 19:31:13 UTC 2017!
An error ocurred at Mon Sep 25 19:31:14 UTC 2017!

En appelant la statuscommande, vous pouvez afficher l'état de tous les programmes enregistrés.

Une fois que vous avez terminé, vous pouvez quitter.

supervisor> quit

Le client du serveur Web

Pour autoriser l'accès au serveur Web Supervisord, ouvrez le fichier de configuration Supervisord et recherchez la [inet_http_server]section.

nano /etc/supervisor/supervisord.conf

Maintenant, mettez à jour la configuration de cette section avec ce qui suit.

[inet_http_server]
port=*:9001
username=your_username
password=your_password

Remplacez your_usernameet your_passwordavec vos informations d'identification souhaitées, enregistrez vos modifications et redémarrez le service de supervision.

sudo systemctl restart supervisord.service

N'oubliez pas d'autoriser l' TCPaccès au port 9001de votre pare-feu, puis d'accéder à http://{server-ip}:9001partir de votre navigateur. Lorsqu'on vous le demande, fournissez votre usernameet password. Vous pouvez désormais contrôler vos processus à partir du Web.

Conclusion

Nous avons installé la version la plus récente de supervisord, appris à la configurer pour le démarrage automatique du système avec systemd et également examiné une utilisation de base de supervisorctl. Pour une configuration et des cas d'utilisation plus avancés, vous pouvez vous référer à la documentation officielle de Supervisord .



Leave a Comment

LIA peut-elle lutter contre un nombre croissant dattaques de ransomware

LIA peut-elle lutter contre un nombre croissant dattaques de ransomware

Les attaques de ransomware sont en augmentation, mais l'IA peut-elle aider à lutter contre le dernier virus informatique ? L'IA est-elle la réponse ? Lisez ici, sachez que l'IA est un boone ou un fléau

ReactOS : est-ce lavenir de Windows ?

ReactOS : est-ce lavenir de Windows ?

ReactOS, un système d'exploitation open source et gratuit est ici avec la dernière version. Cela peut-il suffire aux besoins des utilisateurs de Windows modernes et faire tomber Microsoft ? Découvrons-en plus sur cet ancien style, mais une expérience de système d'exploitation plus récente.

Restez connecté via lapplication de bureau WhatsApp 24 * 7

Restez connecté via lapplication de bureau WhatsApp 24 * 7

Whatsapp a finalement lancé l'application de bureau pour les utilisateurs Mac et Windows. Vous pouvez désormais accéder facilement à Whatsapp depuis Windows ou Mac. Disponible pour Windows 8+ et Mac OS 10.9+

Comment lIA peut-elle faire passer lautomatisation des processus au niveau supérieur ?

Comment lIA peut-elle faire passer lautomatisation des processus au niveau supérieur ?

Lisez ceci pour savoir comment l'intelligence artificielle devient populaire parmi les petites entreprises et comment elle augmente les probabilités de les faire grandir et de donner à leurs concurrents un avantage.

La mise à jour du supplément macOS Catalina 10.15.4 cause plus de problèmes quelle nen résout

La mise à jour du supplément macOS Catalina 10.15.4 cause plus de problèmes quelle nen résout

Récemment, Apple a publié macOS Catalina 10.15.4, une mise à jour supplémentaire pour résoudre les problèmes, mais il semble que la mise à jour cause davantage de problèmes, ce qui entraîne le bridage des machines mac. Lisez cet article pour en savoir plus

13 outils commerciaux dextraction de données de Big Data

13 outils commerciaux dextraction de données de Big Data

13 outils commerciaux d'extraction de données de Big Data

Quest-ce quun système de fichiers de journalisation et comment fonctionne-t-il ?

Quest-ce quun système de fichiers de journalisation et comment fonctionne-t-il ?

Notre ordinateur stocke toutes les données d'une manière organisée connue sous le nom de système de fichiers de journalisation. C'est une méthode efficace qui permet à l'ordinateur de rechercher et d'afficher des fichiers dès que vous appuyez sur la recherche.https://wethegeek.com/?p=94116&preview=true

Singularité technologique : un futur lointain de la civilisation humaine ?

Singularité technologique : un futur lointain de la civilisation humaine ?

Alors que la science évolue à un rythme rapide, prenant le pas sur une grande partie de nos efforts, les risques de nous soumettre à une Singularité inexplicable augmentent également. Lisez, ce que la singularité pourrait signifier pour nous.

Un aperçu de 26 techniques danalyse des mégadonnées : partie 1

Un aperçu de 26 techniques danalyse des mégadonnées : partie 1

Un aperçu de 26 techniques d'analyse des mégadonnées : partie 1

Limpact de lintelligence artificielle dans les soins de santé 2021

Limpact de lintelligence artificielle dans les soins de santé 2021

L'IA dans le domaine de la santé a fait de grands progrès au cours des dernières décennies. Ainsi, l'avenir de l'IA dans les soins de santé continue de croître de jour en jour.