home » search tags
Die Suche tag = supervisord ergab 1 Treffer:

Mai
4
Nicht jeder Dienst der auf einem System laufen soll verfügt über ein praktisches init-Script (oder man hat einfach keine Lust selbst eins zu erstellen).

Wie soll man seine Dienste dann aber starten, stoppen oder neu starten?

Hierfür bietet sich der in Python geschriebene supervisord an.

Supervisor is a client/server system that allows its users to monitor and control a number of processes on UNIX-like operating systems.

It shares some of the same goals of programs like launchd, daemontools, and runit. Unlike some of these programs, it is not meant to be run as a substitute for init as “process id 1”. Instead it is meant to be used to control processes related to a project or a customer, and is meant to start like any other program at boot time.

Installation

Die Installation gelingt einfach und schnell mittels

pip install supervisor



In diesem Beispiel gehe ich davon aus das alle Konfigurationsdateien die den Dienst supervisord betreffen unter /etc/supervisord/ und die der betreffenden Dienste unter /etc/supervisord/conf.d/ liegen.

mkdir -p /etc/supervisord/conf.d/



Nun kann man eine Basiskonfiguration erstellen

echo_supervisord_conf > /etc/supervisord/supervisord.conf



Um /etc/supervisord/conf.d/ zu aktivieren, muss am Ende der Datei /etc/supervisord/supervisord.conf folgender EIntrag hinzugefügt werden

[include]
files = /etc/supervisord/conf.d/*.ini



Nach dem starten von supervisord

supervisord -c /etc/supervisord/supervisord.conf



kann man nun auf das CLI zugreifen

supervisorctl



Die wichtigsten Funktionen sind

status => zeigt den Status der einzelnen Dienste
reread => liest die Konfigurationsdateien neu ein
update => aktualisiert den Dienst, falls Änderungen an der Konfiguration vorgenommen wurden.
exit => beendet die CLI

Dienst hinzufügen

Um z.B. elasticsearch mittels supervisord zu verwalten, muss zuerst eine passende Konfigurationsdatei unter /etc/supervisord/conf.d/ erstellen werden (z.B. elasticsearch.ini)

[program:elasticsearch]
autostart = false
environment=JAVA_HOME="/opt/java/",PATH="/usr/bin:/sbin:/bin:",HOME="/opt/elasticsearch/"
command=/opt/elasticsearch/bin/elasticsearch



Nach dem einlesen der Konfiguration mit

supervisorctl reread && supervisorctl update



kann der aktuelle Status mit:

supervisorctl status



abgefragt werden.

Ausgabe:

elasticsearch    STOPPED    Not started



Um den Dienst (in diesem Beispiel elasticsearch) zu starten genügt

supervisorctl start elasticsearch



Eine erneute Statusabfrage sollte nun

elasticsearch    RUNNING    pid 2538, uptime 0:00:03



ergeben.

Sonstiges

supervisord bietet darüber hinaus noch weiter Möglichkeiten der Konfiguration, so ist es z.B. möglich die Dienste über ein Webinterface zu nutzen oder eine Authentifizierung zu aktivieren.