Zum Hauptinhalt springen

Supervision hôte Smart-Home-Integration, kostenlos und Open Source

Supervision hôte-Integration für Gladys Assistant

Meldet CPU-, Arbeitsspeicher- und Festplattenauslastung sowie CPU-Temperatur des Gladys-Rechners.

Diese Integration erstellt in Gladys ein Gerät, das den Rechner darstellt, auf dem Gladys läuft, mit fünf Sensoren:

SensorEinheitQuelle
CPU-Auslastung%/proc/stat
Arbeitsspeicherauslastung%/proc/meminfo (MemAvailable)
Festplattenauslastung%statfs() auf dem überwachten Pfad
Freier SpeicherplatzGiBstatfs() auf dem überwachten Pfad
CPU-Temperatur°C/sys/class/thermal oder hwmon

Alles wird lokal auf dem Rechner gelesen: kein Agent zu installieren, kein Cloud-Dienst, keine Daten, die dein Zuhause verlassen.

Installation​

Erfordert Gladys 5.1 oder neuer. Auf einer älteren Version erscheint die Integration einfach nicht im Katalog: Aktualisiere zuerst Gladys.

  1. Installiere die Integration aus dem Gladys-Katalog (Kategorie Dienste).
  2. Öffne den Tab Konfiguration und speichere (die Standardwerte passen für die allermeisten Installationen).
  3. Geh zum Tab Entdecken: Das Gerät „Machine hôte“ erscheint, klicke auf Zu Gladys hinzufügen.

Die ersten Werte werden innerhalb weniger Sekunden veröffentlicht, danach alle 5 Minuten.

Aktualisierungsrate und Datenbankgröße​

Dieser Punkt prägt die gesamte Integration. Gladys schreibt für jeden veröffentlichten Wert eine Verlaufszeile: Es gibt keine serverseitige Deduplizierung. Eine Systemüberwachung, die alle 30 Sekunden 5 Metriken veröffentlicht, schreibt rund 5 Millionen Zeilen pro Jahr, von denen die allermeisten nur den vorherigen Wert wiederholen. Auf einem Raspberry Pi mit SD-Karte kostet das sowohl Platz als auch Schreibzyklen.

Drei Schutzmechanismen, alle im Tab Konfiguration einstellbar:

  • Aktualisierungsintervall (standardmäßig 300 s, mindestens 60 s) — wie oft die Metriken gelesen werden. Die Integration verwendet ihren eigenen Timer: Sie nutzt nicht den Gladys-Scheduler, der nicht langsamer als einmal pro Minute lesen kann.
  • Mindeständerung (standardmäßig 2 Prozentpunkte / 1 °C) — ein Wert wird nur veröffentlicht, wenn er sich seit dem zuletzt veröffentlichten Wert um mindestens so viel verändert hat. Eine langsame Drift überschreitet die Schwelle daher immer irgendwann, während das Grundrauschen die Datenbank nicht mehr füllt. Setze den Wert auf 0, um alles zu veröffentlichen.
  • Maximales Intervall ohne Messpunkt (standardmäßig 60 min) — auch wenn sich nichts ändert, wird jeder Sensor mindestens einmal pro Stunde veröffentlicht, damit die Diagramme eine durchgehende Linie behalten.

Mit den Standardeinstellungen schreibt ein ruhiger Rechner typischerweise einige Dutzend Zeilen pro Tag statt Zehntausender.

Der Schalter Verlauf speichern geht noch einen Schritt weiter: Ist er ausgeschaltet, zeigen die Sensoren weiterhin ihren aktuellen Wert, schreiben aber überhaupt keine Verlaufszeile. Beachte, dass diese Einstellung beim Erstellen des Geräts angewendet wird; wenn das Gerät bereits existiert, änderst du sie direkt auf der Geräteseite in Gladys (dort hat jede Funktion ihr eigenes Option Statusverlauf speichern?).

Speicherplatz: Welche Festplatte wird gemessen?​

