NEWS
ioBroker Prozess- & Gesundheitsmonitor + Grafana Dashboard
-
ioBroker Prozess-Monitor v4.5.8 — Langzeit-Gesundheitsmonitoring
Ich stelle hier mein Script für ein erweitertes Prozess- und Gesundheitsmonitoring von ioBroker vor, inklusive passendem Grafana-Dashboard für InfluxDB v1/v2.
Hinweis: Das Script ist in enger Zusammenarbeit mit KI-Unterstützung entstanden
(Code-Generierung & Feintuning), wurde aber in einer produktiven Umgebung
getestet und laufend manuell überprüft.Kern-Features
- Core: Läuft ohne eigenen Adapter — nutzt nur js-controller States (
system.adapter.*,system.host.*) - Optional: Telegram-Alarme, REST-API (externer Zugriff)
- Dashboard: InfluxDB + Grafana (v1 getestet, v2 ungetestet)
Funktionen:
- CPU/RAM-Monitoring aller laufenden Adapter (Top5, Summen)
- Restart-Tracking: Flaky Adapter, Cron-Restarts getrennt
- Memory-Leak-Erkennung (restart-resistent, Confidence-Levels)
- Log-Error-/Warn-Tracking (Echtzeit, 1h/24h-Stats, Top5)
- Deadlock-Erkennung (alive=true, connected=false)
- Degraded Adapter: Hohe Error-Rate + CPU/Lag-Probleme
- Host-System (CPU/RAM) + Disk-Monitoring
- Health Score pro Adapter (CPU/RAM/Uptime/Leak/Connection/Logs)
- Telegram-Benachrichtigungen mit individuellen Cooldowns
- InfluxDB-optimierte States unter
0_userdata.0.Systeminfos.ioBroker.Prozesse
🔄 Testphase/Tuning (Feedback willkommen!):
- Flaky: 3 Restarts/24h → Optimal? (Cron toleriert)
- Errors: 20/h critical, 5/h warning → Anpassen?
- Worst/Best Performer: Health-Score-Gewichte
- Degraded: Errors+CPU(15%)+Lag(500ms)
- EventLoopLag: 500ms critical → Hardware-abhängig?
- Memory Leak: R²>0.65, Growth>15MB/h → Fine-Tuning?
- Deadlock: alive=true+!connected → Erweiterung?
Getestet auf: RPi, VM, LXC, Docker/Unraid (Docker-produktiv)
Ziel: Früherkennung schleichender Probleme in produktiven ioBroker-Systemen.
Im Beitrag:
- Script v4.5.8 (Changelog-abgekürzt, 3 Konfig-Profile)
- Grafana-Dashboard InfluxDB v1 (produktiv getestet)
- Grafana-Dashboard InfluxDB v2 (ungetestet, Feedback erwünscht)-aktuell noch nicht vorhanden
- Datenpunkte die für Influxdb benötigt werden, alle übrigen werden per infinity plugin direkt per rest-api geholt

Feedback, Tests in anderen Umgebungen und Verbesserungsvorschläge willkommen! 🚀
Das Dashboard (InfluxDB V1)
dashboard-dynamisch.txt

