Die Open-Source-Monitoringumgebung LibreNMS kommt, anders als ihr Vorläufer Observium, ohne Kosten durch die Hintertür daher. Insbesondere Hardware lässt sich mit dem Werkzeug gut überwachen und dank Auto-Discovery skaliert das Tool auch in sehr großen Umgebungen mit einer Vielzahl an Geräten. Zudem bietet die Software flexible Dashboards und Widgets für spezielle Ansichten. Und findet LibreNMS einen Grund zur Beunruhigung, alarmiert es auf zahlreichen Wegen.
LibreNMS [1] verspricht flexibles Netzwerk- und Systemmonitoring und kombiniert dabei divergierende Funktionen von Tools wie Nagios und Cacti. Für die Software spricht zudem, dass im Unterschied zu ihrem Vorläufer Observium keine jährlichen Lizenzgebühren für Zusatzfunktionen beziehungsweise Services wie zeitnahe Updates, regelbasiertes Gruppieren und Skalierbarkeit über mehrere Server anfallen. Das Monitoring mit LibreNMS vereinfacht sich dank der Auto-Discovery-Funktion und über das webbasierte Interface stehen Ihnen vielfältige Anpassungsmöglichkeiten bezüglich der zu visualisierenden Informationen zur Verfügung. Der Auto-Update-Mechanismus sorgt zudem dafür, dass die Monitoringumgebung immer auf dem neuesten Stand ist. Doch bevor es dazu kommt, wollen wir die Software zunächst in Betrieb nehmen.
Erste Geräte integrieren
Ein wesentlicher Pluspunkt von LibreNMS ist, dass es die Entwickler Administratoren wirklich einfach machen, die Umgebung einer ersten Evaluierung zu unterziehen. Sie stellen die notwendigen Installationspakete für Ubuntu 20.04/22.4, CentOS8 und Debian 11 ebenso zur Verfügung wie Docker- und VM-Images und ein Online-Demo [2].
Wenn Sie sich für eine lokale Installation entscheiden, erfolgt der Zugriff auf LibreNMS über die URL "http://localhost: 8080". Die Zugangsdaten definieren Sie während des Konfigurationsvorgangs. Einzig bei der Verwendung der virtuellen Maschinen sind die Credentials bereits vordefiniert (Benutzername: "librenms", Password: "D32fwefwef"). Die weiteren administrativen Schritte vereinfachen sich, indem Sie die GUI-Sprache über die Benutzereinstellungen auf Deutsch setzen. Auch wenn die Oberfläche nicht durchgängig lokalisiert ist, erleichtert dies doch die meisten Konfigurationsschritte.
LibreNMS [1] verspricht flexibles Netzwerk- und Systemmonitoring und kombiniert dabei divergierende Funktionen von Tools wie Nagios und Cacti. Für die Software spricht zudem, dass im Unterschied zu ihrem Vorläufer Observium keine jährlichen Lizenzgebühren für Zusatzfunktionen beziehungsweise Services wie zeitnahe Updates, regelbasiertes Gruppieren und Skalierbarkeit über mehrere Server anfallen. Das Monitoring mit LibreNMS vereinfacht sich dank der Auto-Discovery-Funktion und über das webbasierte Interface stehen Ihnen vielfältige Anpassungsmöglichkeiten bezüglich der zu visualisierenden Informationen zur Verfügung. Der Auto-Update-Mechanismus sorgt zudem dafür, dass die Monitoringumgebung immer auf dem neuesten Stand ist. Doch bevor es dazu kommt, wollen wir die Software zunächst in Betrieb nehmen.
Erste Geräte integrieren
Ein wesentlicher Pluspunkt von LibreNMS ist, dass es die Entwickler Administratoren wirklich einfach machen, die Umgebung einer ersten Evaluierung zu unterziehen. Sie stellen die notwendigen Installationspakete für Ubuntu 20.04/22.4, CentOS8 und Debian 11 ebenso zur Verfügung wie Docker- und VM-Images und ein Online-Demo [2].
Wenn Sie sich für eine lokale Installation entscheiden, erfolgt der Zugriff auf LibreNMS über die URL "http://localhost: 8080". Die Zugangsdaten definieren Sie während des Konfigurationsvorgangs. Einzig bei der Verwendung der virtuellen Maschinen sind die Credentials bereits vordefiniert (Benutzername: "librenms", Password: "D32fwefwef"). Die weiteren administrativen Schritte vereinfachen sich, indem Sie die GUI-Sprache über die Benutzereinstellungen auf Deutsch setzen. Auch wenn die Oberfläche nicht durchgängig lokalisiert ist, erleichtert dies doch die meisten Konfigurationsschritte.
LibreNMS ist standardmäßig so konfiguriert, dass sich die Umgebung automatisch aktualisiert. Sollten Sie ein Update manuell vornehmen wollen, verwenden Sie als Benutzer "librenms" den Befehl ./daily.sh. Grundsätzlich können Sie den Update-Mechanismus über die Web-GUI in den globalen Einstellungen unter "Updates" deaktivieren. Allerdings raten die Entwickler davon ab, da das "Daily"-Skript nicht nur neueste Systemkomponenten einspielt, sondern auch weitere Vorgänge wie beispielsweise eine Datenbankbereinigung ausführt.
Um neue Infrastrukturkomponenten in das Monitoring zu integrieren, fügen Sie diese manuell über die Web-GUI beziehungsweise CLI sowie den Auto-Discovery-Mechanismus hinzu. Um die ersten Geräte über die GUI einzurichten, navigieren Sie zu "Geräte / Gerät hinzufügen". LibreNMS verlangt die Angabe des Hostnamens beziehungsweise der IP-Adresse sowie verschiedene SNMP-spezifische Angaben wie die Version und den Port.
Alternativ greifen Sie zur CLI via SSH. Für das Anlegen eines neuen Hosts verwenden Sie folgenden Befehl im Verzeichnis Ihrer LibreNMS-Installation:
Wollen Sie beispielsweise mithilfe von SNMP v2c den Host "meinhost.server.de" in der SNMP-Community "Mein_Unternehmen" überwachen, lautet der entsprechende Befehl:
LibreNMS unterstützt auch sogenannte Ping-only-Geräte, bei denen nur die Verfügbarkeit und Antwortzeit relevant ist. Auch diese können Sie über die Web-GUI einrichten. Dazu deaktivieren Sie die SNMP-Verwendung. LibreNMS visualisiert bei diesen Geräten lediglich den ICMP-Response-Graph.
Devices gruppieren
Die Verwaltung unterschiedlicher Gerätetypen vereinfacht sich mithilfe der Gruppierungsfunktion, mit der Sie verschiedene Typen bündeln. LibreNMS kennt statische und dynamische Gruppen: Für die dynamische Gruppierung verwenden Sie den Regeleditor, der dafür Informationen der MySQL-Datenbank nutzt. Wenn Sie beispielsweise für den Host-Namen das Format "dcX.[<Gerätetyp>].server.de" verwenden, wählen Sie im Auswahlmenü den Eintrag "devices. hostname". Bei der dynamischen Konfiguration kommen zudem reguläre Ausdrücke wie "equal", "not equal" et cetera zur Geräteauswahl zum Einsatz.
Das Procedere bei der statischen Gruppierung ist einfacher: Hier geben Sie lediglich die Host-Namen an und mit "Speichern" sichern Sie die Gruppenkonfiguration. Der Vorteil dieser Gruppierung ist, dass Sie so den verschiedenen Gruppen über das Alert Mapping individuelle Regeln für die Ausgabe von Warnhinweisen zuordnen können.
Nachdem Sie die ersten Geräte angelegt haben, erfahren Sie über den Menübefehl "Geräte / Alle Geräte" den zugehörigen Zustand sowie die erfassten Metriken. Aus der tabellarischen Übersicht heraus stehen Ihnen verschiedene Aktionen zur Verfügung, um beispielsweise die Host-spezifischen Details einzusehen oder eine Telnet-Verbindung herzustellen. In der Praxis erweisen sich die Auswahlmenüs zur Beschränkung der tabellarischen Ansicht und die Suchfunktion durchaus als nützlich.
Über die webbasierte Schnittstelle stehen Ihnen weitere wichtige Funktionen zur Verfügung. Die Stärken von LibreNMS liegen zwar im Hardwaremonitoring, allerdings können Sie auch beliebige Dienste im Auge behalten. Dazu führen Sie "Service / Dienst hinzufügen" aus und bestimmen im zugehörigen Konfigurationsdialog das Device und den Prüftyp. Der Umgang mit den Services vereinfacht sich mit der Template-Funktion, die Prüfungen ganzer Gerätegruppen erlaubt. Über die Web-GUI haben Sie über das Menü "Gesundheit" Zugriff auf die Zustände der Arbeitsspeicher, der Prozessoren und der Speichermedien.
Bild 1: LibreNMS erfasst zu den überwachten Geräten eine Vielzahl von Informationen und bietet unterschiedliche Visualisierungs- und Interaktionsmöglichkeiten.
Eigenes Dashboard konfigurieren
Nachdem Sie die ersten Hosts für die Überwachung vorgesehen haben, wollen Sie natürlich auch wissen, wie es um diese bestellt ist. Hierfür stellt Ihnen LibreNMS umfangreiche Dashboard-Funktionen zur Verfügung. Sie haben die Option, unterschiedliche Übersichten für verschiedene Aufgaben anzulegen und diese individuell mit einer Vielzahl an Widgets zu befüllen. All dies erfolgt über das Menü "Übersicht", mit dem Sie neue Darstellungen generieren und bestehende mit den gewünschten Modulen befüllen. Mit "Übersicht / Show Dashboard Editor" wechseln Sie in den Bearbeitungsmodus. Um das aktuelle Dashboard funktional zu erweitern, klicken Sie auf das Stiftsymbol, ein neues Dashboard legen Sie mit dem grün hinterlegten Pluszeichen an. Eine neu erzeugte Ansicht müssen Sie mit Berechtigung versehen, Sie haben die Wahl zwischen drei Optionen:
- "Private": Das Dashboard lässt sich lediglich von dem anlegenden Benutzer anzeigen und bearbeiten.
- "Shared (Read)": Dritte können die Dashboard-Informationen einsehen, allerdings keine Änderungen an der Konfiguration vornehmen.
- "Shared": Erlaubt allen Benutzern die Anpassung der Ansicht.
Um eine Dashboard-Konfiguration zum Standard zu machen, öffnen Sie die Benutzereinstellungen und wählen unter "Preferences" im Auswahlmenü "Dashboard" die präferierte Zusammenstellung aus. Über das Widget-Menü können Sie sich die verschiedenen Module zusammenstellen, die Ihrem Informationsbedürfnis entsprechen.
Auto-Discovery einrichten und nutzen
Um LibreNMS und seine Spezifika kennenzulernen, ist das manuelle Anlegen von Hosts sicherlich sinnvoll. Doch bei größeren Umgebungen ist diese Vorgehensweise wenig effektiv und zudem fehleranfällig. Sie erleichtern sich die Arbeit, indem Sie auf die Auto-Discovery-Funktion zurückgreifen. LibreNMS unterstützt verschiedene Erkennungsmethoden, die es standardmäßig alle sechs Stunden anwendet.
Im ersten Schritt sind dazu Anpassungen der Konfigurationsdatei "config.php" nötig. Sie können sich insbesondere SNMP v1, v2c und v3 bedienen. Um die SNMP-Details für Version 1 und 2 zu definieren, erweitern Sie die Konfigurationsdatei mit
Damit Sie nicht wahllos Systeme in Ihr Monitoring integrieren, ist die Kenntnis der Subnetze zu definieren:
lnms config:set nets.+ '192.168.0.0/24'
lnms config:set nets.+ '172.2.4.0/22'
Sie können auch Geräte, die nicht durch den Auto-Discovery-Mechanismus erfasst werden sollen, gezielt ausschließen und dort beispielsweise einen Agenten installieren. Hier ein Beispiel für eine entsprechende Ausschlusskonfiguration:
Bei der Geräteerkennung setzt LibreNMS standardmäßig nicht auf IP-Adressen, sondern sucht nach Reverse-DNS-Namen. Möchten Sie dennoch auch die IP-basierte Erkennung verwenden, aktivieren Sie den zugehörigen Erkennungsmechanismus mit der Option "true":
$config['discovery_by_ip'] = true;
Für das automatische Erkennen von Netzwerkgeräten greift LibreNMS auf verschiedene Methoden zurück, insbesondere auf ARP, XDP, OSPF, BGP und SNMP-Scans. Sie alle sind standardmäßig in der Konfigurationsdatei aktiviert.
Bild 2: Der Regeleditor bietet eine enorme Funktions- und Konfigurationsvielfalt.
Erweitertes Monitoring
Die SNMP-basierten Prüfungen liefern Ihnen einen ersten Eindruck vom Zustand einer Netzwerkumgebung. Doch wie ist es um die unternehmenskritischen Server und Anwendungen bestellt? Schließlich wollen Sie ja sichergehen, dass beispielsweise der Webserver, auf dem die Unternehmensanwendungen laufen, seinen Dienst verrichtet. Für diese Anforderung bietet LibreNMS drei Lösungen: Sie können eine direkte Verbindung zu einer solchen Applikation herstellen, sie können die Funktionalität des "snmpd" erweitern oder zu einem Agenten greifen.
Mithilfe der Auto-Discovery-Funktion vereinfacht sich das Monitoring, doch wenn Sie ein spezifisches Informationsbedürfnis haben oder relevante Clientinformationen nicht von außen ablesbar sind, verspricht der Agenteneinsatz Abhilfe. Die gute Nachricht dabei: Sie können Anwendungen auch nach dem Anlegen eines Hosts in den Überwachungsprozess integrieren.
Das erweiterte SNMP-Monitoring ist standardmäßig bei allen Unix-basierten Plattformen aktiviert. Mithin können Sie beispielweise bei einem Debian-System ohne weiteres die dort ausgeführten Datenbank-, Mail- und Webserver überwachen. Dabei ist zu beachten, dass die erweiterte Prüfung als snmpd-Benutzer ausgeführt wird, der allerdings ein unprivilegierter Benutzer sein kann. In diesem Fall müssen Sie zu "sudo" greifen. In den Device-Einstellungen, die über das Zahnradsymbol des Geräteeintrags verfügbar sind, können Sie über die Moduleinstellungen die zu überwachenden Anwendungen aktivieren.
Der LibreNMS-Agent für Linux [3] sammelt Daten von Remote-Systemen und greift dabei auf die Checkmk-Software zurück. Das zugehörige Prüfskript ist im Agentenpaket enthalten und inzwischen ist auch eine Windows-Variante verfügbar.
Bild 3: LibreNMS kennt zahlreiche Wege der Alarmierung bei kritischen Ereignissen.
Alarmierung einrichten
Genau genommen ist beim Monitoring die Überwachung von Hard- und Software nur ein Aufgabenbereich. Denn die zielgenaue Ausgabe von Warnungen über kritische Zustände ist fast genauso wichtig wie die eigentliche Überwachung. Für die Alert-Konfiguration steht Ihnen der Regeleditor zur Verfügung, auf den Sie über das Menü "Alarme / Alarm Regeln" zugreifen. LibreNMS erlaubt theoretisch sehr komplexe Regeln, die auf mathematischen Kalkulationen oder MySQL-Abfragen basieren. Grundsätzlich müssen Ihre Regeln jedoch aus mindestens drei Elementen bestehen: Einer Entität, einer Bedingung und einem Wert. Als mögliche Bedingungen kommen logische Operatoren zum Einsatz.
Um eine erste Regel anzulegen, folgen Sie in der Regelverwaltung dem Link "Create new alert rule". Alternativ können Sie mit "Create rule from collection" eine bestehende Regelkonfiguration als Basis für eine neue Regel verwenden. Weisen Sie dieser eine Bezeichnung und mit dem Auswahlmenü "Severity" einen Schweregrad zu. Mit "Max alerts" bestimmen Sie die maximale Anzahl der für ein Ereignis verwendeten Warnmeldung. Der Wert "-1" steht dabei für unbegrenzt viele Meldungen.
Auf der Registerkarte "Advanced" können Sie eine benutzerdefinierte SQL-Abfrage konfigurieren. Dazu aktivieren Sie zunächst die Option "Override SQL" und geben in das Query-Feld die SQL-Abfrage ein. Wenn die durchschnittliche CPU-Auslastung den Wert 30 Prozent überschreitet, lautet die Abfrage wie folgt:
SELECT *,AVG(processors.processor_usage) as cpu_avg FROM devices, processors WHERE (devices. device_id = ? AND devices.device_id = processors.device_id) AND (devices.status = 1 && (devices.disabled = 0 && devices.ignore = 0)) = 1 HAVING AVG(processors.processor_usage) > 30
Besonders einfach ist die Konfiguration, wenn ein Gerät ausgefallen ist. Dann lautet der entsprechende Code devices.status != 1. Soll bei einer hohen CPU-Auslastung pro Kern (nicht für alle), eine Warnung erfolgen, gelingt das so:
macros.device_up = 1 AND processors.processor_usage >= 90
Auch bei der Wahl der möglichen Benachrichtigungsoptionen zeigt sich LibreNMS im Vergleich zu vielen anderen Produkten flexibel. Informiert werden standardmäßig der in der SNMP-Konfiguration hinterlegte "SysContact" und der jeweilige LibreNMS-Benutzer einer Alarmkonfiguration. Letztere gestaltet sich recht einfach: Führen Sie "Alarme / Alarm-Übertragungswege" aus und legen Sie mit "Create alert transport" eine Benachrichtigungskonfiguration an. Im Auswahlmenü "Transport type" stehen Ihnen mehr als 40 Transportwege zur Verfügung. Mit der Option "mail" erfolgt eine Benachrichtigung an die hinterlegte E-Mail-Adresse – alternativ sind auch Benachrichtigungen per Signal oder SMS möglich.
Damit der Nachrichtenversand funktioniert, müssen Sie die entsprechenden Dienste in der LibreNMS-Konfigurationsdatei hinterlegen. Im Falle des E-Mail-Versands ist das allerdings auch über die Web-GUI in den globalen Einstellungen möglich. Auf der Registerkarte "Alarmierung" wählen Sie "Sendmail" oder "SMTP"; wenn Sie sich für die SMTP-Option entscheiden, hinterlegen Sie die IP-Adresse und die Zugangsdaten des SMTP-Servers.
Verfügbare Widgets
In der aktuellen LibreNMS-Version stehen Ihnen 20 verschiedene Widgets zur Verfügung:
- Alerts: Zeigt alle Warnmeldungen an.
- Alert History: Listet die historischen Warnungen.
- Altert History Stats: Statistik historischer Warnungen.
- Availability Map: Zeigt alle Geräte mit farbigen Kacheln an und erlaubt, alle Dienste und ignorierten/deaktivierten Geräte aufzulisten.
- Component Status: Zeigt alle Komponenten und deren Status.
- Device Summary Horizontal/Vertical: Gesamtzahl der Geräte.
- Device Types: Alle Ereignisse der Geräte.
- Eventlog: Gibt die Eventlog-Protokolldatei aus.
- Globe Map: Visualisiert eine Globuskarte und die Standorte.
- Graph: Generiert Diagramme von Geräten.
- Graylog: Zeigt alle Syslog-Einträge von Graylog an.
- External Images: Erlaubt externe Bildern im Dashboard.
- Notes: Zur Verwendung von HTML-Tags und eingebettete Links zu externe Webseiten. Dient auch als digitaler Notizblock.
- Server Stats: Visualisiert die CPU-, Arbeitsspeicher- und Speicherauslastung. Es werden nur Geräte vom Typ "Server" gelistet.
- Syslog: Zeigt alle Syslog-Einträge an.
- Top Devices: Listet die Top-Geräte nach Datenverkehr, Betriebs-/Antwortzeit, Poll-Dauer, Prozessor-/Speicherauslastung oder Speichernutzung auf.
- Top Errors: Führt die häufigsten Fehlermeldungen auf.
- Top Interfaces: Listet die Schnittstellen in Bezug auf die Traffic-Auslastung auf.
- World Map: Zeigt die Standorte Ihrer Geräte an.
Performance-Tuning
PHP-basierte Umgebungen gelten nicht gerade als die leistungsstärksten oder schnellsten. Was bei kleineren Landschaften eher weniger ins Gewicht fällt, wiegt bei größeren umso schwerer. Daher tun Sie gut daran, etwaige Optimierungspotenziale zu nutzen. Die LibreNMS-Entwickler raten insbesondere dazu, den Daemon "rrdcached" einzusetzen. Dieses Tool empfängt Aktualisierungen bestehender RRD-Dateien, akkumuliert diese, wenn genügend Daten empfangen wurden oder eine definierte Zeit verstrichen ist, und schreibt die Aktualisierungen in die RRD-Datei. Damit reduziert sich die Last deutlich.
Um in den Genuss dieser Serverentlastung zu gelangen, müssen Sie das "rrd-chached"-Paket zunächst installieren:
apt -q install rrdcached
Sie müssen zudem die LibreNMS-Konfiguration bearbeiten:
lnms config:set rrdtool_version '1.5.5'
Unter "https://librenms_system/poller/ rrdtool" aktivieren Sie das Tool und über "http://librenms_system/poller/" stehen Ihnen weitere Anpassungsmöglichkeiten für die Serverabfragen zur Verfügung, die einen Beitrag zur Reduzierung der Server- und der Netzwerklast leisten.
Da LibreNMS alle gesammelten Daten in einer MySQL-Datenbank sammelt, raten die Entwickler dazu, das Tuning-Skript "MySQL Tuner" [5] täglich auszuführen. Ein weiterer Tipp hinsichtlich MySQL lautet, "my.cnf" in der "[mysqld]"-Gruppe wie folgt zu konfigurieren:
innodb_flush_log_at_trx_commit = 0
Anstelle des Werts "0" können Sie auch "2" verwenden. Daraus ergibt sich ein deutlicher Gewinn bei der E/A-Leistung, allerdings auf die Gefahr hin, dass bei einem Absturz des MySQL-Servers bis zu einer Sekunde MySQL-Daten verlorengehen.
Fazit
Alle Achtung – LibreNMS vereint eine beeindruckende Funktionalität und Flexibilität und ist dabei gut zu beherrschen. Funktional lässt die Umgebung kaum Wünsche offen. Einzig die Alarmkonfiguration ist ein wenig trickreich, weil sich Nutzer mit den Datenbankdaten herumschlagen müssen und nicht immer sofort klar ist, welche Device-Funktion sich hinter welchem Datenbankelement verbirgt. Aber auch das ist kein Problem, das sich nicht nach kurzer Einarbeitungszeit beherrschen ließe.