Ein Container sieht nicht das Dateisystem des Hosts, sondern sein eigenes. Der Standardpfad /data ist das eigene /data-Volume der Integration, das Gladys vom Host einbindet: Gemessen wird die Festplatte (Partition) des Hosts, auf der dieses Volume liegt — bei einer Standardinstallation die Festplatte, auf der Docker und Gladys ihre Daten ablegen, also genau der freie Speicherplatz, der in der Praxis zählt. Wenn Docker seine Volumes auf einer anderen Festplatte speichert als der, die dich interessiert, sind die Zahlen die der Festplatte, auf der das Volume liegt.

Um einen anderen Einhängepunkt zu überwachen, trage seinen Pfad unter Zu überwachender Festplattenpfad ein — sofern er aus dem Container heraus sichtbar ist.

Eine Festplatte, die nicht innerhalb von 5 Sekunden antwortet (zum Beispiel eine hängende Netzwerkfreigabe), wird für diese Messung als nicht verfügbar gemeldet: CPU, Arbeitsspeicher und Temperatur werden trotzdem veröffentlicht.

Der Prozentsatz wird wie bei df berechnet: Für root reservierte Blöcke werden ausgeschlossen, ein frisch formatiertes ext4-Dateisystem zeigt also 0 % und nicht 5 %.

CPU und Arbeitsspeicher: wenn es nicht die des Hosts sind​

/proc/stat und /proc/meminfo werden von Docker nicht isoliert: Auf einer normalen Linux-Installation sind CPU und Arbeitsspeicher die des gesamten Rechners. Zwei Konstellationen bilden eine Ausnahme:

  • Gladys in einem LXC-Container (zum Beispiel Proxmox) mit aktiviertem lxcfs — der Standard unter Proxmox: lxcfs schreibt diese Dateien um, CPU und Arbeitsspeicher sind also die des LXC-Containers (seine eigene Last, sein Speicherlimit), nicht die des physischen Hosts.
  • Docker Desktop (macOS, Windows): Container laufen in einer virtuellen Linux-Maschine, die Zahlen sind also die dieser VM (die Docker Desktop zugewiesenen CPUs und der zugewiesene Arbeitsspeicher), nicht die deines Computers.

In beiden Fällen ist die Festplatte weiterhin die, auf der das /data-Volume liegt, so wie dieser Container bzw. diese VM sie sieht.

CPU-Temperatur​

Der Sensor wird unter denen, die der Kernel unter /sys/class/thermal (Raspberry Pi und ARM-Boards) und /sys/class/hwmon (coretemp bei Intel, k10temp bei AMD…) bereitstellt, automatisch erkannt. Sensoren, deren Name eindeutig die CPU bezeichnet, werden bevorzugt.

Wenn dein Rechner überhaupt keinen Sensor bereitstellt (virtuelle Maschine, LXC-Container, Nicht-Linux-Host), wird die Temperaturfunktion einfach nicht erstellt: Die anderen vier funktionieren weiter.

Der Sensor wird beim Start der Integration gewählt (sowie bei jedem Scan oder jeder Konfigurationsänderung) und dann beibehalten: Eine einzelne unplausible Messung lässt die Temperatur für diese Messung leer, statt zu einem anderen Sensor zu wechseln. Erst nach drei fehlgeschlagenen Messungen in Folge wird der Sensor erneut erkannt.

Wenn der gewählte Sensor nicht der richtige ist, verwende die Schaltfläche Temperatursensoren auflisten: Sie zeigt jeden sichtbaren Sensor mit seinem aktuellen Messwert an und markiert den verwendeten mit einem >. Kopiere den gewünschten Pfad in CPU-Temperatursensor.

Verfügbare Aktionen​

  • Metriken jetzt lesen — liest sofort alles und zeigt das Ergebnis unter der Schaltfläche an, ohne auf die nächste Aktualisierung zu warten. Das ist der erste Test, wenn ein Wert falsch aussieht. Wird sie innerhalb von 10 Sekunden erneut angeklickt, zeigt sie dieselbe Messung, statt die CPU nur über wenige Sekunden zu messen.
  • Temperatursensoren auflisten — siehe oben.

Dashboard-Widget​

