LibreNMS – Ein voll ausgestattetes Netzwerküberwachungstool für Linux

LibreNMS ist ein Open-Source, leistungsstarkes und funktionsreiches PHP-basiertes Netzwerküberwachungssystem, das das SNMP-Protokoll verwendet. Es unterstützt eine Vielzahl von Betriebssystemen, darunter Linux, FreeBSD, sowie Netzwerkgeräte wie Cisco, Juniper, Brocade, Foundry, HP und viele mehr.

LibreNMS Funktionen:

  1. Es entdeckt automatisch ein ganzes Netzwerk mithilfe dieser Protokolle: CDP, FDP, LLDP, OSPF, BGP, SNMP und ARP.
  2. Es verfügt über eine benutzerfreundliche Web-Benutzeroberfläche, mit anpassbaren Dashboards.
  3. Unterstützt einen Unix-Agenten.
  4. Unterstützt horizontales Skalieren, um mit Ihrem Netzwerk zu wachsen.
  5. Unterstützt ein äußerst flexibles und anpassbares Benachrichtigungssystem; sendet Benachrichtigungen per E-Mail, IRC, Slack und mehr.
  6. Unterstützt eine API zum Verwalten, Grafieren und Abrufen von Daten aus Ihrem System.
  7. Bietet ein Traffic-Abrechnungssystem.
  8. Unterstützt auch Android- und iOS-Apps, die Kernfunktionen bieten.
  9. Unterstützt Integrationen mit NfSen, collectd, SmokePing, RANCID und Oxidized.
  10. Unterstützt mehrere Authentifizierungsmethoden wie MySQL, HTTP, LDAP, Radius und Active Directory.
  11. Ermöglicht automatische Updates und viele weitere Funktionen.

Eine Online-Demo steht zur Verfügung, um LibreNMS auf Linux-Systemen vor der Installation auszuprobieren.

Demo URL: https://demo.librenms.org/
Username: demo
Password: demo

Testumgebung:

  1. Ubuntu 16.04 mit LEMP-Stack
  2. CentOS 7 mit LEMP-Stack

In diesem Tutorial lernen wir, wie man das LibreNMS Network Monitoring Tool auf einem frisch installierten Ubuntu oder CentOS Linux installiert (die gleichen Anweisungen funktionieren auch auf Debian– und RHEL-basierten Distributionen).

HINWEIS: Alle Anweisungen in diesem Artikel sollten als Benutzer root ausgeführt werden. Wenn Sie das nicht sind, verwenden Sie das sudo-Befehl, um Root-Benutzerrechte zu erlangen.

Schritt 1: Erforderliche Pakete installieren

1. Beginnen Sie zunächst mit der Installation aller erforderlichen Pakete mit dem Standard-Paketmanager, wie gezeigt.

Auf Ubuntu/Debian

$ sudo apt install composer fping git graphviz imagemagick mariadb-client mariadb-server mtr-tiny nginx-full nmap php7.0-cli php7.0-curl php7.0-fpm php7.0-gd php7.0-mcrypt php7.0-mysql php7.0-snmp php7.0-xml php7.0-zip python-memcache python-mysqldb rrdtool snmp snmpd whois

Auf CentOS/RHEL

# yum install epel-release
# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
# yum install composer cronie fping git ImageMagick jwhois mariadb mariadb-server mtr MySQL-python net-snmp net-snmp-utils nginx nmap php72w php72w-cli php72w-common php72w-curl php72w-fpm php72w-gd php72w-mysql php72w-process php72w-snmp php72w-xml php72w-zip python-memcached rrdtool

2. Sobald alle Pakete installiert sind, werden die Dienste nginx, php-fpm, mariadb und snmp gestartet und aktiviert, um beim Booten automatisch zu starten (normalerweise der Fall bei Ubuntu). Andernfalls können Sie die folgenden Befehle ausführen, um sie zu starten und zu aktivieren.

------------ On Debian/Ubuntu ------------ 
$ sudo systemctl nginx start php7.0-fpm mysql snmp 
$ sudo systemctl enable nginx php7.0-fpm mysql snmp

