LibreNMS – Un tool di monitoraggio di rete completo per Linux

LibreNMS è un sistema di monitoraggio di rete basato su PHP open source, potente e ricco di funzionalità che utilizza il protocollo SNMP. Supporta una vasta gamma di sistemi operativi tra cui Linux, FreeBSD, nonché dispositivi di rete tra cui Cisco, Juniper, Brocade, Foundry, HP e molti altri.

Caratteristiche di LibreNMS:

  1. Scopre automaticamente un’intera rete utilizzando questi protocolli: CDP, FDP, LLDP, OSPF, BGP, SNMP e ARP.
  2. Ha un’interfaccia Web mobile friendly, con cruscotti personalizzabili.
  3. Supporta un agente Unix.
  4. Supporta il ridimensionamento orizzontale per espandersi con la tua rete.
  5. Supporta un sistema di avvisi altamente flessibile e personalizzabile; invia notifiche tramite email, irc, slack e altro ancora.
  6. Supporta un’API per gestire, graficare e recuperare dati dal tuo sistema.
  7. Offre un sistema di fatturazione del traffico.
  8. Supporta anche app Android e iOS che offrono funzionalità di base.
  9. Supporta l’integrazione con NfSen, collectd, SmokePing, RANCID e Oxidized.
  10. Supporta metodi di autenticazione multipli come MySQL, HTTP, LDAP, Radius e Active Directory.
  11. Consente l’aggiornamento automatico e molte altre funzionalità.

È disponibile una demo online per provare prima di installare LibreNMS su sistemi Linux.

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

Ambiente di test:

  1. Ubuntu 16.04 con stack LEMP
  2. CentOS 7 con stack LEMP

In questo tutorial impareremo come installare LibreNMS Network Monitoring Tool su un sistema Linux Ubuntu o CentOS appena installato (le stesse istruzioni funzionano anche su distribuzioni Debian e RHEL).

NOTA: Tutte le istruzioni in questo articolo devono essere eseguite come utente root, se non lo sei, utilizza il comando sudo per ottenere i privilegi dell’utente root.

Passaggio 1: Installare i pacchetti necessari

1. Inizia installando tutti i pacchetti necessari utilizzando il gestore di pacchetti predefinito come mostrato.

Su 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

Su 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. Una volta installati tutti i pacchetti, i servizi nginx, php-fpm, mariadb e snmp verranno avviati ed abilitati per l’avvio automatico al boot (questo è normalmente il caso di Ubuntu), altrimenti è possibile eseguire i comandi seguenti per avviarli e abilitarli.

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

Passaggio 2: Installare lo strumento di monitoraggio LibreNMS

3. Successivamente, crea un utente di sistema chiamato librenms, con il comando useradd; dove il flag -M disabilita la creazione della directory home dell’utente e -r abilita la creazione di un account di sistema. Quindi aggiungi l’utente librenms al gruppo www-data (su Ubuntu) o nginx (su CentOS) come segue.

------------ 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. Successivamente, installa LibreNMS tramite il comando composer come mostrato.

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

Passo 3: Crea il Database di LibreNMS

5. Prima di poter iniziare a utilizzare il server MariaDB, è necessario proteggere la tua installazione, esegui lo script di sicurezza fornito nel pacchetto binario. Ti chiederà di impostare una password di root, rimuovere gli utenti anonimi, disabilitare il login remoto di root e rimuovere il database di test.

Puoi avviare lo script emettendo il comando seguente e rispondendo a tutte le domande con sì/s.

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

6. Quindi accedi al database MariaDB per creare un database per LibreNMS (ricorda di utilizzare una password forte/sicura in un ambiente di produzione).

$ 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. In seguito, disabilita la modalità rigorosa di MySQL per ora (la compatibilità con la modalità rigorosa di MySQL deve ancora essere aggiunta).

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

All’interno della sezione [mysqld] per favore aggiungi.

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

Quindi riavvia il server del database per applicare le modifiche.

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

Passo 4: Configura e Avvia PHP-FPM

8. Successivamente, imposta il tuo date.timezone nel file php.ini con il tuo fuso orario attuale, ad esempio “Africa/Kampala”, come mostrato nella seguente schermata.

------------ 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. Attiva quindi il modulo PHP mcrypt in Ubuntu e riavvia php-fpm come indicato.

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

10. Su CentOS/RHEL è necessario apportare le seguenti modifiche nel file di configurazione di php-fpm.

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

Effettua le seguenti modifiche.

;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. Riavvia il servizio php-fpm come mostrato.

# systemctl restart php-fpm

Passaggio 5: Configura Nginx per LibreNMS

12. In questo passaggio, è necessario configurare un blocco server Nginx per librenms al fine di accedere all’interfaccia web. Crea un file .conf come mostrato.

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

Aggiungi il seguente config, modifica server_name come richiesto.

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. Quindi salva ed esci dal file. Rimuovi anche la configurazione predefinita del blocco server e riavvia il server Nginx.

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

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

