Um mit monit Dienste innerhalb einer Jail über nur eine monit-Instanz zu monitoren und steuern, benötigt man ein Skript, das entsprechend innerhalb einer Jail Befehle ausführen kann. Grundsätzlich gibt es hierzu den Befehl "jexec", allerdings benötigt dieses die Jail-ID (kurz: JID). Da sich diese aber nach jedem Neustart einer Jail ändert, muss man auf den Prozess mit dem Namen der Jail zugreifen.
- Ein solches Skript kannst du hier herunterladen: jexec-wrapper.sh
- Die monit-Konfiguration muss an folgenden Stellen wie folgt angepasst werden:
check process lighttpd with pidfile /<Pfad-zur-Jail>/<Name-der-Jail>/var/run/lighttpd.pid
start program = "/bin/sh /usr/local/bin/jexec-wrapper.sh <Name-der-Jail> '/usr/local/etc/rc.d/lighttpd start' "
stop program = "/bin/sh /usr/local/bin/jexec-wrapper.sh <Name-der-Jail> '/usr/local/etc/rc.d/lighttpd stop' "
if failed host 10.0.0.2 port 80
protocol http then restart
if 5 restarts within 5 cycles then timeout
Beachte: Ich habe in diesem Beispiel den Wrapper unter "/usr/local/bin/" abgelegt. Achte darauf, dass der eigentliche Befehl "/usr/local/etc/rc.d/lighttpd start|stop" zusätzlich in Hochkommata (') steht. Nach einem Neustart sollte das ganze funktionieren.