Geht, geht nicht – Fehlersuche per Logausgabe

Wenn Messungen oder Schaltungen manchmal funktionieren und manchmal nicht, dann fängt die Mühe an. Bei der Fehlersuche ist häufig guter Rat teuer. Es nervt einfach, wenn man abends nochmal aufstehen muss um die Außenbeleuchtung manuell auszuschalten, weil sie nicht auf den Schaltbefehl per Smartphone reagiert.

Woran kann es liegen? Welche möglichen Ursachen gibt es? Was kann ich ausprobieren und nachmessen? Wann kann ich die Fehlersuche per Logausgabe beschleunigen? Welcher Teil spinnt jetzt?

Arduino Uno, Ethernet Shield und 3 Relaiskarten auf einer Hutschiene

Fehlersuche

Was kann man in einem solchen Fall versuchen?

  • Logausgaben über MQTT-Topic
    • letzte Ausgabe auf der openHab GUI
    • Historie über Grafana aus der InfluxDB auslesbar
  • Logfileserver auf einem Rasperry-Pi 4 installieren
    • Graylog kann leider nur auf 64bit Systemen installiert werden
    • Logstash / ELK-Stash?
  • Monitoring über Drittsysteme
    • Nagios
    • Zabbix
  • Manuelle Tests
    • Sind alle Sicherungen an?
    • Ist ein FI (Fehlerschutzschalter) ausgelöst worden?
    • Hat sich ein Kabel gelöst?
    • MQTT Topics mit Payloads publishen und subscriben per Chrome Erweiterung MQTTlens
  • Verfügbare Logfiles analysieren

In der Netzwerktechnik ist die systematische Fehlersuche nach dem OSI-Schichtenmodell ein gängiges Prinzip. Dies lässt sich auch auf unser IoT-Projekt anwenden.

  1. Physikalische Schicht
    • Alles, was wir anfassen könnnen
    • Haben der SmartHome-Server auf dem Raspberry-Pi und Arduino-Clients Strom?
    • Stecken alle Stecker in den richtigen Buchsen?
  2. Datenverbindung
    • Wurde eine MAC-Adresse fälschlicherweise doppelt vergeben?
    • Muss die MAC-Adresse eines WLAN-Clients im Macfilter eingetragen werden?
  3. Netzwerkschicht / Vermittlungsschicht
    • Sind alle IP-Adressen und Subnetzmasken korrekt eingetragen?
    • Verhindert eine Firewall die Übertragung der Daten?
  4. Transportschicht
  5. Sitzungsschicht / Session layer
  6. Präsentationsschicht
    • Interpretiert der zentrale Server die ankommenden Daten im richtigen Format
    • Beispiel “ 30.2″ wäre wegen des führenden Leerzeichens ein ungültiger Float (Zahlenwert mit Nachkommastelle)
  7. Anwendungsschicht
  8. Der Mensch – Layer 8 Probleme
    • Es wurde der falsche Button betätigt
    • Die Konfiguration stimmt nicht

Konkret gehe ich meist wie folgt vor:

  • Schaltversuch wiederholen
  • Optische Prüfung aller beteiligten Einzelteile (Strom, Sicherungen, Kontrollleuchten)
  • Debugging per Seriellem Monitor (Kommt der Befehl an?)

Die Fehlersuche per Logausgabe ist ein wichtiges Hilfsmittel, wenn ich einen konkreten Fehler suche oder nicht reproduzierbares Verhalten über längere Zeit beobachte.

Schwierig war beispielsweise die Anbindung unserer Katzenklappe ans Smarthome.

Monitoring der SmartHome Komponenten

Im LAN habe ich früher Nagios und bisher Zabbix eingesetzt, bin jedoch mit beiden Systemen nicht ganz zufrieden.

Schreibt mir gerne in die Kommentare, welche Lösungen ihr als Logserver oder Monitoring-Lösung einsetzt!