------------ On CentOS/RHEL ------------ 
# systemctl nginx start php-fpm mariadb snmpd 
# systemctl enable nginx php-fpm mariadb snmpd

Schritt 2: LibreNMS Monitoring Tool installieren

3. Als Nächstes erstellen Sie einen Systembenutzer namens librenms mit dem Befehl useradd; wobei die -M-Flag die Erstellung des Home-Verzeichnisses des Benutzers deaktiviert und -r die Erstellung eines Systemkontos ermöglicht. Fügen Sie dann den Benutzer librenms der Gruppe www-data (unter Ubuntu) oder nginx (unter CentOS) wie folgt hinzu.

------------ On Debian/Ubuntu ------------ 
$ sudo useradd librenms -d /opt/librenms -M -r
$ sudo usermod -a -G librenms www-data   

------------ On CentOS/RHEL ------------ 
# useradd librenms -d /opt/librenms -M -r
# usermod -a -G librenms nginx           

4. Installieren Sie anschließend LibreNMS über den composer-Befehl wie gezeigt.

------------ On Debian/Ubuntu ------------ 
$ cd /opt
$ sudo composer create-project --no-dev --keep-vcs librenms/librenms librenms dev-master

------------ On CentOS/RHEL ------------ 
# cd /opt
# composer create-project --no-dev --keep-vcs librenms/librenms librenms dev-master

Schritt 3: Erstellen Sie die LibreNMS-Datenbank

5. Bevor Sie den MariaDB-Server verwenden können, müssen Sie Ihre Installation sichern, indem Sie das Sicherheitsskript aus dem Binärpaket ausführen. Es wird Sie auffordern, ein Root-Passwort festzulegen, anonyme Benutzer zu entfernen, die Fernanmeldung für den Root zu deaktivieren und die Testdatenbank zu entfernen.

Sie können das Skript starten, indem Sie den folgenden Befehl ausführen und alle Fragen mit yes/y beantworten.

$ sudo mysql_secure_installation   [On Debian/Ubuntu]
# mysql_secure_installation        [On CentOS/RHEL]

6. Melden Sie sich dann an der MariaDB-Datenbank an, um eine Datenbank für LibreNMS zu erstellen (denken Sie daran, in einer Produktionsumgebung ein starkes/sicheres Passwort zu verwenden).

$ sudo mysql -u root -p
MariaDB [(none)]> CREATE DATABASE librenms CHARACTER SET utf8 COLLATE utf8_unicode_ci;
MariaDB [(none)]> CREATE USER 'librenms'@'localhost' IDENTIFIED BY '=@!#@%$libre';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit

7. Deaktivieren Sie anschließend vorübergehend den MySQL-Strikten Modus (Kompatibilität mit dem MySQL-Strikten Modus muss noch hinzugefügt werden).

$ sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf    [On Debian/Ubuntu]
# vi /etc/my.cnf        [On CentOS/RHEL]

In dem Abschnitt [mysqld] fügen Sie bitte hinzu.

innodb_file_per_table=1
sql-mode=""
lower_case_table_names=0

Dann starten Sie den Datenbankserver neu, um die Änderungen zu übernehmen.

$ sudo systemctl restart mysql     [On Debian/Ubuntu]
# systemctl restart mariadb        [On CentOS/RHEL]

Schritt 4: Konfigurieren und Starten von PHP-FPM

8. Als nächstes setzen Sie Ihre date.timezone in der php.ini auf Ihre aktuelle Zeitzone, zum Beispiel “Africa/Kampala”, wie im folgenden Screenshot gezeigt.

------------ On Debian/Ubuntu ------------ 
$ sudo vim /etc/php/7.0/fpm/php.ini
$ sudo vim /etc/php/7.0/cli/php.ini

------------ On CentOS/RHEL ------------ 
# vi /etc/php.ini
Set Time Zone in PHP File

9. Aktivieren Sie dann das mcrypt-PHP-Modul in Ubuntu und starten Sie php-fpm neu, wie unten gezeigt.

------------ On Debian/Ubuntu ------------ 
$ sudo phpenmod mcrypt
$ sudo systemctl restart php7.0-fpm