- Core: Läuft ohne eigenen Adapter — nutzt nur js-controller States (
-
Servus, da ich ja auf sowas stehe (Dashboards), Grafana und influxDB 1.8 nutze, dachte ich mir "komm schau es dir mal an" aber zu meinem Bedauern muss ich sagen ist zwar schön aber nicht so einfach wie gedacht zu nutzen.
Ich will damit nicht sagen das es nicht läuft, aber die Einrichtung und die Darstellung in Grafana sind schon eine Hürde die mich als "normaler" Anwender abschreckt. Man weiß nicht so richtig was man wo und wie einstellen muss, welche Datenpunkt man benötigt usw.Ich weiß das eine Anleitung viel Arbeit macht, aber eine kurze mit Beispielen wäre eine nette Zugabe.
Aber das ist allen meine persönliche Meinung, die Profis hier im Forum mögen das anders sehen.Trotzdem schöne Arbeit und Respekt meinerseits.
-
Servus, da ich ja auf sowas stehe (Dashboards), Grafana und influxDB 1.8 nutze, dachte ich mir "komm schau es dir mal an" aber zu meinem Bedauern muss ich sagen ist zwar schön aber nicht so einfach wie gedacht zu nutzen.
Ich will damit nicht sagen das es nicht läuft, aber die Einrichtung und die Darstellung in Grafana sind schon eine Hürde die mich als "normaler" Anwender abschreckt. Man weiß nicht so richtig was man wo und wie einstellen muss, welche Datenpunkt man benötigt usw.Ich weiß das eine Anleitung viel Arbeit macht, aber eine kurze mit Beispielen wäre eine nette Zugabe.
Aber das ist allen meine persönliche Meinung, die Profis hier im Forum mögen das anders sehen.Trotzdem schöne Arbeit und Respekt meinerseits.
@RoddiEF sagte in ioBroker Prozess- & Gesundheitsmonitor + Grafana Dashboard:
welche Datenpunkt man benötigt
hab ich oben ergänzt
@RoddiEF sagte in ioBroker Prozess- & Gesundheitsmonitor + Grafana Dashboard:
aber die Einrichtung und die Darstellung in Grafana
eigendlich sollte alles 1:1 sein, natürlich muss die Data source (Influxdb) angepasst werden und auch die IP in der URL für Infinity
generell bin ich noch am optimieren und hab heute nochmals etwas angepasst, script und dashboard in der aktuellen Fassung sind oben eingefügt
edit:
script ist noch in Bearbeitung um weniger Datenpunkte anzulegen
das Dashboard werde ich noch auf dynamisch mit Variablen umstellen, dann ist es einfacher zum einfügen. Ich ändere das die Tage umund stell es oben bereithab es umgestellt und steht im ersten Beitrag bereit
-
guten Abend @crunchip
ich habe das jetzt mal aktuallisiert und eine Frage zu diesen Bereich im Grafana-Dashboard:
{ "current": { "selected": true, "text": "http://localhost:8093", "value": "http://localhost:8093" }, "hide": 2, "name": "iobroker_url", "options": [ { "selected": true, "text": "http://localhost:8093", "value": "http://localhost:8093" } ], "query": "http://localhost:8093", "skipUrlSync": false, "type": "textbox" }Holt sich das Dashboard direkt die Daten ohne das man die selber in eine InfluxDB schreiben lassen muss und wenn ja muss das auf die eigene (unter der der ioBroker läuft der bei mir als Container auf einem Unraid unter http://unraid-ip:8081 läuft) geändert werden oder für was ist diese URL wichtig/nötig?
Sorry für die Fragen aber ich versuche das zu Verstehen und bin kein Profis.
-
guten Abend @crunchip
ich habe das jetzt mal aktuallisiert und eine Frage zu diesen Bereich im Grafana-Dashboard:
{ "current": { "selected": true, "text": "http://localhost:8093", "value": "http://localhost:8093" }, "hide": 2, "name": "iobroker_url", "options": [ { "selected": true, "text": "http://localhost:8093", "value": "http://localhost:8093" } ], "query": "http://localhost:8093", "skipUrlSync": false, "type": "textbox" }Holt sich das Dashboard direkt die Daten ohne das man die selber in eine InfluxDB schreiben lassen muss und wenn ja muss das auf die eigene (unter der der ioBroker läuft der bei mir als Container auf einem Unraid unter http://unraid-ip:8081 läuft) geändert werden oder für was ist diese URL wichtig/nötig?
Sorry für die Fragen aber ich versuche das zu Verstehen und bin kein Profis.
@RoddiEF ja genau, in der Variablen kommt deine IP des iobroker rein, das plugin infinity holt sich dann die Daten direkt durch den Rest-API Adapter ohne es extra in eine Datenbank zu schreiben.
Was noch zu erwähnen ist (fehlt noch in der Beschreibung) durch das Setzen einer Host Variablen, muss der Host unter security in der datasource angegeben werden. In dem Fall einfach nur einen *
Damit ist jeder Host gültig.
Ich beschreibt das morgen mal etwas genauer -
@crunchip Danke schonmal.
Der Scriptstart sieht bei mir so aus:
javascript.0 18:22:59.710 info [Prozess-Monitor v4.5.8] Initialisiere States ... javascript.0 18:22:59.712 info [Prozess-Monitor v4.5.8] States initialisiert. javascript.0 18:22:59.713 info [Prozess-Monitor v4.5.8] Log-Error-Tracking aktiv (Realtime) javascript.0 18:23:00.186 error Error: TypeError: Cannot destructure property 'flakyAdapters' of 'checkForFlakyAdapters(...)' as it is undefined. javascript.0 18:23:00.187 error at updateMonitoring (script.js.ioBroker_Monitoring:2631:13) javascript.0 18:23:00.187 error at script.js.ioBroker_Monitoring:2796:1 javascript.0 18:23:00.188 error at script.js.ioBroker_Monitoring:2830:3 javascript.0 18:23:00.188 error at Script.runInContext (node:vm:149:12)Sonmal gesehen?
In machen States kommen schonmal Daten an.
Edit: Info laut chatGPT

-
So, um das Dashboard lauffähig zu bekommen musste ich jedes Panel einmal im edit Mode öffnen und dann zurück zum Dashboard gehen.
Aktuell habe ich nur noch das Problem mit den Errormeldungen bei Scriptstart, siehe oben. Vermutl. werden deshalb auch nicht alle DPs gefüllt und die Anzeigen im Dashboard bleiben leer.
-
@RoddiEF zwecks der url hatte ich oben schon geschrieben, aufgrund der variablen ist eine direkte Hosteingabe nicht zulässig, daher muss ein * eingetragen werden, siehe

@RoddiEF sagte in ioBroker Prozess- & Gesundheitsmonitor + Grafana Dashboard:
Ich bekomme noch folgende Fehler:

mann kann auch bei Show on dashboard z.b value aktivieren, dann ist die Datenbank direkt im Dashboard auswählbar

-
@crunchip Danke schonmal.
Der Scriptstart sieht bei mir so aus:
javascript.0 18:22:59.710 info [Prozess-Monitor v4.5.8] Initialisiere States ... javascript.0 18:22:59.712 info [Prozess-Monitor v4.5.8] States initialisiert. javascript.0 18:22:59.713 info [Prozess-Monitor v4.5.8] Log-Error-Tracking aktiv (Realtime) javascript.0 18:23:00.186 error Error: TypeError: Cannot destructure property 'flakyAdapters' of 'checkForFlakyAdapters(...)' as it is undefined. javascript.0 18:23:00.187 error at updateMonitoring (script.js.ioBroker_Monitoring:2631:13) javascript.0 18:23:00.187 error at script.js.ioBroker_Monitoring:2796:1 javascript.0 18:23:00.188 error at script.js.ioBroker_Monitoring:2830:3 javascript.0 18:23:00.188 error at Script.runInContext (node:vm:149:12)Sonmal gesehen?
In machen States kommen schonmal Daten an.
Edit: Info laut chatGPT

@Rushmed sagte in ioBroker Prozess- & Gesundheitsmonitor + Grafana Dashboard:
Sonmal gesehen?
nein, weil bei mir die Historie schon befüllt war, hatte da gestern einen Fehler eingebaut, habs soeben korrigiert und im ersten Beitrag eingestellt, bitte testen
edit:
habs grad nochmal durchgesehen, da sind noch zwei-drei Dinge nicht ganz sauber, die ich bei der gestrigen Änderung nicht bedacht hatte. Werd ich morgen noch nachbessern.

