Schrolli91 / BOSWatch

Python Script to process input data from rtl_fm and multimon-NG - multiple Plugin support
https://bwcc.boswatch.de
GNU General Public License v2.0
132 stars 60 forks source link

BOSWatch Überwachung/Watchdog #32

Closed JHCD closed 6 years ago

JHCD commented 9 years ago

Wunsch-Feature: Überwachung, ob BOSWatch noch arbeitet. Im POCSAG werden alle n Minuten "keep alive"-Signale gesendet. Wenn die nicht in BOSWatch ankommen, ist was fault.

Lösungsidee: Asynchroner Timertask, der schaut, ob alle x Miuten ein Alarm verarbeitet wurde.

Tauebenuss commented 9 years ago

Einfache wäre ein Watchdog ? Der Online auf einem Server läuft ?

Tauebenuss commented 9 years ago

http://www.gieseke-buch.de/raspberrypi/eingebauten-hardware-watchdog-zur-ueberwachung-nutzen

JHCD commented 9 years ago

Hi Kevin, Ein sehr interessanter Artikel, das werde ich mir mal anschauen. Muss man allerdings aufpassen, wenn man etwas ausprobiert, will der Watchdog gleich neu starten :-o Grüße, Jens

Schrolli91 commented 9 years ago

Habs mir gerade mal angesehen... Das könnte wirklich ne super Sache werden. Man müsste nur dafür sorgen, dass unser Script alle xx Sek oder Min etwas ins Log schreibt bzw in eine andere Datei. Den Rest würde dann schon der Watchdog machen.

JHCD commented 9 years ago

Ja, das ist auch meim Ansatz. Im POC-Umfeld recht einfach, da alle n Minuten ein DAU-Test-Signal kommt... Für FMS und ZVEI müsste man einen entsprechenden Dienst im Script haben, der aber auch auf Fehler reagiert, sonst hilft der nichts :-(

Tauebenuss commented 9 years ago

Wie wäre es ein ungefilterten Stream ( ohne ricfilteroder aber nur die 000000 zu filtern.... zu nehmen und den dann in eine Datei weiterleiten ? Und alle 15 min überprüfen ob die Datei alive ist ?

Fms und zvei sind dabei eher schwierig .... Einzige mir einfallende Möglichkeit: Eingangssignal abfangen und alle x Minuten die rauschsperre zu lösen. Also das in irgendeiner Form gesprochen wird.

Am 29.06.2015 um 08:11 schrieb Jens Herrmann notifications@github.com:

Ja, das ist auch meim Ansatz. Im POC-Umfeld recht einfach, da alle n Minuten ein DAU-Test-Signal kommt... Für FMS und ZVEI müsste man einen entsprechenden Dienst im Script haben, der aber auch auf Fehler reagiert, sonst hilft der nichts :-(

— Reply to this email directly or view it on GitHub.

Tauebenuss commented 9 years ago

mal meine Gedanken als Pseudocode:

if arg = pocsag --> in pocsag RIC 0000000 abfangen und Zeit an Datei senden wenn älter als 30 min --> REBOOT if arg = zvei --> die Zeit der letzten Meldung abfangen --> in Datei schreiben wenn Zeit älter als 2 Stunden dann --> nicht mehr schreiben --> REBOOT if arg =fms dann so wie mit ZVEI umgehen, eventuell Kombiniert? rtl_fm abfangen und auf Error absuchen --> RTL Stick rausgezogen ? dann Meldung per E-Mail & NMA

Wer von euch nutzt eigentlich welche Funktion also ZVEI/FMS/POCSAG ?

JHCD commented 9 years ago

Die Fehlerzeiten wären mir persönlich für POC viel zu lang. Aber da ich nicht weiß, ob es die 5-Min-DAU-Meldung überall gibt, macht es eine Implementierung schwierig.

Bei FMS / ZVEI könnte es auch vorkommen, dass stundenlang nichts gesendet wird. Hier fehlt mir noch die Idee.

RTL-Fehler auslesen wäre machbar. Man müsste nur die ganzen (unterschiedlichen) Fehler kennen.

Schrolli91 commented 9 years ago

ZVEI und FMS ist in der Tat schwierig. Im ungüntsigsten Fall kanns schon mal passieren das nen ganzen Tag lang nix über den Kanal kommt - Ausnahme aber möglich. Und selbst auf die DAU-Meldung würde ich mich nicht verlassen, dass ist sicher vielerorts anders geregelt.

ist den rtl_fm closed source? sonst könnte man mal nachsehen... ^^

JHCD commented 9 years ago

Meine erste Idee ist, dass man eine optinal einschaltbare Funktion baut, die ins log-Verzeichnis eine lastDecoding.log schreibt. Watchdog kann den Zeitstempel auslesen. Die Konfiguration von Wachdog ist dann wieder sehr Benutzer-spezifisch.

Zentrale Funktion, am besten in decoder.py, da "we are still alive" vor allen Filtern geschrieben werden sollte.

Tauebenuss commented 9 years ago

Es gibt ein watchdog Deamon, den man einfach nur noch auf die Log. Datei richten muss, dort wird ja unter POCSAG das Ric 000000 abgefangen..

Ist glaube ich am einfachsten?

Tauebenuss commented 9 years ago

Damit wird es am einfachsten gehen:

http://linux.die.net/man/8/watchdog

Cryjack commented 8 years ago

Ich habe das als MySQL Plugin umgesetzt. Kommen Netzkennungen per POCSAG, werden diese in eine neue DB-Tabelle geschrieben/aktualisiert. Ein Shellscript per Cron prüft die dort vorhandenen Empfangszeiten mit der Serverzeit ab und kann ggf. LEDs oder Buzzer schalten, Server neustarten oder BosWatch restarten. #104 (MySql-Script und Signalcheck.sh im root)

Schrolli91 commented 6 years ago

MERKER für BOSWatch 3

Da der Server sowieso per TCP ansprechbar ist, kann man in einem eigenen Prozess einen kleinen Überwachungs-Clienten starten der regelmäßig einen Heartbeat an den Server sendet. Bleibt eine Antwort aus, wird der Server/Raspberry/etc neu gestartet