10. Auf CentOS/RHEL müssen Sie die folgenden Änderungen in der Konfigurationsdatei von php-fpm vornehmen.

# vi /etc/php-fpm.d/www.conf

Führen Sie folgende Änderungen durch.

;user = apache
user = nginx

group = apache   ; keep group as apache

;listen = 127.0.0.1:9000
listen = /var/run/php-fpm/php7.2-fpm.sock

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

11. Starten Sie den php-fpm-Dienst neu, wie unten gezeigt.

# systemctl restart php-fpm

Schritt 5: Konfigurieren Sie Nginx für LibreNMS

12. In diesem Schritt müssen Sie einen Nginx-Serverblock für librenms konfigurieren, um auf die Web-Benutzeroberfläche zugreifen zu können. Erstellen Sie eine .conf-Datei dafür, wie unten gezeigt.

$ sudo vim /etc/nginx/conf.d/librenms.conf     [On Debian/Ubuntu]
# vi /etc/nginx/conf.d/librenms.conf           [On CentOS/RHEL]         

Fügen Sie den folgenden Config hinzu und bearbeiten Sie server_name wie erforderlich.

server {
 listen      80;
 server_name librenms.example.com;
 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 /api/v0 {
  try_files $uri $uri/ /api_v0.php?$query_string;
 }
 location ~ \.php {
  include fastcgi.conf;
  fastcgi_split_path_info ^(.+\.php)(/.+)$;
  fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
 }
 location ~ /\.ht {
  deny all;
 }
}

13. Speichern Sie dann die Datei und verlassen Sie sie. Entfernen Sie auch die Konfiguration des Standard-Serverblocks und starten Sie den Nginx-Server neu.

------------ On Debian/Ubuntu ------------ 
$ sudo rm /etc/nginx/sites-enabled/default
$ sudo systemctl restart nginx

------------ On CentOS/RHEL ------------ 
# systemctl restart nginx

HINWEIS: Auf CentOS/RHEL müssen Sie den Abschnitt default site deaktivieren, wenn dies die einzige Website ist, die Sie hosten. Löschen Sie den Serverabschnitt aus der Datei /etc/nginx/nginx.conf.

14. Auch auf CentOS/RHEL müssen Sie das Policy-Tool für SELinux installieren und die für LibreNMS benötigten Kontexte mit den folgenden Befehlen konfigurieren.

------------ On CentOS/RHEL ------------ 
# yum install policycoreutils-python
# semanage fcontext -a -t httpd_sys_content_t '/opt/librenms/logs(/.*)?'
# semanage fcontext -a -t httpd_sys_rw_content_t '/opt/librenms/logs(/.*)?'
# restorecon -RFvv /opt/librenms/logs/
# semanage fcontext -a -t httpd_sys_content_t '/opt/librenms/rrd(/.*)?'
# semanage fcontext -a -t httpd_sys_rw_content_t '/opt/librenms/rrd(/.*)?'
# restorecon -RFvv /opt/librenms/rrd/
# setsebool -P httpd_can_sendmail=1
# setsebool -P httpd_execmem 1

15. Ermöglichen Sie fping, indem Sie die Datei http_fping.tt mit dem folgenden Inhalt erstellen.

On CentOS/RHEL
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 };

16. Führen Sie dann diese Befehle aus.

------------ On CentOS/RHEL ------------ 
# 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

17. Wenn Sie die Firewall auf CentOS/RHEL verwenden, aktivieren Sie den HTTP/HTTPS-Zugriff durch die Firewall.

------------ On CentOS/RHEL ------------ 
# firewall-cmd --zone public --add-service http
# firewall-cmd --permanent --zone public --add-service http
# firewall-cmd --zone public --add-service https
# firewall-cmd --permanent --zone public --add-service https

Schritt 6: Konfigurieren von SNMPD für LibreNMS

18. Verwenden Sie nun die Beispieldatei zur SNMP-Konfiguration, um Ihre Konfigurationsdatei zu erstellen, und öffnen Sie sie zum Bearbeiten, wie folgt.

------------ On Debian/Ubuntu ------------ 
$ sudo cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
$ sudo vim /etc/snmp/snmpd.conf

