Zum Hauptinhalt springen

LibreNMS Smart-Home-Integration, kostenlos und Open Source

LibreNMS-Integration für Gladys Assistant

Deine LibreNMS-Geräte, -Alarme und -Ports in Gladys, mit Szenen, wenn etwas ausfällt.

Hol deine Netzwerküberwachung LibreNMS in Gladys: Jedes Gerät, das LibreNMS überwacht, wird ein Gladys-Gerät (online, Betriebszeit, aktive Alarme, Gesundheitssensoren), die Ports deiner Wahl bekommen ein eigenes Gerät (online, eingehende und ausgehende Rate), ein Gerät „LibreNMS“ zählt die Geräte offline und die Alarme, und deine Szenen reagieren, wenn ein Gerät oder ein Port ausfällt, zurückkommt, oder wenn ein Alarm ausgelöst oder behoben wird. Eine Szene kann auch die Alarme eines Geräts bestätigen, und ein Dashboard-Widget zeigt, was nicht stimmt.

Die Integration liest die API von LibreNMS in deinem lokalen Netzwerk, mit einem API-Token. Nichts läuft über eine Cloud.

Getestet mit einem echten LibreNMS 26.9.1 (offizielles Docker-Image), mit einem SNMP-Agenten, der gestoppt und wieder gestartet wurde: Gerät offline und zurück, Alarm ausgelöst, bestätigt und behoben. Gesundheitssensoren echter Hardware und der Verbindungsabbruch eines echten Switch-Ports wurden nur anhand der Form der API-Antworten geprüft. Rückmeldungen sind willkommen: github.com/guim31/gladys-librenms/issues.

Was du brauchst​

  • Gladys Assistant 5.1.0 oder neuer.
  • LibreNMS mit seiner API (jede aktuelle Version), vom Gladys-Rechner aus erreichbar (die Adresse seiner Weboberfläche).
  • Einen LibreNMS-Benutzer für Gladys. Die Rolle global-read genügt zum Lesen; die Szenen-Aktion zum Bestätigen braucht eine Rolle, die Alarme ändern darf (admin).

Erste Schritte​

1. Ein API-Token erstellen​

Öffne in LibreNMS das Zahnrad-Menü → API → API Settings, klicke auf Create API access token, wähle den Benutzer, füge eine Beschreibung hinzu und kopiere das Token.

2. Die Integration konfigurieren​

Öffne in Gladys die Konfiguration der Integration:

  • Adresse von LibreNMS: die Adresse, mit der du LibreNMS öffnest, z. B. http://192.168.1.2:8000 oder https://librenms.example.com. Eine aus dem Browser kopierte Seite (…/devices) funktioniert auch.
  • API-Token: das Token aus Schritt 1.
  • Gerätegruppen (optional): Namen von LibreNMS-Gerätegruppen, durch Kommas getrennt. Leer: alle Geräte, die weder deaktiviert noch ignoriert sind.
  • Zu verfolgende Ports (optional): Paare Gerät:Port durch Kommas getrennt, das Gerät per Hostname (oder Systemname oder Anzeigename), der Port per Name in LibreNMS, z. B. switch:ge-0/0/1, nas:eth0. Gerät:* verfolgt alle Ports des Geräts, die administrativ aktiv sind. Höchstens 20 Ports.
  • Aktualisierungsintervall: 30 Sekunden bis 5 Minuten (standardmäßig 1 Minute).
  • Bestätigen aus Szenen erlauben: deaktiviere es, um die Aktion zum Bestätigen auszuschalten.
  • Selbstsignierte Zertifikate akzeptieren: für eine https://-Adresse, deren Zertifikat auch dein Browser nicht anerkennt.
  • Sprache der Namen: Sprache der Funktionsnamen und der Szenen-Ergebnisse.

Speichere und klicke auf Verbindung testen: Der Bericht zeigt die Version von LibreNMS, die Zahl der Geräte, der Geräte offline, der aktiven Alarme und die verfolgten Ports, die nicht gefunden wurden.

3. Die Geräte hinzufügen​

Öffne den Tab Entdecken der Integration und lege die Geräte und Ports an, denen du folgen willst, dazu das Gerät „LibreNMS“ für die Summen. Die Szenen-Auslöser gelten für alle Geräte, in Gladys angelegt oder nicht.

Die Geräte​

Jedes Gerät von LibreNMS:

FunktionWert
Online1 online, 0 offline, wie LibreNMS es sieht (Ping, SNMP)
Betriebszeitin Tagen (nur SNMP-Geräte)
Aktive AlarmeZahl der aktiven Alarme, bestätigte inbegriffen
Gesundheitssensorenbis zu 10: Temperaturen, Lüfter (rpm), Last, Leistung, Spannung, Strom, Feuchtigkeit

