So installierst du die LibreNMS-Überwachungslösung auf Rocky Linux

LibreNMS ist ein Überwachungstool, das die automatische Erkennung mit mehreren Protokollen unterstützt, darunter SNMP, ARP, OSPF und BGP. Um Betriebssysteme zu überwachen, kannst du das SNMP-Protokoll verwenden, das auf den meisten Betriebssystemen verfügbar ist, darunter Linux, Windows und BSD.

Es gibt drei Versionen des SNMP-Protokolls: v1 und v2, die nur mit einem Community-Passwort gesichert sind, und das Protokoll v3, das Passwörter zur Authentifizierung und Verschlüsselung unterstützt. Für die Produktionsumgebung wird empfohlen, das SNMP-Protokoll v3 zu verwenden, das sicherer ist als v2 und v1.

In dieser Anleitung erfährst du, wie du das Überwachungsprogramm LibreNMS auf dem Rocky Linux Server installierst. Dieser Leitfaden umfasst die Installation des LEMP-Stacks (Nginx, MariaDB und PHP-FPM) und die grundlegende Konfiguration des SNMP-Dienstes.

Am Ende hast du die produktionsreife Überwachungslösung LibreNMS und kannst einfach einen neuen Host, Server oder ein Gerät zur Überwachung von LibreNMS hinzufügen.

Voraussetzungen

Um diese Anleitung zu erstellen, brauchst du die folgenden Voraussetzungen

  • Einen Rocky Linux Server – In diesem Beispiel wird Rocky Linux 8 verwendet.
  • Einen Nicht-Root-Benutzer mit sudo root/administrator-Rechten.
  • Einen lokalen Domainnamen für die lokale Bereitstellung.

Repositories einrichten

Bevor du mit der Installation der Pakete beginnst, richtest du nun die Repositories auf deinem Rocky Linux System ein. Du musst das EPEL-Repository (Extra Packages for Enterprise Linux) und das PHP-Remi-Repository hinzufügen.

Führe den folgenden dnf-Befehl aus, um das EPEL-Repository zu deinem System hinzuzufügen.

sudo dnf install epel-release

Gib Y ein, wenn du zur Bestätigung aufgefordert wirst, und drücke ENTER, um fortzufahren.

epel installieren

Als Nächstes führst du den folgenden dnf-Befehl aus, um das PHP Remi-Repository hinzuzufügen. Dieses Repository stellt mehrere PHP-Versionen zur Verfügung, darunter auch die neueste PHP-Version 8.1, die für die Installation von LibreNMS benötigt wird.

sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm

Gib nun Y ein und drücke ENTER, um fortzufahren.

remi repo hinzufügen

Nachdem das EPEL- und Remi-Repository hinzugefügt wurde, überprüfe es mit dem unten stehenden dnf-Befehl.

sudo dnf repolist

Du solltest sehen, dass das EPEL und Remi Repository hinzugefügt wurde und auf deinem Rocky Linux System verfügbar ist.

Repos prüfen

Installieren der Paketabhängigkeiten

Nachdem du die EPEL- und Remi-Repositories hinzugefügt hast, kannst du nun mit der Installation der Paketabhängigkeiten für LibreNMS beginnen. Dazu gehören der LEMP Stack, SNMP-Pakete und einige grundlegende Python-Abhängigkeiten.

Bevor du mit der Installation beginnst, führe den folgenden Befehl aus, um das PHP-Repository-Modul„remi-8.1“ zu aktivieren. Die neueste Version von LibreNMS benötigt mindestens PHP 8.

sudo dnf reset php
sudo dnf module enable php:remi-8.1

Gib y ein, um zu bestätigen und das PHP-Repository Remi 8.1 zu aktivieren.

php-Module zurücksetzen

Als nächstes führst du den folgenden dnf-Befehl aus, um die Paketabhängigkeiten für LibreNMS zu installieren. Wenn du aufgefordert wirst, die Installation zu bestätigen, gibst du y ein und drückst die ENTER-Taste, um fortzufahren und die Installation zu starten.

