Installazione e configurazione del supervisore su Ubuntu 16.04

Supervisor è un sistema client / server utilizzato per controllare una serie di processi UNIX, in particolare processi relativi a un progetto o un cliente. Ad esempio, è possibile utilizzare il supervisore per generare e monitorare un numero arbitrario di code di lavoro dell'applicazione Web.

I componenti di questo sistema sono:

  • supervisord: il pezzo server del sistema.
  • supervisorctl: l'interfaccia della riga di comando utilizzata per interagire con il server.
  • Server Web: un semplice server Web e un'interfaccia utente Web con funzionalità di base rispetto a supervisore .
  • Interfaccia XML-RPC: lo stesso server HTTP utilizzato dal client Web, serve un'interfaccia XML-RPC che può essere utilizzata per controllare i programmi di supervisione.

In questo tutorial installeremo la versione più aggiornata del supervisore, dimostreremo come generare e gestire i programmi supervisorctle come configurare un'interfaccia web per gestire i nostri programmi.

Installazione e configurazione di base

Installeremo supervisore tramite easy_install, una funzione degli strumenti di installazione di Python.

Innanzitutto, aggiorna l'elenco dei pacchetti locali e quindi installa Python setuptools.

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

Ora possiamo installare il supervisore.

sudo easy_install supervisor

Una volta completata l'installazione, dobbiamo generare il nostro file di configurazione. Crea una cartella denominata supervisorall'interno /etc.

sudo mkdir /etc/supervisor

E quindi eseguire quanto segue.

echo_supervisord_conf >  /etc/supervisor/supervisord.conf

Se non hai effettuato l'accesso con l' rootutente, potresti ricevere un Permission deniederrore (anche con sudo). Ciò è dovuto al reindirizzamento. Per ovviare a questo, accedi come root.

sudo su

Quindi è possibile eseguire nuovamente il comando.

echo_supervisord_conf > /etc/supervisor/supervisord.conf

Ora puoi lasciare l' rootutente con il exitcomando. Il echo_supervisord_confcomando è stato fornito dalla nostra installazione del supervisore.

Configurazione di base

Apri il /etc/supervisor/supervisord.conffile e controlla il suo contenuto. Noterai che questo file di configurazione segue la INIsintassi ed è diviso per sezioni (rappresentata da parentesi come in [section-name]).

Per aggiungere programmi che devono essere gestiti dal supervisore, dobbiamo solo creare le [program]sezioni appropriate . Tuttavia, per evitare di incasinare il file di configurazione principale ogni volta che è necessario aggiungere (o modificare) un programma, utilizzeremo la [include]sezione. Trova questa sezione, decommentala e poi modificala per assomigliare alla seguente.

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

Ora per ogni programma che vogliamo aggiungere, creeremo un .inifile all'interno della /etc/supervisor/conf.d/directory. Consente di creare questa cartella.

sudo mkdir /etc/supervisor/conf.d

Avvio del server supervisore

Come notato prima, il supervisore è composto da un server e client che si connettono ad esso. Per poter gestire e controllare i programmi, è necessario avviare il server. Per fare ciò, registreremo il server supervisore systemd, in modo che il server possa essere avviato all'avvio del sistema.

Per fare ciò, crea un file chiamato supervisord.servicenella /etc/systemd/systemdirectory.

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

Aggiungi i seguenti contenuti al file.