Füge das Widget Host-Zustand zu einem Dashboard hinzu (Dashboard → Bearbeiten → Neues Widget, Abschnitt Integrations-Widgets). Es zeigt:

  • drei Anzeigen in Prozent: CPU, Arbeitsspeicher, Festplatte;
  • die CPU-Temperatur (wenn ein Sensor vorhanden ist) und den freien Speicherplatz;
  • ein Verlaufsdiagramm für CPU / Arbeitsspeicher / Festplatte, dazu die Kurve der CPU-Temperatur, wenn das Gerät einen Sensor hat;
  • den Zustand jedes Alarms (siehe unten);
  • eine Schaltfläche Jetzt lesen.

Das Widget hat eine einzige Einstellung, den Diagrammzeitraum (letzte Stunde, 24 Stunden, Woche, Monat… oder kein Diagramm). Das Diagramm erscheint erst, wenn das Gerät hinzugefügt wurde und seinen Verlauf speichert.

Solange das Gerät nicht über den Tab Entdecken hinzugefügt wurde, zeigt das Widget trotzdem die letzte Messung an. Sobald das Gerät hinzugefügt ist, aktualisieren sich Temperatur und Diagramm live; die drei Anzeigen (in ganzen Prozent) und der freie Speicherplatz (gerundet, z. B. 432 GB oder 1,8 TB) folgen jeder Messung der Integration.

Szenen​

Auslöser „Alarm für eine Host-Metrik“​

Die Integration überwacht vier Schwellenwerte, die im Tab Konfiguration festgelegt werden (Abschnitt Alarme für Szenen):

SchwellenwertStandard
CPU90 %
Arbeitsspeicher90 %
Festplatte90 %
CPU-Temperatur80 °C

Setze einen Schwellenwert auf 0, um diesen Alarm zu deaktivieren.

Wenn eine Metrik ihren Schwellenwert erreicht, löst der Auslöser einmal aus („Alarm ausgelöst“). Er löst ein weiteres Mal aus, wenn die Metrik wieder sinkt („Wieder normal“): 5 Punkte unter dem Schwellenwert bei den Prozentwerten, 3 °C bei der Temperatur. Dieser Abstand verhindert, dass eine Festplatte, die um 90 % schwankt, deine Szenen bei jeder Messung startet.

Im Szenen-Editor kannst du nach Metriken (leer lassen für alle) und nach Ereignis (ausgelöst, wieder normal oder beides) filtern. Diese Variablen stehen den Aktionen der Szene zur Verfügung: metric, metric_label, status, value, threshold, unit, device_name und message — eine fertige Nachricht auf Französisch, z. B. „Machine hôte : Utilisation disque à 92 % (seuil 90 %)“.

Beispiel: „Wenn die Festplatte ihren Schwellenwert erreicht → mir eine Nachricht mit message senden“.

Gut zu wissen:

  • der Alarm wird bei jeder Messung geprüft, auch wenn der Wert nicht in den Verlauf geschrieben wird;
  • die CPU-Auslastung ist ein Mittelwert über das Aktualisierungsintervall: Eine Spitze von wenigen Sekunden löst nichts aus. Die allererste Messung nach einem Start mittelt nur über eine Sekunde und löst daher keinen CPU-Alarm aus: Die nächste Messung entscheidet;
  • der Zustand der Alarme wird nur im Arbeitsspeicher gehalten. Nach einem Neustart der Integration (Neustart von Gladys oder des Containers, Update) wird ein noch laufender Alarm bei der ersten Messung erneut ausgelöst — lieber eine wiederholte Benachrichtigung als eine stillschweigend volle Festplatte. Umgekehrt sendet eine Metrik, die gesunken ist, während die Integration gestoppt war, kein „Wieder normal“.

Aktion „Host-Metriken lesen“​

Diese Aktion liest alle Metriken, wenn die Szene sie erreicht, und stellt sie den folgenden Aktionen zur Verfügung: cpu_percent, memory_percent, disk_percent, disk_free_gib, temperature und summary (eine einzeilige Zusammenfassung auf Französisch). Eine Metrik, die nicht gelesen werden kann, ist leer, niemals 0.

Beispiel: „Jeden Montag um 9 Uhr → Host-Metriken lesen → mir summary senden“.

Die Messungen durchlaufen dieselben Schutzmechanismen wie die normale Aktualisierung: Eine Szene, die oft läuft, füllt die Datenbank nicht.

