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.

epel repo hinzufügen

Das PHP-Remi-Repository wird für die Installation der PHP-FPM-Pakete verwendet.

remi repository hinzufügen

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

php 8.1 remi repository aktivieren

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.

Abhängigkeiten installieren

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

php-fpm sock einrichten

Ö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:

start verify php-fpm

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.

php-fpm-Socke prüfen

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;

Datenbank und Benutzer anlegen

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.

Benutzerrechte für die Datenbank prüfen

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

librenms herunterladen

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

librenms-Abhängigkeiten installieren

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

firewalld konfigurieren

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

snmpd konfigurieren

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.

verify snmpd

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.

lnms-Befehlsabschluss

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

zusätzliche librenms-Konfiguration

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

nginx konfigurieren

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:

nginx verifizieren

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.

librenms Systemprüfungen

Gib nun die Datenbankdetails ein, die du erstellt hast, und klicke auf Anmeldedaten prüfen.

Datenbank-Setup

Dann klickst du auf Datenbank erstellen, um die LibreNMS-Datenbank zu migrieren.

die Datenbank aufbauen

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.

Admin-Benutzer einrichten

Klicke nun auf Installation beenden, um die Installation von LibreNMS abzuschließen.

die Installation abschließ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.

librenms login page

Wenn du erfolgreich warst, solltest du das LibreNMS-Dashboard wie folgt sehen. Du kannst das LibreNMS-Dashboard nach deinen Wünschen gestalten und anordnen.

librenms dashboard

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:

LibreNMS-Installation validieren

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.

Das könnte dich auch interessieren …