------------ On CentOS/RHEL ------------ 
# cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
# vi /etc/snmp/snmpd.conf

Suchen Sie die Zeichenfolge RANDOMSTRINGGOESHERE und ändern Sie sie in Ihre eigene Community-Zeichenfolge, wie im Screenshot gezeigt.

Set SNMP String

19. Laden Sie als Nächstes ein Shell-Skript auf Ihrem System herunter, das dabei hilft, das Betriebssystem und, falls es sich um Linux handelt, die Linux-Distribution zu erkennen, die Sie verwenden:

------------ On Debian/Ubuntu ------------ 
$ sudo curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
$ sudo chmod +x /usr/bin/distro
$ sudo systemctl restart snmpd

------------ On CentOS/RHEL ------------ 
# curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
# chmod +x /usr/bin/distro
# systemctl restart snmpd

Schritt 7: Cron erstellen und Logrotate konfigurieren

20. Führen Sie jetzt den folgenden Befehl aus, um einen Cron-Job für LibreNMS einzurichten.

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

21. Alle LibreNMS-Protokolle werden jetzt in /opt/librenms/logs aufgezeichnet. Sie müssen diese Protokolle so konfigurieren, dass sie automatisch rotieren, indem Sie die bereitgestellte Logrotate-Konfigurationsdatei verwenden, wie folgt.

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

Legen Sie dann die entsprechenden Berechtigungen auf dem Installationsverzeichnis von LibreNMS und den Protokolldateien fest.

------------ On Debian/Ubuntu ------------
$ sudo chown -R librenms:librenms  /opt/librenms
$ sudo setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs
$ sudo setfacl -R -m g::rwx /opt/librenms/rrd /opt/librenms/logs

------------ On CentOS/RHEL ------------ 
# chown -R librenms:librenms /opt/librenms
# setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs
# setfacl -R -m g::rwx /opt/librenms/rrd /opt/librenms/logs

Schritt 8: Zugriff auf den LibreNMS-Webinstaller

22. Verwenden Sie als Nächstes die folgende URL, um auf den Webinstaller zuzugreifen, und folgen Sie den Anweisungen auf dem Bildschirm.

http://librenms.tecmint.lan/install.php

Um diese Adresse auf einem lokalen Rechner zu verwenden, müssen Sie einen lokalen DNS einrichten, indem Sie die Hosts-Datei (/etc/hosts) für lokale Domänenauflösung oder Testzwecke vor dem Livegang verwenden.

192.168.43.31 tecmint.lan
192.168.43.31 librenms.tecmint.lan
Setup Local DNS for Domain

23. Sie werden die Installationsbegrüßungsseite wie im folgenden Screenshot sehen. Klicken Sie auf Nächster Schritt, um fortzufahren.

LibreNMS Web Installer

24. Geben Sie dann die Einstellungen (Datenbankhost, Port, Benutzername und Benutzerpasswort) für die LibreNMS-Datenbank ein und klicken Sie auf Nächster Schritt, um fortzufahren.

LibreNMS Database Settings

25. Der Webinstaller wird nun damit beginnen, die MySQL-Datenbank zu importieren. Dies wird einige Zeit dauern. Beachten Sie, dass der Prozess an bestimmten Punkten pausieren wird. Klicken Sie einfach auf Wiederholen, um mit dem Importprozess fortzufahren.

LibreNMS Database Importing

26. Sobald der Import der Datenbank abgeschlossen ist, sollten Sie die Meldung „Datenbank ist auf dem neuesten Stand!“ sehen, wie im folgenden Screenshot gezeigt. Klicken Sie dann auf Zur Benutzererstellung gehen, um fortzufahren.

LibreNMS Database Updated

27. Fügen Sie als nächstes einen LibreNMS-Benutzer hinzu. Geben Sie Benutzername, Passwort und E-Mail-Adresse an und klicken Sie dann auf Benutzer hinzufügen, um die Änderungen zu übernehmen.

Add LibreNMS User

28. Klicken Sie jetzt auf Konfiguration generieren, um die LibreNMS-Konfiguration für Ihr System zu erstellen.