sudo dnf install bash-completion cronie fping git ImageMagick mariadb-server mtr net-snmp net-snmp-utils nginx nmap php-fpm php-cli php-common php-curl php-gd php-gmp php-json php-mbstring php-process php-snmp php-xml php-zip php-mysqlnd python3 python3-PyMySQL python3-devel python3-redis python3-memcached python3-pip python3-systemd rrdtool unzip

Abhängigkeiten installieren

Nachdem die Abhängigkeiten installiert sind, führe den folgenden Befehl aus, um einige Dienste wie Nginx, MariaDB, PHP-FPM und snmpd zu starten und zu aktivieren.

sudo systemctl enable nginx php-fpm mariadb snmpd
sudo systemctl start nginx php-fpm mariadb snmpd

Zu diesem Zeitpunkt werden einige grundlegende Dienste wie Nginx, MariaDB, PHP-FPM und snmpd beim Systemstart automatisch gestartet. Und alle diese Dienste laufen bereits.

start enable services

Firewalld einrichten

Für dieses Beispiel verwenden wir das Rocky Linux mit aktivierter Firewalld. Jetzt fügst du sowohl das HTTP- als auch das HTTPS-Protokoll zur Firewalld hinzu.

Führe den folgenden Befehl firewall-cmd aus, um die HTTP- und HTTPS-Dienste zur Firewalld hinzuzufügen. Du solltest die Ausgabemeldung„Erfolg“ erhalten, was bedeutet, dass die neue Regel hinzugefügt wurde.

sudo firewall-cmd --permanent --zone public --add-service http
sudo firewall-cmd --permanent --zone public --add-service https

Lade die Firewalld neu, um die neuen Änderungen zu übernehmen. Überprüfe dann den Status der Firewalld mit dem folgenden Befehl.

sudo firewall-cmd --reload
sudo firewall-cmd --list-all

Du erhältst die Ausgabe, dass sowohl das HTTP- als auch das HTTPS-Protokoll zur Firewalld hinzugefügt wurde.

firewalld einrichten

Herunterladen des LibreNMS-Quellcodes

In diesem Schritt lädst du den LibreNMS-Quellcode von GitHub herunter. Zuvor legst du jedoch einen neuen Benutzer„librenms“ an, der für die Ausführung der LibreNMS-Anwendung verwendet wird.

Führe den folgenden Befehl aus, um einen neuen Systembenutzer „librenms“ zu erstellen. Dieser Benutzer wird für die Ausführung der LibreNMS-Anwendung verwendet.

sudo useradd librenms -d /opt/librenms -M -r -s "$(which bash)"

Verschiebe nun dein Arbeitsverzeichnis in das Verzeichnis „/opt“ und lade den LibreNMS-Quellcode mit dem unten stehenden git-Befehl herunter. Du solltest nun ein neues Verzeichnis„/opt/librenms“ erhalten, das als LibreNMS-Installationsverzeichnis verwendet wird.

cd /opt
git clone https://github.com/librenms/librenms.git

librenms herunterladen

Ändere die Eigentümerschaft und die Rechte des LibreNMS-Installationsverzeichnisses„/opt/librenms„. Der Eigentümer des Installationsverzeichnisses sollte der Benutzer „librenms“ sein, und die Berechtigung 771 erlaubt es dem Benutzer, das Verzeichnis zu lesen, zu schreiben und auszuführen.

sudo chown -R librenms:librenms /opt/librenms
sudo chmod 771 /opt/librenms

Führe abschließend den folgenden Befehl aus, um die Zugriffskontrolllisten für einige LibreNMS-Verzeichnisse festzulegen. Damit erhält die Gruppe„librenms“ die Berechtigung, auf bestimmten LibreNMS-Verzeichnissen zu lesen, zu schreiben und auszuführen.

sudo setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/
sudo setfacl -R -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/

Einrichtung Eigentum acls

Installation der PHP-Abhängigkeiten für LibreNMS

