/
Pack Hosting Panel

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.