Na pewno pomogło przeniesienie systemu Raspberry Pi na dysk HDD, ale dodatkowo można dołączyć sprawdzanie statusu Domoticz – u mnie są problemy z pluginami i czasem lubi nie wystartować.
Pomaga w tym 'monit’ – oprogramowanie, które dba o to, aby nasze procesy były uruchomione, a w razie ich nieprzewidzianego zatrzymania – pojawiły się ponownie. Opisywał to już Łukasz Jokiel na swoim blogu, ale od wiedzy jeszcze nikt nie umarł, dlatego pozwolę sobie opisać to i u siebie.
Na początku zaktualizujmy system:
sudo apt-get update
sudo apt-get upgrade
I zainstalujmy 'monit’
sudo apt-get install monit
Od razu po tym możemy przystąpić do zmian w domyślnym pliku konfiguracyjnym. Jest dość pokaźny, w większości opatrzony komentarzami przy przykładach.
sudo nano /etc/monit/monitrc
Dopiszmy sekcję (zamiast HASŁO podajecie hasło jakim chcecie się logować do monit’a w przeglądarce):
set httpd port 8890 and
use address localhost # only accept connection from localhost
allow localhost # allow localhost to connect to the server
allow admin:HASŁO # and require user 'admin’ with password 'monit’
use address 0.0.0.0 # only accept connection from localhost
allow 0.0.0.0/0.0.0.0
allow @monit # allow users of group 'monit’ to connect (rw)
allow @users readonly # allow users of group 'users’ to connect readonly
Wszyscy sugerują na końcu, więc dodajmy na końcu również:
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:80/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”
UWAGA – ostatnia linijka mówi o tym, że jeżeli 10 (2*5) razy nie powiedzie się uruchomienie Domoticz, to nastąpi restart Raspberry Pi – bądźcie świadomi! Do tego – zmieńcie port Domoticz na odpowiedni o Was (127.0.0.1 jest adresem hosta lokalnego) – u mnie jest to 80, domyślnym w Domoticz jest 8080 (dziękuję za sugestię).
Teraz
sudo systemctl enable monit.service
sudo systemctl restart monit.service
Sprawdzamy. Pierwsza komenda sprawdzi poprawność pliku konfiguracyjnego, druga poda pełen status.
sudo monit -t
sudo monit status
Wygląda na to, że działa. Teraz wystarczy
sudo service domoticz stop
i zobaczymy czy monit przywróci go do życia spoza grobu.
Taram! Bangla!
Strona przedstawia się następująco:
Ważne – wpisujecie adres swojego Raspberry, po nim port 8890 (lub taki, jaki ustawiliście w skrypcie konfiguracyjnym monitrc). Jeżeli macie konfiguracje rozproszone (Domoticz na innej maszynie, albo chcecie monitorować procesy na innych Raspberry) – musicie wpisać odpowienie adresy IP i porty.
I później:
Dla pewności, poniżej zawartość całego pliku:
set daemon 120
set logfile /var/log/monit.log
set idfile /var/lib/monit/id
set statefile /var/lib/monit/state
set eventqueue
basedir /var/lib/monit/events
slots 100
include /etc/monit/conf.d/*
set httpd port 8890 and
use address localhost
allow localhost
allow admin:xxxxxxxxxxxx
use address 0.0.0.0
allow 0.0.0.0/0.0.0.0
allow @monit
allow @users readonly
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:80/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”
Ten komentarz został usunięty przez autora.
Do /etc/monit/monitr dodaj c 😉
Oczywiście, bardzo dziękuję. Taki sam błąd popełniłem próbując i Copy-Paste zrobiło swoje. Poprawione.
Witam.
W url http://127.0.0.1:80/json.htm?type=command¶m=getversion zakładamy że system pracuje na porcie 80 ?
Może warto zmienić w tekście na domyślny 8080 albo doprecyzować. Dla początkujących będzie jaśniej.
Dziękuję za sugestię. Postaram się odpowiednio profilować artykuły. Do tej pory często po prostu opisywałem i zostawiałem użytkownikowi miejsce na eksperymenty.
Ten komentarz został usunięty przez autora.
Cześć,
Monit wykonuje swoje zadanie poprawnie – tj. po położeniu Domoticza, podnosi go na nowo. Pytanie mam następujące: monit ma opóźnienie w odświeżaniu informacji nt. statusu działania usługi Domoticza. Czy jest to w jakiś sposób sparametryzowane (czas opóźnienia odświeżania informacji)?
W sumie się nad tym nie zastanawiałem, ale czy nie będzie za to odpowiadał parametr 'set daemon 120 # check services at 2-minute intervals' w monitrc?
Dokładnie tak, set deamon przetestowany na różnych wartościach.
Kolejne pytanie: zauważyłem, że monit nie jest uruchamiany po restarcie Rpi3. Czy przy jego domyślenj konfiguracji jest to normalne zachowanie? Jeśli tak, to w jaki – bezpieczny – sposób, dodać uruchamianie monit do autostartu?
Mam ten sam problem na Rpi4. Domoticz wstaje ale Monit Web serwice już nie.
Cannot create socket to [0.0.0.0]:8890 — Connection refused
Hmmm. Powinien się uruchomić. Co mówi /var/log/monit.log?
Wpisy z loga:
[CET Feb 26 17:17:05] info : Starting Monit 5.20.0 daemon with http interface at [0.0.0.0]:8890
[CET Feb 26 17:17:05] info : 'raspberrypi' Monit 5.20.0 started
[CET Feb 26 17:17:05] error : HTTP server — Cannot translate IPv4 socket [0.0.0.0]:8890 — Name or service not known
[CET Feb 26 17:17:05] error : HTTP server — Cannot translate IPv6 socket [0.0.0.0]:8890 — Name or service not known
[CET Feb 26 17:17:05] error : 'domoticz' process is not running
[CET Feb 26 17:17:05] info : 'domoticz' trying to restart
[CET Feb 26 17:17:05] info : 'domoticz' start: '/etc/init.d/domoticz.sh start'
Po restarcie Rpi3, przy sprawdzaniu czy monit działał (sudo monit status), dostawałem w konsoli: HTTP server — Cannot translate IPv4 socket [0.0.0.0]:8890 — Name or service not known
Zastosowałem rozwiazane z wpisem w rc.local.
sudo nano /etc/rc.local
wiersz dodany do rc.local:
home/pi/scripts/runmonit.sh
zawartość runmonit.sh:
/usr/bin/sudo systemctl restart monit.service
Taka kombinacja spowodowała, że monit działa po restarcie Rpi3.
Nie wiem jednak czy jest to prawidłowe/bezpieczne rozwiązanie.
Świeży log, po zakomentowaniu rc.local i restarcie Rpi3.
[CET Feb 26 19:50:19] info : Starting Monit 5.20.0 daemon with http interface at [0.0.0.0]:8890
[CET Feb 26 19:50:19] info : 'raspberrypi' Monit 5.20.0 started
[CET Feb 26 19:50:19] error : HTTP server — Cannot translate IPv4 socket [0.0.0.0]:8890 — Name or service not known
[CET Feb 26 19:50:19] error : HTTP server — Cannot translate IPv6 socket [0.0.0.0]:8890 — Name or service not known
[CET Feb 26 19:50:19] error : 'domoticz' process is not running
[CET Feb 26 19:50:19] info : 'domoticz' trying to restart
[CET Feb 26 19:50:19] info : 'domoticz' start: '/etc/init.d/domoticz.sh start'
[CET Feb 26 19:52:29] info : 'domoticz' process is running with pid 479
Więc teoretycznie monit działa, czyż nie? A jednak, sprawdzenie czy monit działa po uruchomieniu Rpi3 (sudo monit status), daje dokładnie komunikat:
Cannot create socket to [0.0.0.0]:8890 — Connection refused
Dopiero po wpisaniu (sudo systemctl restart monit.service), po sprawdzeniu (sudo monit status), dostaję poprawny raport z działania usług, kóre monit monitoruje.
Cześć,
Czy dobrze rozumiem za wiki Domoticza, jeśli mamy narzucone hasło/uzytkownika na Domoticza (nawet połączenia lokalne), to komenda JSON powinna wyglądać następująco?
url http://user:password@IP_RASPBERRY:DOMOTICZ_PORT/json.htm?type=command¶m=getversion
A jak zrobić, aby Domoticz restartował się automatycznie codziennie np. o g.3.30 w nocy?
Domoticz czy całe Raspberry (jeżeli na nim masz postawiony system)? Tak czy siak – najlepiej wpis w crontab.
W sumie to sam Domoticz, bo często jakiś plugin etc przestaje działać i zazwyczaj restart Domoticza pomaga. Dlatego jakby go codziennie w nocy restartować to nawet jak w ciągu dnia coś "padnie" to na drugi dzień już będzie działało.
To trzeba wpisać w crontab aby o danej godzinie restartować Domoticza?
Na przykład: @hourly sudo sudo service domoticz restart
Ten komentarz został usunięty przez autora.
W przypadku instalacji programu "Monit", gdzie jest również "Domoticz" na Malince, na końcu pliku w /etc/monit/monitrc warto dodać jeszcze linijkę:
check system localhost
nawiązując do problemu "Monit service name error"
dokładnie tu:
https://stackoverflow.com/questions/8436555/monit-service-name-error
Problem ten pojawi się gdy naszego hosta (Malinkę) nazwiemy akurat "Domoticz".
Nie zaszkodzi a może pomóc.
Dzięki, przydało się !
Cześć,
Czy aby to zrobić to malina musi być podpięta do internetu po kablu, czy to nie ma znaczenia?
Niby zrobiłem wszystko tak jak jest w poradniku, a mam coś takiego:
pi@DOMOTICZ:~ $ sudo monit -t
'check system' not defined in control file, failed to add automatic configuration (service name DOMOTICZ is used already) — please add 'check system ' manually
/etc/monit/monitrc:25: Service name conflict, DOMOTICZ already defined '/sbin/reboot'
pi@DOMOTICZ:~ $ sudo monit status
'check system' not defined in control file, failed to add automatic configuration (service name DOMOTICZ is used already) — please add 'check system ' manually
/etc/monit/monitrc:25: Service name conflict, DOMOTICZ already defined '/sbin/reboot'
chodzi o nazwe hosta, trzeba zmienić z domoticz na jakąś inną
Witam. Swietny poradnik jak i pozostałe.
Mam pytanie ponieważ u mnie po resecie Maliny i sprawdzenie statusu Monit:
Cannot create socket to [0.0.0.0]:8890 — Connection refused
Czyli monit nie uruchamia się sam po resecie jak zrobić aby uruchamiał się razem z Maliną ?
Na pewno nie musi, bo w tym przypadku nie ma to znaczenia.
Czy udało Ci sie rozwiązać problem? Mam ten sam komunikat 🙁
Dołączam się do pytania powyżej
a restart serwisu pomaga? sudo service monit restart?
Pomaga. Ale jeżeli będzie zanik napięcia domoticz nie uruchomi się to monit go nie uruchomi.
możliwe, że Monit działa, tylko serwer http nie wstaje, przetestuj – nie uruchamiaj ponownie usługi Monita, wyłącz Domoticza i poczekaj chwile – prawdopodobnie Domoticz wstanie, ewentualnie jako workaround problemu można w CRONie dodać wpis, który spowoduje po restarcie Malinki, na przykład po 2 minutach, restart (jak wyżej) serwisu Monita 🙂
Witam, faktycznie po instalacji i resecie Maliny, Monit jakby nie wstawał. Serwer http nie działa, komenda sudo monit status nie daje pozytywnego rezultatu, ale Domoticz jest restartowany. Po 2 minutach uruchamia się ponownie.
Skonfigurowałem powiadomienia mailowe, po resecie Maliny działają, pomimo tego że Monit wydaje się nieaktywny.
Dzięki.Wszystko działa
Witam. Jeśli nadal ma ktoś problem z uruchomienie monita po restarcie Raspberry i komunikatem:
Cannot create socket to [0.0.0.0]:8890 — Connection refused
wystarczy w sudo nano /etc/monit/monitrc
usunąć # na początku linii:
# with start delay 240 # optional: delay the first check by 4-minutes (by
serwer http wstaje z opóźnieniem ustawionym w tej linijce, ja skróciłem opóźnienie do 65 i jest ok.
Witam, mam problem z połączeniem do myDomoticz po restarcie domoticza połączenie z myDomoticz jest utrzymywane średnio przez dobę a później w myDomoticz jest czerwony ludzik. Jak zmusić monita aby pilnował również tego. Dzięki za pomoc.
dzień dobry mam problem niestety ze zrozumieniem(jestem początkującym)
co mam wpisać w tych linijkach:
use address 0.0.0.0
allow 0.0.0.0/0.0.0.0 i w
url http://127.0.0.1:80/json.htm?type=command¶m=getversion
Jeżeli monit instalujesz tam gdzie Domoticz – zostawiasz jak jest. Te cyfry wskazują na adres lokalnego komputera (localhost)
Tutaj masz to dokładniej opisane:
https://www.domoticz.com/wiki/Monitoring_domoticz
Przykład:
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