Supervisor
Wat is Supervisor en hoe kun je dit bij Hipex gebruiken?
Wat is supervisor
Supervisorctl is een tool waarmee je op de server je eigen processen kan beheren en monitoren. Iedere gebruiker heeft een eigen supervisorctl instantie waardoor iedere gebruiker zijn/haar eigen processen kan beheren zonder dat dit invloed heeft op de processen onder een andere gebruiker. Het grote voordeel van supervisorctl is dat je al je processen op 1 plek kan beheren.
Hoe kan ik supervisor bij Hipex gebruiken?
Bij Hipex kan je op alle betreffende hostingpakketten gebruik maken van supervisor. In onderstaande stappen leggen we je uit hoe je zelf een proces kan draaien via supervisor. In dit voorbeeld gaan we zelf een Redis proces draaien.
De mappenstructuur
Voordat we beginnen is het van belang dat we eerst de mappenstructuur van de inrichting bij Hipex in kaart brengen. De locatie van supervisor is bij ieder pakket /home/<gebruikersnaam>/supervisor
. Onderstaande afbeelding weerspiegeld de onderliggende mappenstuctuur.
Onderstaand een toelichting van de betreffende mappenstructuur:
/home/<gebruikersnaam>/supervisor
└── log
├── supervisor.d
├── supervisor.pid
└── supervisor.sock
log:
In deze directory bevinden zich alle log files van supervisor.
supervisor.d
In deze directory bevinden zich alle proces configuraties. Wanneer je een proces wilt draaien middels supervisor, plaats je de betreffende configuratie in deze directory. Hoe je zo’n configuratie maakt beschrijven wij verderop in dit artikel.
supervisor.pid
Iedere supervisor instantie wordt ook als een proces gedraaid op de server. in het supervisor.pid is het Proces identificatie bestand van de betreffende supervisor instantie.
supervisor.sock
Dit is de Unix socket waar de supervisor instantie onder draait.
Het aanmaken van de (proces) configuratie
Nu de mappenstructuur is toegelicht kunnen we beginnen met het maken van de configuratie. Zoals vernoemd maken we in dit artikel een supervisor configuratie voor Redis.
Procesnaam:
Allereerst beginnen we met de naam van het proces, het zogenaamde ‘program’. De naam die je hieraan geeft zal je straks terugzien in supervisor, dit wordt de naam van het proces.
In ons voorbeeld gaat het proces ‘redis-session’ heten:
[program:redis-session]
Command:
command=/usr/bin/redis-server /home/<gebruikersnaam>/redis/session.conf
Hoe het betreffende configuratiebestand eruit ziet lees je in dit artikel.
Uiteraard willen we vat houden op eventuele fouten welke optreden. Om dit te kunnen faciliteren geven we de locaties mee waar eventuele fouten naartoe geschreven mogen worden:
stdout_logfile:
Aan de stdout_logfile option kunnen we de locatie meegeven naar het bestand waar de ‘stdout’ output naar toe geschreven mag worden. stdout staat voor de standaard output stream van Linux. Linux zorgt ervoor dat fouten welke optreden hierheen worden geschreven.
stdout_logfile=/home/<gebruikersnaam>/supervisor/log/redis-session.log
stderr_logfile:
Aan de stderr_logfile option kunnen we de locatie meegeven naar het bestand waar de ‘stderr’ output naar toe geschreven mag worden. stderr staat voor de standaard error stream van Linux. Linux zorgt ervoor dat fouten welke optreden hierheen worden geschreven.
stderr_logfile=/home/<gebruikersnaam>/supervisor/log/redis-session.error.log
Als we alle bovenstaande configuraties samenvoegen komen we uit op het onderstaande configuratie bestand.
[program:redis-session]
command=/usr/bin/redis-server /home/<gebruikersnaam>/redis/session.conf
environment=HOME=/home/<gebruikersnaam>,PATH=/.bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
stdout_logfile=/home/<gebruikersnaam>/supervisor/log/redis-session.log
stderr_logfile=/home/<gebruikersnaam>/supervisor/log/redis-session.error.log
Het toevoegen van de configuratie
Nu we de configuratie hebben bepaald kunnen we het proces gaan toevoegen.
Hiervoor maken we een bestand aan op de locatie
/home/<gebruikersnaam>/supervisor/supervisor.d
Goed om te weten is dat supervisor bestanden inleest welke eindigen op de extensie “.conf”.
We geven ons configuratiebestand de naam redis-session.conf. Zet de betreffende configuratie in dit bestand en sla het bestand op.
Vervolgens voeren we het commando ‘supervisor’ uit:
supervisorctl
Voer hierna ‘reread’ uit, met reread laat je de Supervisor deamon zijn configuratie files reloaden:
supervisor> reread
redis-session: available
Als het goed is krijg je te zien dat het zojuist toegevoegde program beschikbaar is. Deze kunnen we vervolgens toevoegen met ‘add’:
supervisor> add redis-session
redis-session: added process group
Tot slot kunnen we de status opvragen met ‘status’:
supervisor> status redis-session
redis-session RUNNING pid 4581, uptime 0:00:01
We zien dat de instantie draait (status RUNNING).
Naast de genoemde reread, add en status acties zijn er nog veel andere beschikbaar, hiervoor verwijzen we je graag naar de documentatie van supervisor.
Conclusie
In dit artikel hebben we ons beperkt tot het maken van een basis supervisor configuratie. Voor alle configuratiemogelijkheden verwijzen we je graag naar de documentatie van supervisor.