Iedere Domoticz gebruiker heeft er helaas wel eens last van: het Domoticz proces is gecrasht. Je hebt geen idee waarom, maar je wil gewoon dat Domoticz weer draait zodat je niet in het donker komt te zitten, of meterstanden kwijtraakt van je slimme meter. We gaan Monit inzetten om het domoticz proces in de gaten te houden, en wanneer het stopt, opnieuw te starten.
Domoticz automatisch opnieuw starten
De oplossing van bovenstaand probleem is natuurlijk zorgen dat Domoticz niet crasht. Je wilt je smarthome systeem natuurlijk zo snel en stabiel als mogelijk laten reageren. Voordat je een script gaat maken dat domoticz automatisch start na een crash, check eerst even het volgende:
- Misschien gebruik je een combinatie van hardware die elkaar in de weg zit.
- Heb je erg veel scripts draaien, of blijven die alsmaar ‘loopen’?
- Als je met een Raspberry Pi werkt, is je SD-kaartje nog OK?
- Is je log bestand heel erg groot geworden?
Het is namelijk niet normaal dat domoticz frequent crasht. Op moment van schrijven draait domoticz nu 28 dagen achter elkaar op mijn Synology NAS. Natuurlijk komt het bij mij ook wel eens voor dat domoticz onverwacht stopt. Zeker als je verlichting schakelt met domoticz is het niet fijn als domoticz ineens stopt met werken. Je zit dan in het donker, of de verlichting blijft ’s nachts branden. Zonde.
Monit gebruiken om domoticz draaiend te houden
Om domoticz automatisch weer te starten na een crash maak ik gebruik van Monit. Ik draai domoticz op mijn Synology NAS en gelukkig is er dankzij de Synocommunity ook een Monit package voor op Synology NASsen.
We gaan Monit inzetten om het domoticz proces in de gaten te houden. Wanneer Monit geen reactie krijgt van domoticz, probeert het domoticz opnieuw te starten. Op die manier heb je er geen omkijken meer naar.
- Log in op je NAS
Log in bij Disk Station Manager van je Synology NAS. Meestal te bereiken door het ip-adres in je browser in te typen gevolgd door het poortnummer.
- Open het DSM Package Center
Klik in het hoofdmenu op Package Center. Vanuit hier gaan we een nieuw Package installeren.
- Vertrouwensniveau
In het Package Center klik je op instellingen. Kies bij Vertrouwensniveau voor ‘Elke uitgever’. Dit doen we omdat we een onofficieel package willen toevoegen.
- Voeg de Synocommunity toe als repository
Onder het tabje ‘Pakketbronnen’ kun je extra repositories toevoegen. Klik op toevoegen en voer een naam in. Vul de url http://packages.synocommunity.com/ in bij locatie.
- Beschikbare pakketten bekijken
In het Package Center is er nu een nieuwe tab verschenen. Klik op de nieuwe tab ‘Gemeenschap’. Alle pakketten die nu verschijnen kun je installeren. Scroll naar beneden en installeer het pakket Monit. Staat Monit er alsnog niet tussen? Lees dan onder het stappenplan even verder.
- Maak het monitoringsbestand aan
Navigeer met Putty of WinSCP naar de Monit map. Deze kun je alleen bereiken als je genoeg rechten hebt en inlogt met SSH.
Navigeer naar “usr/local/monit/var/monit.d”. Maak hier een nieuw tekstbestand met de naam domoticz. Plak de code die onder het stappenplan staat in het bestand en sla het op. - Start Monit
Start nu Monit vanuit het Package center, of als het al gestart was, stop Monit en start het opnieuw. Nu zal het configuratiebestand laden. Navigeer in je browser naar het ip-adres van je NAS gevolgd door poortnummer 2812. Log in met admin/monit gebruikersnaam/wachtwoord combi.
- Test of Monit werkt
Klik op de regel domoticz. Hier zie je de statistieken van het proces domoticz. Klik op stop service om te testen of Monit het proces kan starten. Als domoticz gestopt lijkt, navigeer je in de browser naar je domoticz pagina. Deze zal dan een Niet gevonden pagina tonen. Klik in Monit nu op Start Service en domoticz zal weer gestart zijn. Nu weet je dat Monit domoticz automatisch kan starten.
Script code om domoticz opnieuw te starten
Onderstaande code kun je in het domoticz bestand plakken in de Monit map.
#check domoticz is running check process domoticz with pidfile /usr/local/domoticz/var/domoticz.pid start program = "/var/packages/domoticz/scripts/start-stop-status start" stop program = "/var/packages/domoticz/scripts/start-stop-status stop" if failed host localhost port 8084 then restart if 3 restarts within 5 cycles then timeout if memory > 110 MB then restart #done
Hoi Wouter,
Ik kreeg op het Dmooticz forum geen PM meer naar je verzonden, maar ik had je geschreven dat ik wel heel erg geinteresseerd was in een tutorial voor Monit en nu zag ik dat je die inmiddels hebt toegevoegd, waarvoor dank!
Dat maakt het een stuk duidelijker!
Helaas staat Monit niet bij mij bij de packages (ook niet na toevoegen van de genoemde bron) en als ik naar de architecture ga kijken, dan vind ik die ook weer niet terug bij de losse download van Monit….. Kan het dan zijn, dat er voor mijn Synology geen package is op dit moment?
Ik heb een DS218Play (rtd1296 (armv8))
Hoi Branko,
Je hebt gelijk. Ik zie ‘m ook niet staan.
Wellicht kun je dit nog proberen:
https://www.tumfatig.net/20180507/synology-dsm-monitoring-with-monit/
Groet Wouter
Hoi Wouter,
Ik had ondertussen van Monit support ook iets dergelijks als antwoord ontvangen.
Ik zal eens kijken of ik daar uit kom. Er wordt ook nog gesproken over zelf compilen, en hoewel dat geen onbekend begrip voor me is, moet ik er eens even in duiken.
Ik laat het je nog wel weten!
Dag Wouter,
Dank voor duidelijke uitleg. Installeren van package Monit lukt prima, maar…. het werkt niet. Permissies staan (ergens) verkeerd.
Via website (port 2812) > Monit, lijkt Monit te werken maar de start-stop-status opdrachten worden niet uitgevoerd. Met ‘stop’ blijft Domoticz gewoon draaien.
Als ik met telnet inlog (met Domoticz draaiend) en commando in de shell geef:
/var/packages/domoticz/scripts/start-stop-status stop
rm: cannot remove ‘/usr/local/domoticz/var/domoticz.pid’: Permission denied
Domoticz is not running
(Domoticz draait trouwens wel).
Met root permissie (sudo bash), kan ik Domoticz wel stoppen en opstarten via de shell:
bash-4.3# /var/packages/domoticz/scripts/start-stop-status stop
Stopping Domoticz …
bash-4.3#
bash-4.3# /var/packages/domoticz/scripts/start-stop-status start
Starting Domoticz …
insmod: ERROR: could not insert module /lib/modules/usbserial.ko: File exists
insmod: ERROR: could not insert module /lib/modules/ftdi_sio.ko: File exists
insmod: ERROR: could not insert module /usr/local/domoticz/modules/cp210x.ko: File exists
insmod: ERROR: could not insert module /usr/local/domoticz/modules/pl2303.ko: File exists
insmod: ERROR: could not insert module /usr/local/domoticz/modules/ch341.ko: File exists
insmod: ERROR: could not insert module /usr/local/domoticz/modules/ti_usb_3410_5052.ko: File exists
ln: failed to create symbolic link ‘/lib/udev/rules.d/60-synocommunity.domoticz.rules’: File exists
bash-4.3#
bash-4.3# /var/packages/domoticz/scripts/start-stop-status start
Domoticz is already running
Suggestie?
Groet, Rolf
Monit 5.29.0-10, Domoticz (Jadahl, 3.0.9483-7), DS212j, DSM 6.2.4
Hoi Rolf,
Goed dat je even reageert. Het lijkt inderdaad een rechten kwestie. Lukt het als je de rechten wijzigt van de bovenliggende map waar het domoticz.pid in staat? Ik kan mij niet heugen dat ik een rechten kwestie had…
Succes groet Wouter