So installierst du das LibreNMS Monitoring Tool auf AlmaLinux 9
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 zeige ich dir, wie du das LibreNMS Monitoring Tool auf deinem AlmaLinux 9 Server installierst. Ich werde LibreNMS mit PHP-FPM, Nginx Webserver und der MariaDB Datenbank betreiben.
Voraussetzungen
Um diese Anleitung durchzuführen, brauchst du Folgendes
- Einen AlmaLinux 9 Server – Diese Demo verwendet einen Server mit dem Hostnamen almalinux9.
- Einen Nicht-Root-Benutzer mit sudo/root-Rechten.
Installieren der Abhängigkeiten
Zuerst fügst du die EPEL- und Remi-Repositories zu deinem System hinzu. Dann installierst du die Paketabhängigkeiten für LibreNMS.
Führe den folgenden dnf-Befehl aus, um das EPEL-Repository und das PHP-Remi-Repository zu deinem System hinzuzufügen.
sudo dnf install -y epel-release sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm
Einige der Abhängigkeiten sind im EPEL-Repository verfügbar, daher musst du EPEL zu deinem System hinzufügen.
Das PHP-Remi-Repository wird für die Installation der PHP-FPM-Pakete verwendet.
Führe nun den folgenden Befehl aus, um das Standard-Repository-Modul für PHP zurückzusetzen. Aktiviere dann das PHP-Remi-Repository für die PHP-Version 8.1, die von LibreNMS benötigt wird.
sudo dnf module reset php sudo dnf module enable php:remi-8.1
Als Nächstes führst du den folgenden dnf-Befehl aus, um die Paketabhängigkeiten für LibreNMS zu installieren. Dazu gehören PHP-FPM, der Nginx-Webserver, der MariaDB-Server, einige Python3-Pakete und Systemdienstprogramme wie rrdtool, unzip, ImageMagick, git und fping.
sudo dnf install -y 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-redis python3-memcached python3-pip python3-systemd rrdtool unzip
Sobald die Installation abgeschlossen ist, fährst du mit dem nächsten Schritt fort.
Systembenutzer anlegen
In diesem Abschnitt legst du einen neuen Systembenutzer namens librenms an, der für die Ausführung von LibreNMS verwendet wird.
Führe den folgenden Befehl aus, um einen neuen Benutzer librenms anzulegen.
sudo useradd librenms -d /opt/librenms -M -r -s "$(which bash)"
Detaillierte Optionen:
- -d /opt/librenms: Lege das Heimatverzeichnis für den neuen Benutzer auf /opt/librenms fest.
- -M: Kein Heimatverzeichnis für den neuen Benutzer erstellen.
- -r: Definiere den neuen Benutzer als Systembenutzer.
- -s „$(die bash)“: Lege die Shell für den neuen Benutzer auf bash fest.
PHP-FPM konfigurieren
Im folgenden Abschnitt wirst du PHP-FPM für LibreNMS einrichten. Du richtest die richtige Zeitzone auf deinem System ein und fügst dann einen speziellen PHP-FPM-Pool hinzu, der von LibreNMS verwendet wird.
Führe zunächst den folgenden Befehl aus, um die Zeitzone auf deinem Server zu konfigurieren.
sudo timedatectl set-timezone Europe/Stockholm sudo ln -s /usr/share/zoneinfo/Europe/Stockholm /etc/localtime
Öffne dann die Datei /etc/php.ini mit dem folgenden nano-Editor.
sudo nano /etc/php.ini
Entferne das Kommentarzeichen im Parameter date.timezone und ändere den Wert mit der richtigen Zeitzone wie folgt:
date.timezone=Europe/Stockholm
Speichere und beende die Datei, wenn du fertig bist.
Führe nun den folgenden Befehl aus, um die Standardkonfiguration des PHP-FPM-Pools nach /etc/php-fpm.d/librenms.conf zu kopieren und öffne sie mit dem nano-Editor.
sudo cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/librenms.conf sudo nano /etc/php-fpm.d/librenms.conf
Ändere den PHP-FPM-Poolnamen von www in librenms.
[librenms]
Ändere den Standardbenutzer und die Standardgruppe in librenms.
user = librenms group = librenms
Ändere die Standard-Sock-Datei für den neuen PHP-FPM-Pool in /run/php-fpm/librenms.sock.
listen = /run/php-fpm/librenms.sock
Speichere die Datei und beende den Editor, wenn du fertig bist.
Führe nun den folgenden Befehl aus, um den PHP-FPM-Dienst zu starten und zu aktivieren.
sudo systemctl start php-fpm sudo systemctl enable php-fpm
Überprüfe dann den PHP-FPM-Dienst mit dem folgenden Befehl, um sicherzustellen, dass der Dienst läuft.
sudo systemctl status php-fpm
Wenn er läuft, wird die folgende Ausgabe in deinem Terminal angezeigt:
Außerdem kannst du die PHP-FPM sock-Datei für LibreNMS mit dem folgenden Befehl überprüfen.
ss -pl | grep php-fpm
Wenn deine Konfiguration erfolgreich ist, solltest du die PHP-FPM-Sock-Datei /run/php-fpm/librenms.sock zur Verfügung gestellt bekommen.
MariaDB Server konfigurieren
Nachdem du PHP-FPM konfiguriert hast, musst du den MariaDB-Server konfigurieren. Du fügst zusätzliche Konfigurationen für den MariaDB-Server hinzu und sicherst MariaDB mit dem Dienstprogramm mariadb-secure-installation.
Öffne die Standard-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 folgenden Konfigurationen unter dem Abschnitt ‚[mysqld]‚ ein.
innodb_file_per_table=1 lower_case_table_names=0
Speichere die Datei und schließe den Editor, wenn du fertig bist.
Führe nun den folgenden Befehl aus, um den MariaDB-Dienst zu starten und zu aktivieren.
sudo systemctl start mariadb sudo systemctl enable mariadb
Als Nächstes führst du den folgenden Befehl aus, um deine MariaDB-Serverinstallation zu sichern.
sudo mariadb-secure-installation
Im Folgenden wirst du nach einigen Konfigurationen gefragt:
- Ändere die Authentifizierungsmethode für den MariaDB-Root-Benutzer auf unix_socket. Gib n für Nein ein.
- Einrichten des MariaDB-Root-Passworts. Bestätige mit y und gib das neue MariaDB Root-Passwort ein und wiederhole es.
- Deaktiviere die Fernanmeldung für den MariaDB Root-Benutzer. Gib zur Bestätigung y ein.
- Den Standard-Datenbanktest von MariaDB entfernen. Gib zur Bestätigung y ein.
- Entferne den anonymen Benutzer aus der MariaDB. Gib zur Bestätigung y ein.
- Gib abschließend erneut y ein, um die Tabellenberechtigungen neu zu laden und die Änderungen zu übernehmen.
MariaDB Datenbank und Benutzer für LibreNMS erstellen
Nachdem du den MariaDB-Server konfiguriert hast, erstellst du als Nächstes eine neue Datenbank und einen neuen Benutzer, die von LibreNMS verwendet werden sollen.
Melde dich mit dem folgenden Befehl am MariaDB-Server an.
sudo mariadb -u root -p
Führe die folgenden Abfragen aus, um eine neue Datenbank und einen neuen Benutzer für LibreNMS zu erstellen. In dieser Demo wirst du eine neue Datenbank und den Benutzer librenms mit dem Passwort librenmspassword erstellen. Außerdem musst du sicherstellen, dass das Standardzeichen für die LibreNMS-Datenbank utf8mb4 ist.
CREATE DATABASE librenms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'librenmspassword'; GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost'; FLUSH PRIVILEGES;
Führe nun die folgende Abfrage aus, um die Rechte des neuen Benutzers librenms zu überprüfen, und gib dann exit ein, um MariaDB zu beenden.
SHOW GRANTS FOR 'librenms'@'localhost'; exit
Die unten angezeigte Ausgabe zeigt dir, dass der Benutzer librenms auf die Datenbank librenms zugreifen kann.
Herunterladen und Installieren von LibreNMS
In diesem Abschnitt lädst du den LibreNMS-Quellcode herunter, richtest die richtigen Eigentums- und Zugriffsrechte ein und installierst dann die PHP-Abhängigkeiten über das composer_wrapper-Skript, das im Quellcode enthalten ist.
Führe den folgenden git-Befehl aus, um den LibreNMS-Quellcode in das Verzeichnis /opt/librenms herunterzuladen.
git clone https://github.com/librenms/librenms.git /opt/librenms
Ändere nun den Eigentümer des Verzeichnisses /opt/librenms auf den Benutzer librenms und ändere die Berechtigung auf 771.
sudo chown -R librenms:librenms /opt/librenms sudo chmod 771 /opt/librenms
Danach führst du den folgenden Befehl aus, um Zugriffskontrolllisten einzurichten und die Lese-, Schreib- und Ausführungsrechte für einige LibreNMS-Verzeichnisse sicherzustellen.
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/
Als Nächstes loggst du dich mit dem folgenden Befehl als Benutzer librenms ein. Du solltest dich im Verzeichnis /opt/librenms befinden.
su - librenms pwd
Führe den folgenden Befehl aus, um die PHP-Abhängigkeiten für LibreNMS zu installieren. Wenn die Installation abgeschlossen ist, gibst du exit ein, um dich vom Benutzer librenms abzumelden.
./scripts/composer_wrapper.php install --no-dev exit
SELinux konfigurieren
Wenn du SELinux mit dem erzwingenden Modus auf deinem AlmaLinux 9 Server aktiviert hast, musst du es für LibreNMS konfigurieren. In diesem Abschnitt installierst du das Paket policycoreutils-python-utils, um SELinux für LibreNMS einzurichten.
Führe den folgenden Befehl aus, um das Paket policycoreutils-python-utils zu installieren.
sudo dnf install -y policycoreutils-python-utils
Als Nächstes führst du den folgenden Befehl aus, um die Kennzeichnung für den LibreNMS-Quellcode einzurichten, dem Webserver zu erlauben, eine E-Mail zu senden und Programme auszuführen, die Speicheradressen benötigen.
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 setsebool -P httpd_can_sendmail=1 setsebool -P httpd_execmem 1 chcon -t httpd_sys_rw_content_t /opt/librenms/.env
Erstelle nun eine neue Datei http_fping.tt mit dem folgenden nano-Editor-Befehl.
sudo nano http_fping.tt
Füge die folgende Konfiguration in die Datei ein. Damit wird der Befehl fping über SELinux zugelassen.
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.
Zum Schluss führst du den folgenden Befehl aus, um die Datei http_fping.tt zu kompilieren und sie zu SELinux hinzuzufügen.
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
Firewalld konfigurieren
Nachdem du SELinux eingerichtet hast, richtest du Firewalld ein, um sowohl HTTP- als auch HTTPS-Protokolle zu öffnen.
Führe die folgenden firewall-cmd-Befehle aus, um die HTTP- und HTTPS-Ports zu öffnen, und lade dann die Firewalld neu, um die Änderungen zu übernehmen.
sudo firewall-cmd --add-service={http,https} --permanent sudo firewall-cmd --reload
Überprüfe nun die Liste der Firewall-Regeln mit dem folgenden Befehl. Wenn dies erfolgreich war, solltest du sowohl HTTP- als auch HTTPS-Protokolle in der Regelliste sehen.
sudo firewall-cmd --list-all
SNMP-Dienst konfigurieren
SNMP oder Simple Network Management Protocol ist ein Protokoll, das am häufigsten von Netzwerkgeräten wie Modems, Switches und Reutern verwendet wird. In diesem Abschnitt wirst du den snmpd-Dienst auf deiner LibreNMS-Installation einrichten, der zur Überwachung von Netzwerkgeräten verwendet wird.
Kopiere die Standard-SNMP-Konfiguration in die Datei /etc/snmp/snmpd.conf und öffne sie mit dem unten stehenden nano-Editor-Befehl.
sudo cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf sudo nano /etc/snmp/snmpd.conf
Ändere das Standard-SNMP-Passwort RANDOMSTRINGGOESHERE durch das neue Passwort.
# Change RANDOMSTRINGGOESHERE to your preferred SNMP community string com2sec readonly default RANDOMSTRINGGOESHERE
Speichere die Datei und schließe den Editor, wenn du fertig bist.
Als Nächstes lädst du die Binärdatei des LibreNMS-Agententools zur Erkennung von Linux- und UNIX-Betriebssystemen herunter und machst sie ausführbar.
sudo curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro sudo chmod +x /usr/bin/distro
Starte nun den snmpd-Dienst und aktiviere ihn mit dem folgenden Befehl.
sudo systemctl start snmpd sudo systemctl enable snmpd
Überprüfe schließlich den snmpd-Dienst mit dem folgenden systemctl-Befehl.
sudo systemctl status snmpd
Wenn der snmpd-Dienst läuft, solltest du eine Ausgabe wie„active (running)“ erhalten.
Zusätzliche LibreNMS-Einstellungen
Im folgenden Abschnitt findest du einige zusätzliche Konfigurationen für LibreNMS. Du wirst die folgende Konfiguration einrichten:
- Richte den Binärbefehl von LibreNMS „lnms“ und seine bash_completion ein.
- Richte cron für die Abfrage von LibreNMS ein.
- Richte den LibreNMS-Scheduler über den systemd-Timer ein.
- Richte logrotate für LibreNMS-Logs ein.
Erstelle zunächst einen Symlink für die LibreNMS-Kommandozeile lnms nach /usr/bin/lnms. Dann kopierst du die Bash-Vervollständigung für den Befehl lnms in das Verzeichnis /etc/bash_completion.d/.
sudo ln -s /opt/librenms/lnms /usr/bin/lnms sudo cp /opt/librenms/misc/lnms-completion.bash /etc/bash_completion.d/
Melde dich nun als Benutzer librenms an und führe den lnms-Befehl aus. Drücke dann die TAB-Taste, um die Liste der verfügbaren Parameter des lnms-Befehls anzuzeigen.
su - librenms lnms TAB
Eine ähnliche Ausgabe wie diese wird in deinem Terminal angezeigt.
Als Nächstes führst du den folgenden Befehl aus, um die LibreNMS-Cron-Konfiguration nach /etc/cron.d/librenms zu kopieren.
cp /opt/librenms/dist/librenms.cron /etc/cron.d/librenms
Dann kopierst du die logrotate-Konfiguration für LibreNMS mit dem folgenden Befehl.
sudo cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms
Danach kopierst du den LibreNMS-Scheduler-Dienst und den Timer in das Verzeichnis /etc/systemd/system/ und lädst den systemd-Manager neu, damit die Änderungen übernommen werden.
sudo cp /opt/librenms/dist/librenms-scheduler.service /opt/librenms/dist/librenms-scheduler.timer /etc/systemd/system/ sudo systemctl daemon-reload
Starten und aktivieren Sie schließlich den LibreNMS-Scheduler-Dienst.
sudo systemctl enable librenms-scheduler.timer sudo systemctl start librenms-scheduler.timer
Nginx konfigurieren
Nachdem alle Konfigurationen abgeschlossen sind, richtest du nun den Nginx-Serverblock für LibreNMS ein.
Erstelle eine neue Nginx-Serverblock-Konfiguration /etc/nginx/conf.d/librenms.conf mit dem folgenden nano-Editor-Befehl.
sudo nano /etc/nginx/conf.d/librenms.conf
Füge die folgende Konfiguration ein und achte darauf, dass du den Domainnamen in der Option server_name änderst.
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.
Führe nun den folgenden Befehl aus, um die Nginx-Konfiguration zu überprüfen. Wenn er erfolgreich war, solltest du eine Ausgabe wie„Test ist erfolgreich – Syntax ist ok“ sehen.
sudo nginx -t
Starte und aktiviere den Nginx-Dienst mit dem folgenden Befehl.
sudo systemctl start nginx sudo systemctl enable nginx
Gib dann den folgenden Befehl ein, um den Status des Nginx-Dienstes zu überprüfen und sicherzustellen, dass der Dienst läuft.
sudo systemctl status nginx
Wenn das erfolgreich war, solltest du die folgende Ausgabe erhalten:
Installation von LibreNMS über den Webbrowser
Nachdem du die Konfiguration des Nginx-Serverblocks erstellt hast, kannst du die Installation von LibreNMS über den Webbrowser starten.
Starte deinen Webbrowser und rufe den Domainnamen deiner LibreNMS-Installation auf, z.B. http://librenms.hwdomain.io.
Auf der ersten Seite wird LibreNMS deine aktuelle Umgebung prüfen und verifizieren. Vergewissere dich, dass du die Voraussetzungen erfüllst, und klicke dann auf das Datenbanksymbol, um fortzufahren.
Gib nun die Datenbankdetails ein, die du erstellt hast, und klicke auf Anmeldedaten prüfen.
Dann klickst du auf Datenbank erstellen, um die LibreNMS-Datenbank zu migrieren.
Als nächstes klickst du auf das Schlüsselsymbol, um den Admin-Benutzer und das Passwort für LibreNMS einzurichten. Gib die Details des Admin-Benutzers, das Passwort und die E-Mail-Adresse ein und klicke dann auf Benutzer hinzufügen.
Klicke nun auf Installation beenden, um die Installation von LibreNMS abzuschließen.
Sobald die LibreNMS-Installation abgeschlossen ist, wirst du zur LibreNMS-Anmeldeseite weitergeleitet. Gib deinen Admin-Benutzer und dein Passwort ein und klicke dann auf Anmelden.
Wenn du erfolgreich warst, solltest du das LibreNMS-Dashboard wie folgt sehen. Du kannst das LibreNMS-Dashboard nach deinen Wünschen gestalten und anordnen.
Zum Schluss kannst du mit dem Skript validate.php sicherstellen, dass du LibreNMS richtig konfiguriert hast. Führe den folgenden Befehl aus, um dich als Benutzer librenms anzumelden und das Skript validate.php auszuführen.
su - librenms ./validate.php
Wenn du LibreNMS richtig konfiguriert hast, sollte alles den Status OK haben, wie im Folgenden zu sehen ist:
Fazit
Herzlichen Glückwunsch, du hast jetzt erfolgreich das LibreNMS Monitoring Tool auf AlmaLinux 9 installiert. Du hast LibreNMS mit dem MariaDB Datenbankserver und dem Nginx Webserver installiert und konfiguriert. Außerdem hast du SELinux und Firewalld für LibreNMS konfiguriert.
Außerdem kannst du in der LibreNMS-Dokumentation neue Hosts oder Geräte zur Überwachung hinzufügen.