Fehlerbehebung​

Es erscheint kein Wert. Prüfe, ob das Gerät tatsächlich über den Tab Entdecken hinzugefügt wurde: Solange es nicht erstellt ist, ignoriert Gladys veröffentlichte Zustände stillschweigend. Sobald du es hinzufügst, veröffentlicht die Integration erneut eine vollständige Momentaufnahme — die fünf Metriken erscheinen also innerhalb weniger Sekunden, ohne auf die nächste Aktualisierung oder den nächsten garantierten Punkt zu warten.

Das Gerät zeigt „Kein aktueller Wert“. Diese Kennzeichnung erscheint, wenn 48 Stunden lang kein Zustand gespeichert wurde — in der Praxis also nie. Verwende die Aktion Metriken jetzt lesen: Sie endet mit „N Wert(e) veröffentlicht“. Ist N mindestens 1, veröffentlicht die Integration tatsächlich, und das Problem ist die direkt unten beschriebene Zuordnung der Funktionen.

Das Gerät wurde mit einer älteren Version erstellt. Gladys aktualisiert die Funktionen eines bereits existierenden Geräts nie: Ein erneutes Veröffentlichen des Geräts aktualisiert nur seinen Eintrag im Tab Entdecken. Ein mit älteren Kennungen erstelltes Gerät behält diese daher, und die für die neuen Kennungen veröffentlichten Zustände werden ohne sichtbaren Fehler verworfen (der Gladys-Server protokolliert DeviceFeature "..." not found (or not added to Gladys), skipping state update.). Die Integration erkennt dies beim Start und meldet es im Tab Konfiguration. Die einzige Lösung ist, das Gerät in Gladys zu entfernen und es dann über den Tab Entdecken erneut hinzuzufügen. So wendest du auch eine Änderung der Option Verlauf speichern an oder lässt die Temperatur auf einem Gerät erscheinen, das erstellt wurde, bevor der Sensor erkannt wurde.

Die Temperatur fehlt. Das ist auf einer VM zu erwarten. Verwende die Aktion Temperatursensoren auflisten, um zu bestätigen, dass der Kernel keinen bereitstellt.

Die Diagramme sehen wie Treppen aus. Das ist das beabsichtigte Verhalten: Zwischen zwei veröffentlichten Punkten hat sich der Wert nicht stärker als die Schwelle verändert. Verringere die Mindeständerung für mehr Details — auf Kosten einer größeren Datenbank.

Die Werte wirken geglättet. Die veröffentlichte CPU-Auslastung ist der Mittelwert über das Aktualisierungsintervall, kein Momentwert: Eine Spitze von 2 Sekunden in einem 5-Minuten-Fenster bleibt kaum sichtbar. Verkürze das Intervall, wenn du kurzen Spitzen nachspürst.

Die Integration protokolliert jede Messung. Sieh dir den Tab Protokolle der Integration an, mit LOG_LEVEL=debug für alle Details.

Konfigurationseinstellungen​

Diese Einstellungen fragt Supervision hôte in seinem Konfigurationsbildschirm in Gladys ab.

