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.

  • 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.