Monitoring door Monit voor Raspberry Pi en Domoticz
Nadat we Raspbian en Domoticz helemaal juist hebben geconfigureerd willen we er natuurlijk zeker van zijn dat de software 24/7 blijft draaien. Aangezien we aan de Raspberry geen monitor hebben aangesloten gaan we het programma Monit voor Raspberry Pi installeren en configureren. Monit monitort automatisch server programma’s en herstart ze indien nodig. Daarnaast kun je instellen dat je bepaalde meldingen via een email wilt ontvangen en de processen kun je bekijken/instellen va een web interface.
Het installeren van Monit gaat via onderstaande commando:
1 |
sudo apt-get install monit |
Wanneer Monit geïnstalleerd is kun je programma’s en processen toevoegen die gecontroleerd moeten worden. Deze programma’s en processen voeg je toe aan het Monit configuratie bestand. Monit is redelijk simpel te configureren. Standaard is Monit zo ingesteld, dat je elke 2 minuten de services controleert en wegschrijft in het log bestand “/var/log/monit.log”.
We gaan het configuratie-bestand van Monit aanpassen met het commando:
1 |
sudo nano /etc/monit/monitrc |
Pas de volgende parameters aan:
1 2 3 |
set daemon 300 -> Controleer services elke 300 seconden (5 minuten) with start delay 300 -> Start controleren van de services na 300 seconden (dit gaat zgn. bootloops tegen, als Domoticz nog niet gestart is, waardoor het tijd krijg om volledig te starten.) set logfile /var/log/monit.log -> Het is aan te raden om de locatie te wijzigen naar een gemounte pen drive of HDD. Of sla het op in een RAM-drive (dit i.v.m. behoud van de SD Kaart). |
Emailnotificatie’s
Je kunt Monit instellen om je per e-mail te informeren. Het is aan te raden om dit te doen, zodat je een goed overzicht behoud van de status van je systeem.
Gmail configuratie
1 2 3 4 5 6 |
set mailserver smtp.gmail.com port 587 username "yourmailaddress@gmail.com" password "MYPASSWORD" using tlsv1 with timeout 30 seconds set alert email@gmail.com If you use Gmail with 2-step verification, you first have to create an App password |
Outlook.com configuratie
1 2 3 4 5 |
set mailserver smtp-mail.outlook.com port 587 username yourmailaddress@outlook.com password MYPASSWORD using ssl set alert youremailaddess@outlook.com set mail-format { from: yourmailaddress@outlook.com } |
POP3 configuratie
1 2 3 4 |
set mailserver smtp.yourprovider.com port 25 with timeout 30 seconds set mail-format { from: email@provider.com } set alert email@provider.com |
Om te testen of Monit de email kan versturen geef je commando sudo monit reload
in, je zou dan een mail moeten ontvangen.
Webserver
Monit komt standaard met een eigen ingebouwde webserver, welke op poort 2812 draait. Om de webinterface te configureren, gaan we op zoek naar het deel dat begint met set httpd port 2812. Wanneer je bij dit onderdeel het commentaar weghaald, het juiste IP adres invult en een gebruiker met wachtwoord toevoegd, dan kan Monit al in gebruik genomen worden. Als je in het wachtwoord leestekens gebruikt kan dit problemen geven.
1 2 3 4 5 6 |
set httpd port 2812 use address 0.0.0.0 # only accept connection from localhost (comment to connect from other hosts) allow 0.0.0.0/0.0.0.0 # allow anybody to connect to the server and allow admin:monit # require user 'admin' with password 'monit', change if your system is accessible from internet allow 192.168.0.1/255.255.255.0 #This will only allow hosts coming from the local network (change x.x.x.1 to your own LAN IP-range). allow localhost #use in combination with local network to allow command line to work |
Zodra bovenstaande goed geconfigureerd is, moeten we Monit herstarten:
1 |
sudo service monit reload |
Als alles goed is gegaan, kan je naar de Monit web interface, door te gaan naar (vervang IP adres door het IP adres van de Raspberry Pi). Geef vervolgens de geconfigureerde gebruikersnaam en wachtwoord in.
1 |
http://192.168.x.x:2812 |
Je scherm zal er nu ongeveer zo uitzien:
Monitoren van Domoticz
Zodra de web services gereed zijn kunnen we Domoticz gaan toevoegen aan de configuratie, zodat de status van Domoticz in de monitoring meeloopt. Hiervoor moeten we het configuratiebestand weer aanpassen:
sudo nano /etc/monit/monitrc
Om bijvoorbeeld te zorgen dat Domoticz blijft werken, kun je gebruik maken van /etc/init.d commando’s om Domoticz te stoppen en/of starten. Onderstaande is een voorbeeld configuratie, dat je aan /etc/monit/monitrc kunt toevoegen. Doe dit voor de ## Includes.
1 2 3 4 5 6 7 8 9 10 11 |
## Domoticz check process domoticz with pidfile /var/run/domoticz.pid start program = "/etc/init.d/domoticz.sh start" stop program = "/etc/init.d/domoticz.sh stop" if failed url http://127.0.0.1:8080/json.htm?type=command¶m=getversion and content = '"status" : "OK"' for 2 cycles then restart if 5 restarts within 5 cycles then exec "/sbin/reboot" if cpu usage > 70% for 3 cycles then restart |
Wanneer je het bestand hebt opgeslagen gaan we controleren of we de juiste syntax hebben gebruikt:
1 |
sudo monit -t |
Als er geen problemen zijn (of de mogelijke fouten verbeterd zijn) dan kan je Monit starten zodat alle geconfigureerde programma’s gemonitord worden.
1 2 |
sudo monit reload sudo monit start all |
Monit op de achtergrond draaien als service:
1 |
sudo service monit start |
Om de status van Monit te bekijken geef dan onderstaande commando:
1 |
sudo monit status |
Dit laat ons onderstaande details zien:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
pi@raspberrypi:~ $ sudo monit status The Monit daemon 5.9 uptime: 20m Process 'domoticz' Running monitoring status Monitored pid 662 parent pid 1 uid 0 effective uid 0 gid 0 uptime 9d 4h 15m children 0 memory kilobytes 54.1 MB memory kilobytes total 54.1 MB memory percent 5.5% memory percent total 5.5% cpu percent 0.2% cpu percent total 0.2% port response time 0.003s to 127.0.0.1:8088/json.htm?type=command¶m=getversion [HTTP via TCP] data collected Fri, 31 Mar 2017 17:25:57 System 'raspberrypi' Running monitoring status Monitored load average [0.22] [0.22] [0.19] cpu 0.9%us 0.4%sy 0.0%wa memory usage 137.0 MB [14.0%] swap usage 0.0 B [0.0%] data collected Fri, 31 Mar 2017 17:25:57 pi@raspberrypi:~ $ |
Wanneer alle bovenstaande stappen zijn uitgevoerd, zal zowel de Raspberry Pi als ook Domoticz gemonitord worden en de processen automatisch herstart worden indien dit nodig is.
Pingback: Monitor domoticz – Blogs Created by Daag van der Meer
Hallo,
Dank voor alle moeite die je in website stopt om ons allemaal wat te leren over Domotica!
Deze website heb ik inmiddels herhaaldelijk geraadpleegd.
Monit heb ik nu draaien op mijn RPi 3 en nu zou ik graag ” Homebridge” er mee willen monitoren.
Is dit een goed idee of kan dit ook handiger?
Met vriendelijke groet,
Jeroen
Hallo Joost,
Met veel interesse je website aan het lezen.
Veel onderwerpen al gebruikt voor mijn eigen Domoticz die draait op een Raspberry Pi3.
Heb nu de door jou aangegeven service Monit geĂŻnstalleerd om de server constant te laten draaien.
Heb een vraagje, hoe gaat het wegschrijven van de Monit logs nu in combinatie met de acties die ik heb uitgevoerd op advies van jou stuk over het voorkomen van een corrupte micro sd?
Worden de monit logs hier automatisch in opgenomen of moet de volgende parameter worden aangepast: logfile /var/log/monit.log
Daarnaast wil ik ook Fail2Ban installeren om zodoende mijn Domoticz server te beschermen.
In de beschrijving voor die installatie heb je aangeven dat bij #DAEMON_ARGS=”$DAEMON_ARGS -log /tmp/domoticz.txt” de # weg moet.
Echter in de beschrijving in het stuk over het voorkomen van van een corrupte sd card staat dat #DAEMON_ARGS=”$DAEMON_ARGS -log /tmp/domoticz.txt” moet worden veranderd in DAEMON_ARGS=”$DAEMON_ARGS -log /tmp/log/domoticz.log -loglevel=normal”.
Kunnen deze twee instructies wel worden gecombineerd?
Bedankt voor al je nuttige info en hopelijk heb je de tijd om mijn vragen te beantwoorden.
Mvrg Harald
Ze kunnen wel gecombineerd worden, maar je moet dan bij beiden .log Ăłf .txt gebruiken.
Joost,
Ook deze werkend gekregen, super.
Bedankt voor de info.
Klein foutje in een van de codes:
In de Domoticz monitor code moet
http://127.0.0.1:8080/json.htm?type=command¶m=getversion
zijn:
http://127.0.0.1:8080/json.htm?type=command¶m=getversion
Mvrg Harald
Is er ook een beschrijving ergens van Monit met Home Assistant?
Joost…
Bedankt voor je prachtige tut…
Alleen restart domoticz niet, maar wacht hij tot 5x niet gerestart en dan gaat er een reboot.
Mss een oplosssig hier voor?
Er wordt 5x geprobeerd om Domoticz te restarten en als dat niet lukt volgt er een reboot.
Ik kan helaas niet zien waarom Domoticz bij jou niet restart.
Ik krijg een syntax error in:
if cpu usage > 70% for 3 cycles then restart
blijkbaar is > niet correct?
if cpu usage > 70% werkt ook niet.
Iemand een idee wat de juiste syntax is
GoĂ©d lezen, bĂ©Ă©tje puzzlen en nadenken, mĂĄĂĄr gelukt! (zet je âmoederâ config file veilig zodat als âhet in de soep looptâ je opnieuw kan beginnen. Hartelijk dank voor deze mooie uitleg!
M.s.s. nog enkele tips voor anderen:
je username bij Gmail werkt bij mij zonder de @gmail.com toevoeging, vul achter âset alertâ je volledige em adres in.
Set webserver:
set httpd port 2812 and
use address 192.168.xx.xx # vul hier je domitcz IP adres in
allow 192.168.178.xx.xx/255.255.255.0 # allow localhost to connect to the server and allow admin:monit # require user âadminâ with password âmonitâ => vervang admin: monit door je zelf gekozen gebruikersnaam en ww.
Beste,
Ik krijg de E-mail melding niet voor elkaar, ten einde raad maar vragen om hulp.
Mijn setting is:
set mailserver smtp.ziggo.nl port 587
username âmijnnaam@upcmail.nlâ password âmijn wachtwoordâ
using tls
with timeout 30 seconds
set alert mijnnaam@upcmail.nl
De POP poort bij Ziggo is geen 25 maar 587, de username is het volledige e-mail adres.
Bovenstaande inloggegevens functioneren al jaren in Outlook.
na het commando âsudo monit -tâ krijg ik een OK.
na het commando âsudo monit reloadâ krijg ik geen foutmelding noch een E-mail
Verder werkt het als verwacht op twee Raspberryâs.
Ondertussen is het (trial and error) opgelost en werkt de e-mail.
Is het mogelijk om domoticz op een andere raspberry pi (zelfde netwerk) te monitoren en wat is de aanpassing die daarvoor nodig is