LibreNMS è un software open source autodiscovering di monitoraggio di rete basato su PHP / MySQL / SNMP che include il supporto per un’ampia gamma di hardware e sistemi operativi di rete tra cui Cisco, Linux, FreeBSD, Juniper, Brocade, Foundry, HP e molti altri.
CARATTERISTICHE DI LIBRENMS
Automatic discovery: scopri automaticamente l’intera rete utilizzando CDP, FDP, LLDP, OSPF, BGP, SNMP e ARP.
Avvisi personalizzabili: sistema di avviso altamente flessibile, notifica via e-mail, irc, allentamento e altro ancora.
Accesso API: un’API completa per gestire, rappresentare graficamente e recuperare i dati dall’installazione.
Sistema di fatturazione: genera fatture di larghezza di banda per le porte sulla rete in base all’utilizzo o al trasferimento.
Aggiornamenti automatici: rimani aggiornato automaticamente con correzioni di bug, nuove funzionalità e altro ancora.
Polling distribuito: ridimensionamento orizzontale per crescere con la rete.
App per iPhone: è disponibile l’app nativa per iPhone che fornisce funzionalità di base.
App Android: è disponibile l’app nativa per Android che fornisce funzionalità di base.
METODI DI AUTENTICAZIONE
MySQL
HTTP
LDAP
Active Directory
In questo tutorial, ti mostrerò come installare e configurare LibreNMS su un server CentOS 8.2.2004 con Apache come server web e MariaDB come database.
PRE-REQUISITI
Un server CentOS 8.2.2004 con un utente non root con privilegi sudo
INSTALLAZIONE PACCHETTI
Iniziamo con l’installazione delle dipendenze richieste dall’applicazione. Aggiungere il repository EPEL a RHEL / CentOS 8 con i comandi elencati di seguito:
0
1
|
sudo dnf -y install epel-release
sudo dnf install bash-completion composer 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-json php-mbstring php-process php-snmp php-xml php-zip php-mysqlnd python3 python3-PyMySQL python3-redis python3-memcached python3-pip rrdtool unzip
|
INSTALLAZIONE DI PHP E APACHE
Per installare il PHP e Apache eseguire il comando:
0 |
sudo yum install @httpd @php php-{cli,common,curl,gd,mbstring,mysqlnd,process,snmp,xml,zip}
|
Avviamo i servizi di Apache e del PHP con il comando:
0 |
sudo systemctl enable --now php-fpm httpd
|
Se è tutto corretto dovremmo vedere una schermata come mostrato nell’immagine sovrastante.
Adesso verifichiamo che i servizi siano su con il comando:
0 |
sudo systemctl status php-fpm httpd
|
Se è tutto corretto dovremmo vedere una schermata come mostrato nell’immagine sovrastante.
Verifichiamo quindi la versione di PHP installata con il comando:
0 |
php -v
|
Al momento della stesura di questa guida la versione PHP installata è la 7.2.24 come si può vedere nell’immagine sovrastante.
Procediamo come la configurazione del gtimezone nel file php.ini con il comando:
0 |
sudo nano /etc/php.ini
|
Individuare il parametro date.timezone e inserire il valore Europe/Rome
Salvare e chiudere il file php.ini
CONFIGURAZIONE DEL FIREWALL
Io per comodità, visto che il server sarà raggiungibile solo da rete interna, ho disattivato il firewall.
Nel caso vogliate utilizzare il firewall bisogna ricordare di attivare i server http e https con i seguenti comandi:
0
1
|
sudo firewall-cmd --add-service={http,https} --permanent
sudo firewall-cmd --reload
|
INSTALLAZIONE DEL DATABASE SERVER (MARIADB)
Procedere all’installazione di MariaDB usando i seguenti comandi:
Prima di tutto facciamo un update del sistema con il comando:
0 |
sudo dnf -y update
|
Installare MariaDB con il comando:
0 |
sudo dnf module install mariadb
|
Verificare la versione di MariaDB installata con il comando:
0 |
rpm -qi mariadb-server
|
Al momento della stesura di questa guida la versione di MariaDb installata è la 10.3.17 come si può vedere nell’immagine sovrastante.
Attivare il servizio di MariaDB con il comando:
0 |
sudo systemctl enable --now mariadb
|
Procedere con la mesa in sicurezza di MariaDB con il comando:
0 |
mysql_secure_installation |
Premere INVIO
Premere Y per inserire la password di root
Inserire la password due volte
Premere Y per rimuovere gli utenti anonimi
Premere Y per non permettere il login di root da remoto
Premere Y per rimuovere i database di test
Premere Y per fare un reload dei privilegi delle tabelle
Se abbiamo fatto tutto correttamante dovremmo vedere un messaggio come nell’immagine sovrastante
Fare un test di accesso al database per verificare che sia tutto ok con il comando:
0 |
mysql -u root -p
|
Inserire la password di root configurata in precedenza
Se è tutto OK dovremmo vedere un messaggio come nell’immagine sovrastante
CONFIGURAZIONE DEL DATABASE SERVER (MARIADB)
Procedere alla configurazione del database server accedendo con l’utente root con il comando:
0 |
mysql -u root -p
|
Inserire la password dell’utente root
Eseguire i comandi in sequenza:
0
1
2
3
4
|
CREATE DATABASE librenms CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'PasswordUtente';
GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
FLUSH PRIVILEGES;
exit
|
NOTA BENE: al posto di PasswordUtente inserire la password dell’utente librenms che utilizzeremo successivamente
Se abbiamo fatto tutto correttamante dovremmo vedere una schermata come nell’immagine sovrastante
Editare il file my.cnf con il comando:
0 |
sudo nano /etc/my.cnf.d/mariadb-server.cnf
|
Nella sezione [mysqld] aggiungiere le seguenti righe:
0
1
|
innodb_file_per_table=1
lower_case_table_names=0
|
Se è tutto corretto dovremmo vedere una schermata come nell’immagine sovrastante
Salvare e chiudere il file di configurazione
Abilitare MariaDB con il comando:
0 |
sudo systemctl enable mariadb
|
Quindi riavviare il servizio con il comando:
0 |
sudo systemctl restart mariadb
|
verificare che MariaDb sia in esecuzione con il comando:
0 |
systemctl status mariadb
|
Se è tutto corretto dovremmo vedere una schermata come nell’immagine sovrastante
INSTALLAZIONE E CONFIGURAZIONE DI GIT
Innanzitutto, utilizzare gli strumenti di gestione dei pacchetti DNF per aggiornare l’indice del pacchetto locale eseguendo il comando:
0 |
sudo dnf update -y
|
Procedere all’installazione di GIT con il comando:
0 |
sudo dnf install git -y
|
Per verificare la versione di GIT installata esesguire il comando
0 |
git --version
|
Al momento della stesura di questa guida la versione di GIT installata è la 2.18.4 come si può vedere nell’immagine sovsratante
INSTALLAZIONE E CONFIGURAZIONE DI LIBRENMS
Prima di tutto aggiungiamo l’utente librenms con il comando:
0 |
sudo useradd librenms -d /opt/librenms -M -r
|
Quindi per apache eseguiamo il comando:
0 |
sudo usermod -a -G librenms apache
|
Clonare LibreNMS da GitHub con i seguenti comandi:
0
1
2
|
cd /opt
sudo git clone https://github.com/librenms/librenms.git
sudo chown librenms:librenms -R /opt/librenms
|
Se è andato tutto a buon fine dovremmo vedere una schermata come nell’immagine sovrastante
Installare quindi le dipendenze del PHP con il comando:
0
1
|
cd /opt/librenms
sudo ./scripts/composer_wrapper.php install --no-dev
|
Se è andato tutto a buon fine al fondo degli script dovremmo leggere Application key set successfully
INSTALLAZIONE CONFIGURAZIONE DEL DEMONE SNMPD
Prima di tutto procedere con l’installazione dell’SNMP e delle relative utility con il comando:
0 |
yum install net-snmp net-snmp-utils
|
Copiare e configurare l’SNMP con i seguenti comandi:
0
1
|
sudo cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
sudo nano /etc/snmp/snmpd.conf
|
Inserire la stringa della nostra community al posto di RANDOMSTRINGGOESHERE
Salvare e chiudere il file di configurazione
Scaricare lo script di identificazione della versione della distribuzione con i seguenti comandi:
0
1
|
sudo curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
sudo chmod +x /usr/bin/distro
|
Avviare ed abilitare il demone SNMPD con i seguenti comandi:
0
1
|
sudo systemctl enable snmpd
sudo systemctl restart snmpd
|
Quindi verificare lo stato del servizi con il comando:
0 |
sudo systemctl status snmpd
|
Se il servizio è attivo dovremmo vedere una schermata come nell’immagine sovrastante
ABILITAZIONE DEL COMPLETAMENTO DEL COMANDO INMS
Questa caratteristica ti dà l’opportunità di usare tab per il completamento sui comandi lnms come faresti per i normali comandi linux.
Per attivare questa funzionalità eseguire i due comandi di seguito riportati:
0
1
|
ln -s /opt/librenms/lnms /usr/local/bin/lnms
cp /opt/librenms/misc/lnms-completion.bash /etc/bash_completion.d/
|
CONFIGURAZIONE DEL PHP-PFM
Per configurare il PHP-PFM eseguire i comandi elencati di seguito:
0
1
|
sudo cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/librenms.conf
sudo nano /etc/php-fpm.d/librenms.conf
|
All’interno del file eseguire le modifiche seguenti:
Al posto di [/vc_column_text][/vc_column][/vc_row][vc_row][vc_column][vc_column_text][www][/vc_column_text][/vc_column][/vc_row][vc_row][vc_column][vc_column_text] inserire [librenms]
Al posto di user = apache inserire user = librenms
Al posto di group = apache inserire group = librenms
Al parametro listen inserire listen = /run/php-fpm-librenms.sock
CONFIGURAZIONE DI APACHE
Creare un nuovo file di configurazione di Apache con il comando:
0 |
sudo nano /etc/httpd/conf.d/librenms.conf
|
All’interno del file incollare le segueti righe di codice:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<VirtualHost *:80>
DocumentRoot /opt/librenms/html/
ServerName librenms.server.com
AllowEncodedSlashes NoDecode
<Directory "/opt/librenms/html/">
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
</Directory>
# Enable http authorization headers
<IfModule setenvif_module>
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
</IfModule>
<FilesMatch ".+\.php$">
SetHandler "proxy:unix:/run/php-fpm-librenms.sock|fcgi://localhost"
</FilesMatch>
</VirtualHost>
|
NOTA BENE: al posto di librenms.server.com inserire il nome DNS del nostro server
Salvare e chiudere il file di configurazione
Riavviare i servizi con i seguenti comandi:
0
1
|
sudo systemctl enable --now httpd
sudo systemctl enable --now php-fpm
|
CONFIGURAZIONE DELLA POLICY SELINUX
Per consentire ad Apache di servire i file nella cartella /opt/librenms/html/ eseguire i comandi elencati di seguito:
0 |
sudo dnf install policycoreutils-python-utils
|
quindi eseguire:
0
1
2
3
4
5
|
sudo semanage fcontext -a -t httpd_sys_content_t '/opt/librenms/html(/.*)?'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/opt/librenms/(logs|rrd|storage)(/.*)?'
sudo restorecon -RFvv /opt/librenms
sudo setsebool -P httpd_can_sendmail=1
sudo setsebool -P httpd_execmem 1
sudo chcon -t httpd_sys_rw_content_t /opt/librenms/.env
|
ATTENZIONE: Potrebbe capitare che molti comandi restituiscono il messaggio Already defined, non preoccuparsi ed andare avanti nell’esecuzione dei comandi
INSTALLAZIONE E CONFIGURAZIONE DI FPING
Procedere all’installazione di fping con il comando:
0 |
sudo yum install fping
|
Posizionarsi nella cartella /etc con il comando
0 |
cd /opt/librenms
|
Creare il file http_fping.tt con il seguente comando:
0 |
sudo nano http_fping.tt
|
Inserire quindi le seguenti righe di codice
0
1
2
3
4
5
6
7
8
9
10
|
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 };
|
Salvare e chiudere il file
Eseguire i comandi elencati di seguito:
0
1
2
|
sudo checkmodule -M -m -o http_fping.mod http_fping.tt
sudo semodule_package -o http_fping.pp -m http_fping.mod
sudo semodule -i http_fping.pp
|
Riavviare il servizio httpd con il comando:
0 |
sudo systemctl restart httpd
|
INSTALLAZIONE DELL’UTILITY RRDTOOL
Per installare l’utility RRDTool eseguire il comando:
0 |
sudo yum install rrdtool
|
CONFIGURAZIONE DEL CRON JOBS E DEL LOGROTATE
Eseguire il comando:
0 |
sudo cp /opt/librenms/librenms.nonroot.cron /etc/cron.d/librenms
|
LibreNMS conserva i log nella directory /opt/librenms/logs.
Nel tempo questi log possono crescere e diventare grandi e quindi è il caso di ruotarli.
Per ruotare i vecchi log è possibile utilizzare il file di configurazione logrotate fornito con il comando:
0 |
sudo cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms
|
Quindi settare le ACL con i seguenti comandi:
0
1
2
3
|
sudo chown -R librenms:librenms /opt/librenms
setfacl -d -m g::rwx /opt/librenms/logs
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/
|
INSTALLAZIONE WEB DI LIBRENMS
Aprire un qualsiasi browser e richiamare il nome del server censito in fase di configurazione
http://nome-del-server-librenms/install
Nella fase Pre-Install Checks dovremmo vedere tutto verde come nell’immagine sovrastante
Cliccare sull’icona del database quindi inserire tutti i parametri richiesti
Al termine cliccare su Check Credentials
Cliccare su Build Database
Dopo qualche secondo se è andato tutto a buon fine dovremmo vedere una schermata come quella sovrastante
Cliccare sull’icona con la chiave
Inserire le credenziali amministrative di accesso alla pagina web quindi cliccare su Add User
Se è andato tutto a buon fine dovremmo vedere una schermata come quella sovrastante
Cliccare sull’ultima icona per scrivere le modifiche all’interno dei file config.php e del file .env
ATTENZIONE: Come nel mio caso se non riesce a scrivere le modifiche nessun problema, basta editare il file da console SSH
Per modificare il file .env eseguire il comando:
0 |
sudo nano /opt/librenms/.env
|
Dovremmo vedere un contenuto del file simile a quello mostrato nell’immagine sovrastante
A questo punto non ci resta che copiare le righe di codice che vediamo nella pagina web all’interno del file .env
Salvare e chiudere il file di configurazione
Se proviamo a cliccare di nuovo sull’ultima icona nella pagina web dovrebbe partire un redirect che ci porta sulla pagina di login del notro LibreNMS.
Inserire le credenziali create in precedenza quindi cliccare su Login
A questo punto non ci resta che censire i nostri apparati ed iniziare a monitorarli.
Sono Raffaele Chiatto, un appassionato di informatica a 360 gradi.
Tutto è iniziato nel 1996, quando ho scoperto il mondo dell'informatica grazie a Windows 95, e da quel momento non ho più smesso di esplorare e imparare.
Ogni giorno mi dedico con curiosità e passione a scoprire le nuove frontiere di questo settore in continua evoluzione.
0 commenti