Die Gesundheitssensoren sind die, die LibreNMS auf dem Gerät entdeckt hat, mit ihrem Namen aus LibreNMS; Temperaturen zuerst.

Jeder verfolgte Port:

  • Online: 1, wenn die Verbindung steht
  • Eingehende Rate, in Mbit/s
  • Ausgehende Rate, in Mbit/s

Das Gerät LibreNMS:

  • Geräte offline
  • Aktive Alarme
  • Kritische Alarme

Werte werden nur an Gladys gesendet, wenn sie sich ändern, sonst alle 6 Stunden. Solange ein Gerät offline ist, behalten seine Betriebszeit und seine Ports ihre letzten Werte, und sein Badge zeigt es als nicht erreichbar.

Dashboard​

Das Widget LibreNMS-Übersicht zeigt drei Kacheln — die Geräte offline, die aktiven Alarme, die noch unbestätigten — und eine Liste: zuerst die Geräte offline, dann die Alarme, die schwersten zuerst (Regel, Gerät, ✓ sobald bestätigt). Höchstens zehn Zeilen. Aktualisieren liest LibreNMS neu. Wähle in seinen Einstellungen Geräte, um nur deren anzuzeigen (leer: alle).

Szenen​

Auslöser​

  • Ein Gerät fällt aus: LibreNMS sieht ein Gerät offline. Filter: Geräte (leer: beliebig). Variablen: Gerätename, Hostname, Grund (icmp, snmp).
  • Ein Gerät ist zurück: Ein offline gesehenes Gerät ist wieder online, mit der Dauer in Minuten.
  • Ein Alarm wird ausgelöst: Eine LibreNMS-Alarmregel trifft auf ein Gerät zu. Filter: Geräte, Schweregrade (Warnung, Kritisch, OK). Variablen: Gerätename, Alarmregel, Schweregrad (als Wort und als Schlüssel), Regel-ID, Alarm-ID.
  • Ein Alarm ist behoben: Ein Alarm ist vorbei, mit denselben Filtern und Variablen, dazu seine Dauer in Minuten.
  • Ein verfolgter Port fällt aus: Ein verfolgter Port verliert seine Verbindung (nicht, wenn der Administrator ihn abschaltet, und nicht, solange sein Gerät offline ist). Variablen: Gerätename, Port, Port-Beschreibung, Status. Der Filter gilt für die Port-Geräte.
  • Ein verfolgter Port ist zurück: Die Verbindung steht wieder, mit der Dauer in Minuten.
  • LibreNMS antwortet nicht mehr: Die API antwortet zweimal hintereinander nicht (Variablen: Adresse von LibreNMS, Fehler).

Was beim Start der Integration schon da ist, wird nicht gemeldet. Eine Änderung während eines Neustarts von Gladys oder der Integration wird beim nächsten Lesen einmal gemeldet. Das Bestätigen eines Alarms behebt ihn nicht und löst ihn nicht erneut aus.

Aktionen​

  • Alarme eines Geräts bestätigen: bestätigt die aktiven Alarme des Geräts in LibreNMS, mit einer Notiz in ihrem Verlauf (leer: „In Gladys bestätigt“). LibreNMS benachrichtigt erneut, wenn ein Alarm schlimmer wird. Gibt die Zahl der bestätigten Alarme zurück. Abschaltbar mit „Bestätigen aus Szenen erlauben“.
  • Netzwerkstatus lesen: zählt und listet die Geräte offline und die aktiven Alarme eines Geräts oder aller für die nächsten Aktionen: Geräte offline (Zahl und Namen), Alarme, unbestätigte, kritische, höchster Schweregrad und die Liste „Gerät: Regel“.

Szenen-Ideen​

  • Der Router ist ausgefallen: Auslöser „Ein Gerät fällt aus“ auf dem Router → die Flurlampe rot schalten und \{\{triggerEvent.data.name\}\} ist offline senden.
  • Nur kritische Alarme: Auslöser „Ein Alarm wird ausgelöst“, Schweregrad Kritisch → Nachricht {{triggerEvent.data.name}}: {{triggerEvent.data.rule}}.
  • Der Uplink des Switches: switch:ge-0/0/1 verfolgen, Auslöser „Ein verfolgter Port fällt aus“ → Nachricht, und „Ein verfolgter Port ist zurück“ → „Zurück nach {{triggerEvent.data.duration_minutes}} min“.
  • Vom Sofa aus gesehen: Ein Dashboard-Button startet „Alarme eines Geräts bestätigen“ für das NAS.