EinstellungTypPflichtfeldBeschreibung
Host-ÜberwachungsectionNeinEin Gerät, das den Zustand des Rechners anzeigt, auf dem Gladys läuft: CPU-Auslastung, Arbeitsspeicherauslastung, Festplattenauslastung, freier Speicherplatz und CPU-Temperatur. Alles wird lokal aus /proc und /sys gelesen, ohne Agent und ohne Cloud-Dienst.
GerätenamestringNeinName des in Gladys erstellten Geräts. Nützlich, wenn du mehrere Rechner überwachst.
Zu überwachender FestplattenpfadstringNeinPfad, dessen Dateisystem gemessen wird. Der Standardwert /data ist das Volume der Integration, das auf demselben Dateisystem liegt wie deine Gladys-Daten.
CPU-Temperatursensor (optional)stringNeinLeer lassen für die automatische Erkennung. Andernfalls die zu lesende sysfs-Datei, z. B. /sys/class/thermal/thermal_zone0/temp.
Aktualisierungsrate und VerlaufsectionNeinGladys schreibt für jeden veröffentlichten Wert eine Verlaufszeile, daher füllt eine ungebremste Host-Überwachung die Datenbank schnell. Die Integration liest die Metriken nach ihrem eigenen Takt und veröffentlicht einen Wert nur, wenn er sich stärker als die folgenden Schwellenwerte verändert hat — mit einem garantierten Punkt mindestens einmal pro maximalem Intervall, damit die Diagramme durchgehend bleiben.
Aktualisierungsintervall (s)numberNeinWie oft die Metriken gelesen werden, in Sekunden. 300 s (5 Minuten) reichen für die Überwachung eines Hosts völlig aus.
Mindeständerung (%)numberNeinEin Prozentwert wird nur veröffentlicht, wenn er sich seit dem zuletzt veröffentlichten Wert um mindestens so viele Punkte verändert hat. 0 veröffentlicht jede Messung.
Mindeständerung (°C)numberNeinDerselbe Schwellenwert, angewendet auf die CPU-Temperatur.
Maximales Intervall ohne Messpunkt (min)numberNeinAuch wenn sich nichts ändert, wird jede Metrik mindestens einmal pro Intervall veröffentlicht, damit die Diagramme eine durchgehende Linie behalten.
Verlauf speichernbooleanNeinWird beim Erstellen des Geräts angewendet. Deaktiviere die Option, um nur die aktuellen Werte zu behalten, ganz ohne Verlaufszeilen.
Alarme für SzenensectionNeinErreicht eine Metrik ihren Schwellenwert, löst die Integration den Szenen-Auslöser „Alarm für eine Host-Metrik“ einmal aus und ein weiteres Mal, wenn die Metrik wieder sinkt. Ideal, um über eine volle Festplatte oder eine überhitzte CPU informiert zu werden. Setze einen Schwellenwert auf 0, um diesen Alarm zu deaktivieren.
CPU-Alarmschwelle (%)numberNeinDie CPU-Auslastung wird über das Aktualisierungsintervall gemittelt, kurze Spitzen zählen also nicht. 0 deaktiviert den Alarm.
Arbeitsspeicher-Alarmschwelle (%)numberNein0 deaktiviert den Alarm.
Festplatten-Alarmschwelle (%)numberNein0 deaktiviert den Alarm.
Alarmschwelle CPU-Temperatur (°C)numberNein0 deaktiviert den Alarm. Wird ignoriert, wenn kein Temperatursensor gefunden wird.

So installierst du Supervision hôte in Gladys​

  1. Öffne in Gladys Integrationen: Supervision hôte erscheint im Katalog neben den nativen Integrationen, mit einem Community-Badge.
  2. Klicke auf Installieren. Gladys lädt das Docker-Image (ghcr.io/prohand/gladys-host-monitoring:2.3.1) herunter, startet es in einer vom Kern isolierten Sandbox und erzeugt die Oberfläche der Integration (Geräte, Erkennung und Konfiguration).
  3. Öffne den Bildschirm Konfiguration der Integration, fülle die Einstellungen aus und speichere.
  4. Du kannst sie auch direkt über die URL ihres Repositorys installieren: https://github.com/prohand/gladys-host-monitoring.

Supervision hôte benötigt Gladys >=5.1.0. Der Katalog in Gladys wird stündlich aktualisiert, eine neue Version ist also spätestens eine Stunde nach ihrer Veröffentlichung verfügbar.

Du nutzt Gladys noch nicht? Es ist kostenlos und Open Source: folge der Installationsanleitung, um loszulegen.

Über externe Integrationen​

Supervision hôte ist eine externe Integration: eine Community-Integration, die als Docker-Container verpackt und auf GitHub veröffentlicht wird. Gladys installiert sie mit einem Klick und führt sie in einer vom Kern isolierten Sandbox aus. Sie wird von prohand veröffentlicht und gepflegt, nicht vom Gladys-Kernteam.

Abonniere den Newsletter von Gladys Assistant

Ein paar E-Mails im Monat zu neuen Releases und Neuigkeiten aus dem Projekt. Verschickt von Pierre-Gilles Leymarie, dem Gründer des Projekts. Jederzeit abbestellbar 🙂