Generate Librenms Config
LibreNMS Configuration

29. Sobald die Konfiguration generiert ist, wie im vorherigen Bildschirmfoto gezeigt, kopieren Sie sie und speichern Sie sie im Stammverzeichnis Ihrer Installation in einer Datei namens /opt/librenms/config.php.

# vi /opt/librenms/config.php
LibreNMS Configuration
<?php
## Have a look in defaults.inc.php for examples of settings you can set here. DO NOT EDIT defaults.inc.php!

### Database config
$config['db_host'] = 'localhost';
$config['db_port'] = '3306';
$config['db_user'] = 'librenms';
$config['db_pass'] = '=@!#@%$libre';
$config['db_name'] = 'librenms';
$config['db_socket'] = '';

// This is the user LibreNMS will run as
//Please ensure this user is created and has the correct permissions to your install
$config['user'] = 'librenms';

### Locations - it is recommended to keep the default
#$config['install_dir']  = "/opt/librenms";

### This should *only* be set if you want to *force* a particular hostname/port
### It will prevent the web interface being usable form any other hostname
#$config['base_url']        = "http://librenms.company.com";

### Enable this to use rrdcached. Be sure rrd_dir is within the rrdcached dir
### and that your web server has permission to talk to rrdcached.
#$config['rrdcached']    = "unix:/var/run/rrdcached.sock";

### Default community
$config['snmp']['community'] = array("public");

### Authentication Model
$config['auth_mechanism'] = "mysql"; # default, other options: ldap, http-auth
#$config['http_auth_guest'] = "guest"; # remember to configure this user if you use http-auth

### List of RFC1918 networks to allow scanning-based discovery
#$config['nets'][] = "10.0.0.0/8";
#$config['nets'][] = "172.16.0.0/12";
#$config['nets'][] = "192.168.0.0/16";

# Update configuration
#$config['update_channel'] = 'release';  # uncomment to follow the monthly release channel
#$config['update'] = 0;  # uncomment to completely disable updates

30. Speichern Sie die Datei und schließen Sie sie. Gehen Sie dann zum Web-Installer zurück, um den Installationsprozess fortzusetzen, indem Sie auf Installieren beenden klicken.

Finish LibreNMS Installation

31. Jetzt ist Ihre LibreNMS-Installation abgeschlossen. Sie können auf „Installation validieren und alle Probleme beheben“ klicken. Die Anmeldeseite sollte erscheinen.

Validate LibreNMS Install

32. Geben Sie als nächstes Ihre Benutzerdaten ein, um auf die Validierungsseite zuzugreifen.

LibreNMS Login Page

33. Während des Installationsvalidierungsprozesses hat LibreNMS zwei Probleme festgestellt. Zum einen wurden Geräte noch nicht hinzugefügt (dies ist derzeit eine Warnung), und zum anderen haben wir die entsprechenden Berechtigungen für die Konfigurationsdatei (/opt/librenms/config.php), die manuell hinzugefügt wurde, nicht festgelegt, wie im Bildschirmfoto unten gezeigt.

LibreNMS Permission Issues

Führen Sie nun den folgenden Befehl aus, um die korrekten Berechtigungen für die Konfigurationsdatei festzulegen.

$ sudo chown -R librenms:librenms /opt/librenms/config.php 

34. Um Geräte hinzuzufügen, gehen Sie zu: http://librenms.tecmint.lan/addhost. Nach dem Hinzufügen von Geräten können Sie zur Startseite gehen und verschiedene Dashboards hinzufügen.

LibreNMS Dashboard

Das ist alles! Weitere Informationen, einschließlich Installation und Einrichtung, finden Sie in der LibreNMS-Dokumentation unter https://docs.librenms.org/.

LibreNMS ist ein voll ausgestattetes Netzwerküberwachungssystem, das eine Vielzahl von Netzwerkhardware unterstützt. Wir hoffen, dass dies eine klare Installationsanleitung war. Wenn Sie Fragen haben, erreichen Sie uns über das unten stehende Feedback-Formular.

Source:
https://www.tecmint.com/install-librenms-monitoring-on-ubuntu-centos/