Fehlerbehebung​

  • „API-Token abgelehnt“: Prüfe das Token in API Settings (nicht deaktiviert) und ob sein Benutzer noch existiert.
  • „LibreNMS antwortet nicht“: Prüfe die Adresse vom Gladys-Rechner aus. localhost ist der Container der Integration selbst: Nimm die IP-Adresse des LibreNMS-Rechners.
  • „Keine LibreNMS-API unter dieser Adresse“ oder „die Adresse leitet um“: Die Adresse führt nicht zu LibreNMS; /api/v0 muss an seiner Wurzel (oder unter seinem Unterpfad) antworten.
  • „Zertifikat abgelehnt“: Aktiviere „Selbstsignierte Zertifikate akzeptieren“, oder nimm die http://-Adresse im lokalen Netzwerk.
  • „Keine Gerätegruppe mit diesen Namen“: Die Namen müssen denen in LibreNMS entsprechen.
  • Ein Gerät fehlt: Es ist in LibreNMS deaktiviert oder ignoriert, außerhalb der Gerätegruppen, oder der Benutzer des Tokens sieht es nicht.
  • Ein Port wird nicht gefunden: „Verbindung testen“ listet die Paare, die es nicht zuordnen konnte; nimm den Portnamen, den LibreNMS anzeigt (ifName).
  • Das Bestätigen wird abgelehnt: Der Benutzer des Tokens braucht eine Rolle, die Alarme ändern darf (admin). Ein global-read-Benutzer bekommt einen Fehler.
  • Ein Wert hinkt hinterher: LibreNMS fragt seine Geräte alle 5 Minuten ab; ein kürzeres Intervall sieht Änderungen nur früher.

Grenzen​

  • Ein LibreNMS-Server pro Integration.
  • Keine Prozessor- und Speicherauslastung: Die API liefert sie Gerät für Gerät, was die Anfragen vervielfachen würde; die „load“-Sensoren bleiben, wenn LibreNMS sie hat.
  • Höchstens 10 Gesundheitssensoren pro Gerät, 20 verfolgte Ports, 30 Szenen-Ereignisse pro Lesevorgang (ein Ausfall kann Dutzende Geräte auf einmal treffen; der Rest folgt bei den nächsten Lesevorgängen).
  • Lüftergeschwindigkeiten haben in Gladys keine Einheit: „(rpm)“ beendet ihren Namen.
  • Kein Kontingent auf der LibreNMS-API: Jeder Lesevorgang sendet vier oder fünf Anfragen (eine mehr pro Gerätegruppe), unabhängig von der Zahl der Geräte.

Nicht mit dem LibreNMS-Projekt verbunden.

Konfigurationseinstellungen​

Diese Einstellungen fragt LibreNMS in seinem Konfigurationsbildschirm in Gladys ab.

EinstellungTypPflichtfeldBeschreibung
Dein LibreNMS-ServersectionNeinÖffne in LibreNMS das Zahnrad-Menü → API → API Settings, erstelle ein Token und füge es unten mit der Adresse von LibreNMS ein. Lege dann die Geräte, denen du folgen willst, im Tab „Entdecken“ an: Die Szenen-Auslöser gelten für alle, angelegt oder nicht.
Adresse von LibreNMSstringJaDie Adresse, mit der du LibreNMS im Browser öffnest.
API-TokensecretJaEin Benutzer mit der Rolle global-read genügt; zum Bestätigen braucht es eine Rolle, die Alarme ändern darf (admin).
Gerätegruppen (optional)stringNeinNamen durch Kommas getrennt. Leer: alle Geräte, die weder deaktiviert noch ignoriert sind.
Zu verfolgende Ports (optional)stringNeinPaare Gerät:Port durch Kommas getrennt (Gerät per Hostname, Port per Name), Gerät:* für alle aktiven Ports. Höchstens 20.
OptionensectionNein
AktualisierungsintervallselectNeinWie oft LibreNMS gelesen wird (4 oder 5 Anfragen). LibreNMS selbst fragt die Geräte alle 5 Minuten ab.
Bestätigen aus Szenen erlaubenbooleanNeinDeaktiviere es, um die Szenen-Aktion „Alarme eines Geräts bestätigen“ auszuschalten.
Selbstsignierte Zertifikate akzeptierenbooleanNeinNur für eine https://-Adresse, deren Zertifikat auch dein Browser nicht anerkennt.
Sprache der NamenselectNeinSprache der Funktionsnamen (beim Hinzufügen eines Geräts festgelegt) und der Szenen-Ergebnisse.

So installierst du LibreNMS in Gladys​

  1. Öffne in Gladys Integrationen: LibreNMS erscheint im Katalog neben den nativen Integrationen, mit einem Community-Badge.
  2. Klicke auf Installieren. Gladys lädt das Docker-Image (ghcr.io/guim31/gladys-librenms:1.0.0) 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/guim31/gladys-librenms.

LibreNMS 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​

LibreNMS 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 guim31 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 🙂