Docker-Container-Ressourcenmonitor für Home Assistant.
Echtzeit-Überwachung von CPU, RAM, Netzwerk-I/O, Disk-I/O und PID-Anzahl für alle Docker-Container — einschließlich gestoppter HA Add-ons — in einer sortierbaren, PWA-fähigen Weboberfläche mit automatischer Aktualisierung.
- Sortierbare Tabelle: CPU %, RAM %, NET I/O, DISK I/O, PIDs pro Container — Sortierung bleibt nach Neuladen erhalten
- CPU-Sparkline: 30-Messpunkte-Verlauf pro Container direkt in der Tabelle
- 24h-Verlaufscharts: Klick auf SYS CPU oder SYS RAM öffnet ein Canvas-Diagramm mit den letzten 24 Stunden — in SQLite gespeichert, überlebt Neustarts; Footer zeigt Min / Avg / Max
- CPU-Temperatur-Chart: Klick auf einen Temperaturwert öffnet den 24h-Verlauf mit farbigen Schwellenwert-Referenzlinien (60 / 75 / 90 °C)
- HA-Status-Kachel: Supervisor / Support / Health über Supervisor API — grün / gelb / rot
- SYS CPU / SYS RAM Kacheln: farbkodierte Fortschrittsbalken (grün ≤70 %, gelb ≤80 %, orange ≤90 %, rot >90 %) — klickbar für den 24h-Chart
- CPU-Temperatur: aus
coretemp/k10temphwmon — Package + alle Kern-Temps unterhalb des CPU-Charts - Footer-Versionen: HA Core, Supervisor und OS-Version immer sichtbar
- Container-Aktionen: Starten, Stoppen, Neu starten, Kill (SIGKILL) — alle mit Passwortbestätigung
- Stop via Supervisor API: verhindert, dass der HA-Watchdog den Container sofort neu startet
- Log-Anzeige: letzte 200 Zeilen mit Zeitstempel
- Port-Übersicht: alle gemappten Host-Ports, such- und sortierbar — klickbare Links (
http://<host-ip>:<port>) - Gestoppte Container: gestoppte HA Add-ons werden über die Supervisor API angezeigt
- Unerwarteter Container-Stop → 💥 Meldung mit ▶ Starten-Button — Container direkt aus Telegram starten
- Container-Neustart erkannt → Nachricht wird auf ✅ aktualisiert, Button verschwindet
- CPU/RAM-Schwellenwert-Alarm mit Top 5 Verbrauchern (RAM: Größe + %)
- Konfigurierbare Auslöse- und Entwarnung-Verzögerung
- Startbenachrichtigung mit HA-Version, Container-Anzahl und Host-IP
- 📨 Test-Button im Header (Desktop) zur Bot-Überprüfung
- Chat-ID wird automatisch erkannt, wenn du dem Bot
/startschickst — kein manuelles Nachschlagen nötig
- Auto-Refresh: Browser kalibriert sich automatisch auf den Backend-Abfragezyklus
- Idle-Modus: 2 Worker / 60s-Interval wenn kein Browser verbunden — Pause-Button im Header; Host-CPU/RAM werden weiterhin alle 10s gemessen
- Persistente Einstellungen: Sortierspalte/-richtung und Anzeige gestoppter Container in localStorage
- Passwortgeschützt mit Brute-Force-Sperre (5 Versuche / 15 Min)
- DE / EN Sprachunterstützung (automatisch aus Browser-Sprache erkannt)
- Hell / Dunkel Modus — in localStorage gespeichert
- PWA — auf Desktop und Mobilgerät installierbar
- Mobil-optimiertes Layout
17790
| Option | Standard | Beschreibung |
|---|---|---|
collect_interval |
3 |
Pause zwischen Abfragen in Sekunden. Gesamtzyklus ≈ Abfragezeit + dieser Wert. |
collect_workers |
16 |
Parallele Docker-Stats-Abfragen (4–64). Mehr = schneller, aber mehr CPU-Last. |
viewer_timeout |
180 |
Sekunden ohne Heartbeat bis zum Idle-Modus (30–1800). |
show_stopped |
true |
Gestoppte Container standardmäßig anzeigen. |
telegram_bot_token |
"" |
Telegram-Bot-Token. Leer lassen deaktiviert alle Telegram-Funktionen. |
telegram_chat_id |
"" |
Empfänger-Chat-ID. Optional — wird automatisch erkannt wenn du dem Bot schreibst. |
notify_cpu_threshold |
0 |
CPU-Alarm-Schwellenwert in %. 0 = deaktiviert. |
notify_ram_threshold |
0 |
RAM-Alarm-Schwellenwert in %. 0 = deaktiviert. |
notify_over_duration |
0 |
Sekunden, die CPU/RAM ununterbrochen überschritten sein müssen bevor der Alarm ausgelöst wird. |
notify_clear_duration |
120 |
Sekunden, die CPU/RAM ununterbrochen unter dem Schwellenwert liegen müssen bevor die Entwarnung gesendet wird. |
Performance-Hinweis: Mit 49 Containern und 49 Workern beträgt die Abfragezeit ~2 s (gleiche Untergrenze wie docker stats --no-stream). Gesamtzyklus: ~2 s + collect_interval.
- Bot über
@BotFathererstellen →/newbot— Token kopieren telegram_bot_tokenin der Add-on-Konfiguration eintragen- Bot in Telegram öffnen und
/startsenden - SysWatch erkennt deine Chat-ID automatisch und bestätigt mit einer Nachricht — fertig
telegram_chat_id ist optional. SysWatch lernt sie automatisch aus der ersten Nachricht.
Wenn explizit gesetzt, wird nur diese Chat-ID akzeptiert (empfohlen bei geteilten Bots).
Token leer → alle Telegram-Funktionen deaktiviert, kein Polling, keine Log-Ausgabe.
| Ereignis | Nachricht |
|---|---|
| Add-on gestartet | 🟢 Startinfo mit HA/Supervisor/OS-Version, Container-Anzahl, Host-IP |
| Container unerwartet gestoppt | 💥 Alarm + ▶ Starten-Button |
| Container gestartet (nicht über SysWatch) | |
| CPU über Schwellenwert | |
| CPU wieder normal | ✅ Entwarnung |
| RAM über Schwellenwert | |
| RAM wieder normal | ✅ Entwarnung |
Nach der Installation zeigt HA eine Warnung: "Gesicherter Modus deaktiviert" / "Protection mode disabled". Das ist erwartet und muss manuell bestätigt werden.
SysWatch benötigt docker_api: true, um den Docker-Socket (/var/run/docker.sock) einzubinden —
ohne diesen können keine Container-Stats gelesen werden. HA deaktiviert den Schutzmodus dafür automatisch.
In der HA Add-on-UI: Info-Tab → "Schutzmodus"-Schalter auf Aus setzen.
Repository zur Home Assistant Add-on-Store hinzufügen:
https://github.com/LuckyTriple7/HA-AddOns
Docker container resource monitor for Home Assistant.
Real-time CPU, RAM, Network I/O, Disk I/O and PID counts for all Docker containers — including stopped HA add-ons — in a sortable, PWA-ready web interface with automatic refresh.
- Sortable table: CPU %, RAM %, NET I/O, DISK I/O, PIDs per container — sort persists across reloads
- CPU sparkline: 30-measurement history per container in the table
- 24h history charts: click SYS CPU or SYS RAM card to open a canvas chart with the last 24 hours — stored in SQLite, survives restarts
- CPU temperature chart: click any temperature reading to open a 24h temperature history with threshold reference lines (60 / 75 / 90°C)
- HA Status card: Supervisor / Support / Health from Supervisor API — green / yellow / red
- SYS CPU / SYS RAM cards: color-coded progress bars (green ≤70 %, yellow ≤80 %, orange ≤90 %, red >90%) — clickable for 24h chart
- CPU temperature: from
coretemp/k10temphwmon — Package + per-core temps displayed below the CPU chart - Footer versions: HA Core, Supervisor and OS version always visible
- Container actions: Start, Stop, Restart, Kill (SIGKILL) — all with password confirmation
- Log viewer: last 200 lines with timestamps
- Port overview: all host-mapped ports, searchable and sortable — host ports are clickable links (
http://<host-ip>:<port>) - Stopped containers: shows stopped HA add-ons via Supervisor API
- Unexpected container stop → 💥 alert with ▶ Starten inline button — start directly from Telegram
- Container restart detected → message updated to ✅, button removed
- CPU/RAM threshold alerts with Top 5 consumers (RAM: size + %)
- Configurable trigger and all-clear delays
- Startup notification with HA version, container count, host IP
- 📨 Test button in header (desktop) to verify bot setup
- Chat ID auto-detected on first
/startmessage — no manual lookup needed
- Auto-refresh: browser calibrates automatically to backend collection cycle
- Idle mode: 2 workers / 60s interval when no browser connected — pause button in header
- Persistent preferences: sort column/direction, show-stopped state in localStorage
- Password-protected with brute-force lockout (5 attempts / 15 min)
- DE / EN language support (auto-detected from browser)
- Light / Dark mode — persisted in localStorage
- PWA — installable on desktop and mobile
- Mobile-responsive layout
17790
| Option | Default | Description |
|---|---|---|
collect_interval |
3 |
Sleep between queries in seconds. Total cycle ≈ query time + this value. |
collect_workers |
16 |
Parallel Docker stats calls (4–64). More = faster but higher CPU load. |
viewer_timeout |
180 |
Seconds without heartbeat before switching to idle mode (30–1800). |
show_stopped |
true |
Show stopped containers by default. |
telegram_bot_token |
"" |
Telegram bot token. Leave empty to disable all Telegram features. |
telegram_chat_id |
"" |
Recipient chat ID. Optional — auto-detected when you message the bot. |
notify_cpu_threshold |
0 |
CPU alert threshold in %. 0 = disabled. |
notify_ram_threshold |
0 |
RAM alert threshold in %. 0 = disabled. |
notify_over_duration |
0 |
Seconds CPU/RAM must stay above threshold before alert fires. |
notify_clear_duration |
120 |
Seconds CPU/RAM must stay below threshold before all-clear is sent. |
Performance note: With 49 containers and 49 workers, query time is ~2 s (same floor as docker stats --no-stream). Total cycle: ~2 s + collect_interval.
- Create a bot via
@BotFather→/newbot— copy the token - Set
telegram_bot_tokenin the add-on configuration - Open your bot in Telegram and send
/start - SysWatch auto-detects your chat ID and confirms with a message — done
telegram_chat_id is optional. SysWatch learns it automatically from the first message.
If set explicitly, only that chat ID is accepted (recommended for shared bots).
Token empty → all Telegram features disabled, no polling, no log output.
| Event | Message |
|---|---|
| Add-on started | 🟢 Startup info with HA/Supervisor/OS version, container count, host IP |
| Container stops unexpectedly | 💥 Alert + ▶ Starten button |
| Container starts (not via SysWatch UI) | |
| CPU above threshold | |
| CPU back to normal | ✅ All-clear |
| RAM above threshold | |
| RAM back to normal | ✅ All-clear |
After installation HA shows a warning: "Protection mode disabled" / "Gesicherter Modus deaktiviert". This is expected and must be confirmed manually.
SysWatch requires docker_api: true to mount the Docker socket (/var/run/docker.sock) —
without it no container stats can be read. HA automatically disables protection mode for this.
In the HA add-on UI: Info tab → set the "Protection Mode" toggle to Off.
Add this repository to your Home Assistant Add-on Store:
https://github.com/LuckyTriple7/HA-AddOns