Nachdem du den LibreNMS-Quellcode heruntergeladen und die richtigen Berechtigungen konfiguriert hast, installierst du nun die PHP-Abhängigkeiten für LibreNMS.

Melde dich mit folgendem Befehl als Benutzer „librenms“ an.

su - librenms

Installiere nun die PHP-Abhängigkeiten über das Installer-Skript wie unten beschrieben.

./scripts/composer_wrapper.php install --no-dev

Du siehst nun die Installation der PHP-Abhängigkeiten, die für LibreNMS benötigt werden. Du siehst auch die Installation der Python-Pakete für LibreNMS.

Abhängigkeiten installieren

Nachdem die Installation der PHP-Abhängigkeiten abgeschlossen ist, kannst du den Benutzer„librenms“ verlassen, indem du „Strg+d“ drückst oder den Befehl„exit“ eingibst.

PHP-FPM konfigurieren

In diesem Schritt konfigurierst du deine PHP-FPM-Installation für LibreNMS. Du änderst die Standardkonfiguration„/etc/php.ini“ und richtest einen speziellen PHP-FPM-Pool für LibreNMS ein.

Führe den folgenden Befehl aus, um die richtige Zeitzone für dein Rocky-Linux-System einzurichten.

sudo timedatectl set-timezone Europe/Stockholm

Bearbeite nun die PHP-Konfiguration„/etc/php.ini“ mit dem folgenden nano-Editor.

sudo nano /etc/php.ini

Entferne die Auskommentierung der Option „date.timezone“ und ändere den Wert mit deiner aktuellen Serverzeitzone.

date.timezone = Europe/Stockholm

Speichere die Datei und schließe den Editor, wenn du fertig bist.

Als Nächstes kopierst du die Standardkonfiguration des PHP-FPM-Pools„www.conf“ nach„librenms‘.conf„. In diesem Beispiel wirst du den speziellen PHP-FPM-Pool für das LibreNMS-Überwachungstool einrichten.

cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/librenms.conf

Bearbeite nun die PHP-FPM-Pool-Konfiguration‚/etc/php-fpm.d/librenms.conf‘ mit dem folgenden nano-Editor.

sudo nano /etc/php-fpm.d/librenms.conf

Ändere den Standard-Poolnamen von ‚[www]‘ in ‚[librenms]‚.

[librenms]

Ändere den Standardbenutzer und die Standardgruppe in„librenms„. Dadurch wird der PHP-FPM-Prozess als der Benutzer und die Gruppe„librenms“ ausgeführt.

user = librenms
group = librenms

Schließlich änderst du die Option listen in „/run/php-fpm-librenms.sock“. Damit wird die Sock-Datei für den PHP-FPM librenms-Pool angegeben.

listen = /run/php-fpm-librenms.sock

Speichere die Datei und beende den Editor, wenn du fertig bist.

Führe nun den folgenden systemctl-Befehl aus, um den PHP-FPM-Dienst neu zu starten und die neuen Änderungen anzuwenden.

sudo systemctl restart php-fpm

php-fpm einrichten

MariaDB Server konfigurieren

Nachdem du den PHP-FPM konfiguriert hast, richtest du nun den MariaDB-Datenbankserver ein und legst eine neue Datenbank und einen neuen Benutzer für LibreNMS an.

LibreNMS benötigt den MariaDB-Datenbankserver mit aktiviertem InnoDB. Also musst du ihn jetzt aktivieren. Dann erstellst du eine neue Datenbank und einen neuen Benutzer für LibreNMS.

Bearbeite die MariaDB-Serverkonfiguration „/etc/my.cnf.d/mariadb-server.cnf“ mit dem folgenden nano-Editor.

sudo nano /etc/my.cnf.d/mariadb-server.cnf

Füge die folgende Konfiguration unter dem Abschnitt ‚[mysqld]‘ ein.

[mysqld]
....
innodb_file_per_table=1
lower_case_table_names=0

Speichere die Datei und beende den Editor, wenn du fertig bist.

