supervisord – hang on to your processes

Reading time: 3 – 4 minutes

supervisord logoSempre he estat un gran defensor del monit com a complement al sistema de control de serveis de Linux: rc.d scripts. Monit permet a través d’una interficie de gestió web controlar i delegar a usuaris sense coneixements de Linux el control bàsic dels serveis d’una màquina. Per tal de supervisar si un servei esta corrent es basa en el PID del procés i la seva existència, cosa que la veritat en molts casos és una mica pobre. Però té una gran capacitat de poder configurar accions en base a carregues de memòria, CPU, etc.

Supervisord és un software que en certa forma ens dona una solució integrada i força més eficient en alguns aspectes que no pas monit+rc.d, per exemple, la vigilància dels processos és molt més efectiva que no pas amb monit perquè aquests es llencen com a fills del supervisord. Això li permet al pare poder comprovar si realment el fill és viu o no. A més, quan un fill mor el pare ràpidament ho sap i pot reiniciar-lo si és això el que volem. Mentre que monit per fer això el que fa és un procés de polling cada x’s segons preguntant l’estat dels processos.

Monit disposa d’interficie web i control via CLI del sistema, al igual que supervisord. Malgrat monit mostra algunes informacions sobre càrrega del sistema que no és capaç de mostrar supervisord. Per altre banda supervisord al llençar els processos ell de forma nativa permet redirigir les sortides d’aquests (stdout, stderr, etc).

Fora d’aquestes petites avantatges que he comentat fins ara de monit sobre supervisord, per la resta de coses podriem dir que supervisord li dona mil voltes a monit, començant pel concepte. Així doncs, a partir d’ara en l’article em centraré en explicar les funcionalitats que té sense comprar-les:

  • http server gestió dels processos via web
  • supervisorctl gestió via CLI, és una interficie interactiva de gestió no la propia CLI del sistema.
  • program permet parametritzar el llençament i control d’un servei amb directori de treball, umask, prioritat, autostart, autorestart, retries, usuari, redirecció de les sortides estàndard i error cap a fitxers de configuració, variables d’entorn, etc.
  • group es poden agrupar els serveis per tal de tractar-los com a una unitat.
  • fcgi interface permet controlar grups de serveis llençats via FastCGI. Evitant que aquesta tasca la faci, per exemple, Apache i oferint una gestió de concurrència molt més eficient.
  • events es defineixen un conjunt d’events a partir dels quals podem definir una serie d’scripts per capturar-los i donar un tractament del mateix de forma controlada. Per exemple, l’estat d’un procés canvia i volem que quan això passi es reinici el mateix procés.
  • rpcinterface també disposa d’una interficie XML-RPC a través de la qual podem connectar-hi aplicacions de tercers. Per exemple, una aplicació pot connectar via RPC per saber si un servei esta funcionant.

Properament he de fer la migració d’uns sistemes, així doncs, si no hi ha cap novetat usaré supervisord per controlar HAProxy, keepalived, entre d’altres moltes eines. Espero poder-ho anar documentant poc a poc.

Últimas entradas

Archivo
Scroll to Top