[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

Attiva il servizio supervisord.

sudo systemctl start supervisord.service

Finché il file di servizio si trova nella /etc/systemd/systemdirectory, verrà avviato automaticamente all'avvio del sistema.

Puoi controllare lo stato del servizio.

systemctl status supervisord.service

Inoltre, puoi controllare i registri.

sudo journalctl -u supervisord.service

Aggiunta di programmi

I programmi controllati dal supervisore sono forniti da diverse [program]sezioni della configurazione. Per ogni programma che vogliamo gestire, creeremo un file di configurazione autonomo che informa il percorso eseguibile del comando, eventuali variabili ambientali, come eseguire in caso di arresto.

Innanzitutto, creiamo un semplice script che registra un timestamp. Crea un file chiamato hello_supervisor.sh(ovunque tu voglia, faremo riferimento al percorso completo di questo script).

touch hello_supervisor.sh

Ora inserisci i seguenti contenuti

#!/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

Ora rendilo eseguibile

chmod +x hello_supervisor.sh

In termini pratici questa sceneggiatura è praticamente inutile. Tuttavia, possiamo usarlo per dimostrare il potere del supervisore. Creare il file di configurazione corrispondente eseguendo quanto segue.

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

Ora inserisci i seguenti contenuti in questo file.

[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

Nota: assicurati di sostituire USERcon il tuo nome utente.

Esamineremo questa configurazione passo dopo passo.

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

Innanzitutto, la configurazione inizia definendo un programma di nome hello_supervisor . Informa inoltre l'intero percorso dell'eseguibile da eseguire.

autostart=true

Questa riga afferma che questo programma dovrebbe essere avviato automaticamente all'avvio del supervisore.

autorestart=true

Se il programma viene chiuso, per qualsiasi motivo, questa riga informa il supervisore di riavviare automaticamente il processo.

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

Queste righe definiscono la posizione del file di registro per stderre stdout, rispettivamente.

Gestione dei programmi

Ora che abbiamo installato e configurato il supervisore, siamo in grado di gestire i nostri processi.

Dopo aver aggiunto un nuovo programma, dovremmo eseguire i seguenti due comandi, per informare il server di rileggere i file di configurazione e applicare eventuali modifiche.

sudo supervisorctl reread
sudo supervisorctl update

Ora esegui il supervisorctlclient.

sudo supervisorctl

Sarai accolto con un elenco dei processi registrati. Vedrai un processo chiamato hello_supervisorcon uno RUNNINGstato.

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

Digitare helpper un elenco di comandi disponibili.

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

In poche parole, possiamo start, stope restartprogrammi facendo passare il nome del programma come argomento al rispettivo comando.

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> 

Possiamo anche dare un'occhiata all'output del programma con il tailcomando.

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

Per l' stderroutput, puoi anche usare 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!

Invocando il statuscomando, è possibile visualizzare lo stato di tutti i programmi registrati.

Una volta finito, puoi smettere.

supervisor> quit

Il client del server web

Per consentire l'accesso al server web supervisord, aprire il file di configurazione supervisord e individuare la [inet_http_server]sezione.

nano /etc/supervisor/supervisord.conf

Ora aggiorna la configurazione di questa sezione con quanto segue.

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

Sostituisci your_usernamee your_passwordcon le credenziali desiderate, salva le modifiche e riavvia il servizio supervisord.

sudo systemctl restart supervisord.service

Ricorda di consentire l' TCPaccesso alla porta 9001sul tuo firewall e quindi l'accesso http://{server-ip}:9001dal tuo browser. Quando richiesto, fornire il proprio usernamee password. Ora puoi controllare i tuoi processi dal web.

Conclusione

Abbiamo installato la versione più aggiornata di supervisord, imparato come configurarlo per l'avvio automatico del sistema con systemd e anche rivisto un utilizzo di base di supervisorctl. Per configurazioni e casi d'uso più avanzati è possibile fare riferimento alla documentazione ufficiale del supervisord .



Leave a Comment

Lintelligenza artificiale può combattere con un numero crescente di attacchi ransomware?

Lintelligenza artificiale può combattere con un numero crescente di attacchi ransomware?

Gli attacchi ransomware sono in aumento, ma l'intelligenza artificiale può aiutare ad affrontare l'ultimo virus informatico? L'intelligenza artificiale è la risposta? Leggi qui sai è AI boone o bane

ReactOS: è questo il futuro di Windows?

ReactOS: è questo il futuro di Windows?

ReactOS, un sistema operativo open source e gratuito è qui con l'ultima versione. Può essere sufficiente alle esigenze degli utenti Windows moderni e abbattere Microsoft? Scopriamo di più su questo vecchio stile, ma un'esperienza del sistema operativo più recente.

Rimani connesso tramite lapp desktop WhatsApp 24*7

Rimani connesso tramite lapp desktop WhatsApp 24*7

Whatsapp ha finalmente lanciato l'app desktop per utenti Mac e Windows. Ora puoi accedere facilmente a Whatsapp da Windows o Mac. Disponibile per Windows 8+ e Mac OS 10.9+

In che modo lintelligenza artificiale può portare lautomazione dei processi al livello successivo?

In che modo lintelligenza artificiale può portare lautomazione dei processi al livello successivo?

Leggi questo per sapere come l'intelligenza artificiale sta diventando popolare tra le aziende di piccole dimensioni e come sta aumentando le probabilità di farle crescere e dare un vantaggio ai loro concorrenti.

Laggiornamento del supplemento macOS Catalina 10.15.4 sta causando più problemi che risolverli

Laggiornamento del supplemento macOS Catalina 10.15.4 sta causando più problemi che risolverli

Recentemente Apple ha rilasciato macOS Catalina 10.15.4 un aggiornamento supplementare per risolvere i problemi, ma sembra che l'aggiornamento stia causando più problemi che portano al bricking delle macchine mac. Leggi questo articolo per saperne di più

13 strumenti commerciali per lestrazione dei dati dai Big Data

13 strumenti commerciali per lestrazione dei dati dai Big Data

13 strumenti commerciali per l'estrazione dei dati dai Big Data

Che cosè un file system di journaling e come funziona?

Che cosè un file system di journaling e come funziona?

Il nostro computer memorizza tutti i dati in un modo organizzato noto come file system di journaling. È un metodo efficiente che consente al computer di cercare e visualizzare i file non appena si preme search.https://wethegeek.com/?p=94116&preview=true

Singolarità tecnologica: un lontano futuro della civiltà umana?

Singolarità tecnologica: un lontano futuro della civiltà umana?

Man mano che la scienza si evolve a un ritmo rapido, assumendo gran parte dei nostri sforzi, aumentano anche i rischi di sottoporci a una singolarità inspiegabile. Leggi, cosa potrebbe significare per noi la singolarità.

Uno sguardo a 26 tecniche di analisi dei Big Data: Parte 1

Uno sguardo a 26 tecniche di analisi dei Big Data: Parte 1

Uno sguardo a 26 tecniche di analisi dei Big Data: Parte 1

Limpatto dellintelligenza artificiale nella sanità 2021

Limpatto dellintelligenza artificiale nella sanità 2021

L'intelligenza artificiale nell'assistenza sanitaria ha compiuto grandi passi avanti negli ultimi decenni. Pertanto, il futuro dell'IA in sanità continua a crescere giorno dopo giorno.