Führe nun den folgenden systemctl-Befehl aus, um den MariaDB-Dienst neu zu starten und die neuen Änderungen anzuwenden. Der MariaDB-Server läuft jetzt mit aktivierter InnoDB-Datenbank-Engine.

sudo systemctl restart mariadb

Als Nächstes meldest du dich mit dem Befehl mysql in der MariaDB-Shell an. Wenn du nach dem Passwort gefragt wirst, kannst du einfach ENTER drücken oder das MariaDB-Root-Passwort eingeben.

sudo mysql -u root -p

Führe die folgenden Abfragen aus, um eine neue Datenbank und einen neuen Benutzer für LibreNMS zu erstellen. In diesem Beispiel erstellst du eine neue Datenbank und den Benutzer„librenms“ und änderst das Datenbankpasswort mit deinem Passwort.

CREATE DATABASE librenms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
FLUSH PRIVILEGES;

Datenbank und Benutzer anlegen

Als Nächstes führst du die folgende Abfrage aus, um die Berechtigungen des Datenbankbenutzers[email protected] zu überprüfen.

SHOW GRANTS FOR [email protected];

Du solltest sehen, dass der Benutzer‚librenms’@localhost‘ Rechte für die Datenbank‚librenms‚ hat.

Rechte prüfen

Gib nun„exit“ ein, um dich von der MariaDB-Shell abzumelden.

Nginx Server Blöcke einrichten

Nachdem du den MariaDB-Server konfiguriert und die Datenbank und den Benutzer angelegt hast, erstellst du nun eine neue Nginx-Serverblockkonfiguration für LibreNMS.

Bevor du beginnst, solltest du sicherstellen, dass du dich für die lokale Domäne entschieden hast, die für LibreNMS verwendet werden soll. In diesem Beispiel soll das LibreNMS mit der Domain„librenms.hwdomain.io“ laufen.

Erstelle eine neue Nginx-Serverblock-Konfiguration„/etc/nginx/conf.d/librenms.conf“ mit dem folgenden nano-Editor.

sudo nano /etc/nginx/conf.d/librenms.conf

Füge die folgende Konfiguration in die Datei ein und achte darauf, dass du den Domainnamen durch deine Domain ersetzt.

server {
    listen      80;
    server_name librenms.hwdomain.io;
    root        /opt/librenms/html;
    index       index.php;
charset utf-8;
gzip on;
gzip_types text/css application/javascript text/javascript application/x-javascript image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon;

location / {
try_files $uri $uri/ /index.php?$query_string;
}

location ~ [^/]\.php(/|$) {
fastcgi_pass unix:/run/php-fpm-librenms.sock;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi.conf;
}

location ~ /\.(?!well-known).* {
deny all;
}
}

Speichere die Datei und beende den Editor, wenn du fertig bist.

Als Nächstes führst du den folgenden Befehl aus, um die Nginx-Konfiguration zu überprüfen und sicherzustellen, dass die Konfiguration korrekt ist.

sudo nginx -t

Wenn deine Nginx-Konfiguration korrekt ist, siehst du eine Meldung wie„Test erfolgreich – Syntax OK„.

Starte nun den Nginx-Dienst neu, um die neue Serverblock-Konfiguration anzuwenden.

sudo systemctl restart nginx

nginx-Einrichtung

Damit hast du die Konfiguration des LEMP-Stacks (Nginx, MariaDB-Datenbank und PHP-FPM) für das LibreNMS abgeschlossen. Außerdem sollte das LibreNMS jetzt auf deinem Rocky Linux System laufen.

SELinux konfigurieren

Für diese Anleitung wirst du LibreNMS mit aktiviertem SELinux im erzwingenden Modus betreiben. Daher wirst du jetzt SELinux-Regeln für LibreNMS einrichten.

Als Erstes führst du den folgenden dnf-Befehl aus, um das Paket„policycoreutils-python-utils“ auf deinem Rocky Linux-System zu installieren. Dieses Paket bietet mehrere Befehlszeilen für die Verwaltung von SELinux.