NOTA: Su CentOS/RHEL, sarà necessario disabilitare la sezione del sito predefinito, se questo è l’unico sito che stai ospitando. Elimina la sezione del server dal file /etc/nginx/nginx.conf.

14. Anche su CentOS/RHEL, è necessario installare lo strumento di policy per SELinux e configurare i contesti necessari da LibreNMS utilizzando i seguenti comandi.

------------ 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. Consentire fping creando il file http_fping.tt con il seguente contenuto.

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. Quindi eseguire questi comandi.

------------ 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. Se stai utilizzando il Firewall su CentOS/RHEL, abilita l’accesso HTTP/HTTPS attraverso il 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

Passaggio 6: Configurare SNMPD per LibreNMS

18. Utilizza ora la configurazione di esempio SNMP per creare il tuo file di configurazione e aprilo per la modifica, come segue.

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

Trova la stringa RANDOMSTRINGGOESHERE e cambiala con la tua community string come mostrato nello screenshot.

Set SNMP String

19. Successivamente, scarica uno script shell sul tuo sistema, che aiuta a rilevare quale OS e se è Linux, quindi rileverà quale distribuzione Linux stai utilizzando:

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

Passaggio 7: Creare Cron e Configurare Logrotate

20. Ora esegui il comando di seguito per configurare un lavoro cron per LibreNMS.

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

21. Successivamente, tutti i log di LibreNMS vengono registrati in /opt/librenms/logs, è necessario configurare questi log per essere ruotati automaticamente, utilizzando il file di configurazione logrotate fornito, come segue.

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

Imposta quindi i permessi appropriati sulla directory radice dell’installazione di LibreNMS e sui file di log.

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

Passaggio 8: Accedere all’installatore web di LibreNMS

22. Successivamente, utilizza l’URL seguente per accedere all’installatore web e segui le istruzioni visualizzate.

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

Per far funzionare questo indirizzo su una macchina locale, è necessario configurare un DNS locale utilizzando il file hosts (/etc/hosts), per la risoluzione del dominio locale o per scopi di test prima di andare online.

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

23. Vedrai la pagina di benvenuto all’installazione come mostrato nello screenshot seguente, clicca su Prossima Fase per continuare.

LibreNMS Web Installer

24. Successivamente inserisci le impostazioni (host del database, porta, nome utente e password utente) per il database di LibreNMS e clicca su Prossima Fase per procedere.

LibreNMS Database Settings

25. L’installatore web inizierà ora ad importare il database MySQL, ci vorrà del tempo. Nota che il processo cercherà di mettersi in pausa in certi punti, basta cliccare su Riprova per continuare con il processo di importazione.

LibreNMS Database Importing

26. Una volta completata l’importazione del database, dovresti vedere il messaggio “Il database è aggiornato!”, come mostrato nello screenshot sottostante. Quindi clicca su Passa a Aggiungi Utente per procedere.

LibreNMS Database Updated

27. Successivamente, aggiungi un utente LibreNMS, specifica nome utente, password ed email, quindi clicca su Aggiungi Utente per effettuare le modifiche.

Add LibreNMS User

28. Ora clicca su crea la configurazione di LibreNMS per il tuo sistema, cliccando su Genera Configurazione.

Generate Librenms Config
LibreNMS Configuration

29. Una volta generata la configurazione, come mostrato nello screenshot precedente, copiala e salvala nella directory principale della tua installazione, in un file chiamato /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.Salva e chiudi il file. Quindi torna all’installatore web per continuare il processo di installazione, cliccando su Termina Installazione.

Finish LibreNMS Installation

31.Ora che l’installazione di LibreNMS è completa, puoi fare clic su “valida l’installazione e risolvi eventuali problemi”, e comparirà la pagina di accesso.

Validate LibreNMS Install

32.Successivamente, inserisci le credenziali utente per accedere alla pagina di convalida.

LibreNMS Login Page

33.Dal processo di convalida dell’installazione, LibreNMS ha riscontrato due problemi: uno riguarda l’aggiunta dei dispositivi (al momento è solo un avviso) e in secondo luogo non abbiamo impostato le autorizzazioni appropriate sul file di configurazione (/opt/librenms/config.php) che è stato aggiunto manualmente, come mostrato nello screenshot qui sotto.

LibreNMS Permission Issues

Ora esegui il seguente comando per impostare le autorizzazioni corrette sul file di configurazione.

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

34.Per aggiungere dispositivi, vai su: http://librenms.tecmint.lan/addhost. Dopo aver aggiunto i dispositivi, puoi andare alla pagina iniziale e aggiungere vari cruscotti.

LibreNMS Dashboard

Ecco fatto! Puoi trovare ulteriori informazioni, inclusa l’installazione e la configurazione, sulla Documentazione di LibreNMS su https://docs.librenms.org/.

LibreNMS è un sistema di monitoraggio di rete completo che supporta una varietà di hardware di rete. Speriamo che questa guida all’installazione sia stata chiara. Se hai domande, contattaci tramite il modulo di feedback qui sotto.

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