sudo dnf install policycoreutils-python-utils

Wenn du dazu aufgefordert wirst, gib y ein, um zu bestätigen, und drücke ENTER, um fortzufahren.

SELinux-Verwaltungstool installieren

Als nächstes führst du den folgenden Befehl aus, um Labels für den LibreNMS-Quellcode einzurichten.

semanage fcontext -a -t httpd_sys_content_t '/opt/librenms/html(/.*)?'
semanage fcontext -a -t httpd_sys_rw_content_t '/opt/librenms/(rrd|storage)(/.*)?'
semanage fcontext -a -t httpd_log_t "/opt/librenms/logs(/.*)?"
semanage fcontext -a -t bin_t '/opt/librenms/librenms-service.py'
restorecon -RFvv /opt/librenms
chcon -t httpd_sys_rw_content_t /opt/librenms/.env

selinux labelling einrichten

Führe den folgenden Befehl aus, um den Zugriff auf einige Dienste für den Nginx-Webserver zu erlauben.

setsebool -P httpd_can_sendmail=1
setsebool -P httpd_execmem 1

Erstelle nun eine neue Datei „http_fping.tt“ mit dem folgenden nano-Editor.

nano http_fping.tt

Füge die folgende Konfiguration in die Datei ein.

module http_fping 1.0;
require {
type httpd_t;
class capability net_raw;
class rawip_socket { getopt create setopt write read };
}

#============= httpd_t ==============
allow httpd_t self:capability net_raw;
allow httpd_t self:rawip_socket { getopt create setopt write read };

Speichere die Datei und beende den Editor, wenn du fertig bist.

Als Nächstes führst du den folgenden Befehl aus, um die Datei„http_fping.tt“ in das Format für SELinux zu konvertieren. Dann fügst du die neu kompilierte Regel zum SELinux hinzu.

checkmodule -M -m -o http_fping.mod http_fping.tt
semodule_package -o http_fping.pp -m http_fping.mod
semodule -i http_fping.pp

selinux Einrichtung

Damit hast du die SELinux-Konfiguration für LibreNMS abgeschlossen. Als Nächstes wirst du einige zusätzliche Konfigurationen für LibreNMS einrichten.

Fertigstellung der LibreNMS-Konfigurationen

Um die LibreNMS-Konfiguration abzuschließen, richtest du nun die Befehlszeile„lnms“ ein und kopierst einige Standardkonfigurationen für LibreNMS, einschließlich der Konfigurationen für cron und logrotate. Außerdem musst du den SNMP-Dienst für LibreNMS einrichten.

Führe den folgenden Befehl aus, um die„lnms„-Befehlszeile zu aktivieren und kopiere die Bash-Vervollständigung des„lnms„-Befehls.

ln -s /opt/librenms/lnms /usr/bin/lnms
cp /opt/librenms/misc/lnms-completion.bash /etc/bash_completion.d/

Kopiere die Beispielkonfiguration des LibreNMS cron in die Datei„/etc/cron.d/librenms„.

sudo cp /opt/librenms/librenms.nonroot.cron /etc/cron.d/librenms

Dann kopiere die Standardkonfiguration von logrotate für LibreNMS nach ‚/etc/logrotate.d/librenms‚.

sudo cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms

Librenren beenden

Und nun kopiere die Standardkonfiguration des snmpd-Dienstes nach „/etc/snmp/snmpd.conf“. Bearbeite dann die neue Datei „/etc/snmp/snmpd.conf“ mit dem nano-Editor.

sudo cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
sudo nano /etc/snmp/snmpd.conf

Ändere das Standard-Community-Passwort für den snmpd-Dienst„RANDOMSTRINGGOESHERE“ durch dein Passwort.

# Change RANDOMSTRINGGOESHERE to your preferred SNMP community string
com2sec readonly  default         RANDOMSTRINGGOESHERE

Speichere die Datei und beende den Editor, wenn du fertig bist.

Als Nächstes lädst du die Binärdatei herunter, die von LibreNMS verwendet wird, um das Betriebssystem jedes Zielhosts automatisch zu erkennen. Mache sie dann ausführbar, indem du die Standardberechtigung änderst.

curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
chmod +x /usr/bin/distro

distrocheck herunterladen

Starten Sie schließlich den snmpd-Dienst neu, um die neuen Änderungen und Konfigurationen zu übernehmen.

systemctl restart snmpd

Nun sind alle grundlegenden Konfigurationen abgeschlossen. Als Nächstes startest du die LibreNMS-Installation über den Webbrowser.

Zugriff auf die LibreNMS-Webinstallation

Bearbeite auf deinem lokalen Rechner die Datei „/etc/hosts“ und lege den lokalen Domainnamen deiner LibreNMS-Installation fest. Achte außerdem darauf, dass du die IP-Adresse mit der IP-Adresse deines Servers vergleichst.

192.168.5.100   librenms.hwdomain.io

Öffne nun den Webbrowser und rufe den Domainnamen deiner LibreNMS-Installation auf (z.B.: http://librenms.hwdomain.io/).

Zunächst prüft das LibreNMS-Installationsprogramm die Umgebungen für die Installation. Vergewissere dich, dass alle Anforderungen grün markiert sind. Das bedeutet, dass das System für die Installation von LibreNMS bereit ist.

Klicke auf das Datenbank-Symbol, um fortzufahren.

Vorinstallation der Datenbank

Gib nun die Datenbank- und Benutzerdaten für dein LibreNMS ein und klicke auf„Zugangsdaten prüfen„. Wenn deine Datenbank-Anmeldedaten korrekt sind, wird der Abschnitt grün markiert.

Datenbank prüfen

Klicke nun auf„Datenbank erstellen„, um die Datenbankmigration für LibreNMS zu starten.

Datenbank erstellen

Nachdem die Datenbankmigration abgeschlossen ist, wird der Bereich„Datenbank erstellengrün markiert.

Klicke auf das Schlüsselsymbol, um den Admin-Benutzer für LibreNMS zu konfigurieren.

Datenbank erstellen

Gib nun den neuen Admin-Benutzer, das Passwort und die E-Mail-Adresse für deine LibreNMS-Installation ein und klicke auf„Benutzer hinzufügen„.

Benutzer einrichten

Die Installation ist nun abgeschlossen und du siehst die folgende Seite. Du kannst sehen, dass die Installation abgeschlossen ist und die Konfigurationen in die Datei ‚.env‚ geschrieben wurden.

Installation abgeschlossen

Klicke nun auf den Link„Installation bestätigen„, um die LibreNMS-Installation zu überprüfen.

Du solltest nun auf die LibreNMS-Anmeldeseite weitergeleitet werden. Gib deinen Admin-Benutzer und dein Passwort ein und klicke dann auf„Anmelden„.

Anmeldung librenms

Vergewissere dich nun, dass alle Konfigurationen als„OK“ markiert sind, was bedeutet, dass die Konfiguration keine Fehler aufweist.

Du kannst auch alle Fehler oder Warnungen beheben, indem du die von LibreNMS empfohlenen Anweisungen befolgst.

Validierung der Installationslibrenmen

Du kannst nun einen neuen Zielhost, eine virtuelle Maschine oder ein Netzwerkgerät zur Überwachung der LibreNMS Monitoring Solution hinzufügen.

Fazit

Herzlichen Glückwunsch! Du hast die LibreNMS Monitoring Solution auf dem Rocky Linux Server installiert. Außerdem hast du die Grundkonfiguration des LEMP-Stacks (Nginx, MariaDB und PHP-FPM) auf Rocky Linux gelernt.

Von hier aus kannst du nun einen Host oder Zielrechner zur Überwachung hinzufügen, den LibreNMS-Agenten einrichten, Warnmeldungen oder Benachrichtigungen einrichten, die Integration von Drittanbietern mit Graylog einrichten und weitere Aufgaben erledigen.

Das könnte dich auch interessieren …