LibreNMS è un sistema di monitoraggio della rete open source con funzionalità complete. Utilizza SNMP
per ottenere i dati da diversi dispositivi. Una vasta gamma di dispositivi è supportata in LibreNMS come Cisco, Linux, FreeBSD, Juniper, Brocade, Foundry, HP e molti altri. Supporta molteplici meccanismi di autenticazione e supporta l'autenticazione a due fattori. Ha un sistema di allerta personalizzabile che può avvisare l'amministratore di rete via e-mail, IRC o slack.
Prerequisiti
Per questo tutorial, useremo nms.example.com
come nome di dominio puntato verso l'istanza Vultr. Assicurati di sostituire tutte le occorrenze del nome di dominio di esempio con quello effettivo.
Aggiorna il tuo sistema di base usando la guida Come aggiornare CentOS 7 . Dopo aver aggiornato il sistema, procedere con l'installazione delle dipendenze.
Installa Nginx e PHP
Il front-end di LibreNMS è sostanzialmente scritto in PHP, quindi dovremo installare un web server e PHP. In questo tutorial, installeremo Nginx insieme a PHP 7.2 per ottenere la massima sicurezza e prestazioni.
Installa Nginx.
sudo yum -y install nginx
Avvia Nginx e abilita l'avvio automatico all'avvio.
sudo systemctl start nginx
sudo systemctl enable nginx
Aggiungi e abilita il repository Remi, poiché il repository YUM predefinito contiene una versione precedente di PHP.
sudo rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum -y install yum-utils
sudo yum-config-manager --enable remi-php72
Installa PHP versione 7.2 insieme ai moduli richiesti da LibreNMS.
sudo yum -y install php php-cli php-common php-curl php-fpm php-gd php-mcrypt php-mysql php-process php-snmp php-xml php-zip
Apri il file di configurazione caricato da PHP in un editor.
sudo nano /etc/php.ini
Trova le seguenti righe, decommenta e modifica il loro valore come mostrato.
;cgi.fix_pathinfo=1
memory_limit = 128M
;date.timezone =
Usa invece questi valori, sostituiscili Asia/Kolkata
con il tuo fuso orario locale.
cgi.fix_pathinfo=0
memory_limit = -1
date.timezone = Asia/Kolkata
Sarà inoltre necessario modificare il fuso orario del sistema eseguendo il comando seguente.
sudo ln -sf /usr/share/zoneinfo/Asia/Kolkata /etc/localtime
Ora apri il file di configurazione PHP-FPM.
sudo nano /etc/php-fpm.d/www.conf
Trova la seguente riga.
listen = 127.0.0.1:9000
Sostituirlo con la seguente riga.
listen = /var/run/php-fpm/php-fpm.sock
Per impostazione predefinita, PHP-FPM è configurato per l'utente del server Web Apache. Cambia l'utente in nginx
.
user = nginx
group = nginx
Inoltre, decommenta le seguenti righe.
listen.owner = nobody
listen.group = nobody
Salvare il file ed uscire dall'editor. Riavvia PHP-FPM e abilitalo all'avvio.
sudo systemctl restart php-fpm
sudo systemctl enable php-fpm
Impostare la proprietà appropriata sul file socket.
sudo chown nginx:nginx /var/run/php-fpm/php-fpm.sock
Installa MariaDB
MariaDB è un fork di MySQL. Aggiungi il repository MariaDB nel tuo sistema. Il yum
repository predefinito contiene una versione precedente di MariaDB.
echo "[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1" | sudo tee /etc/yum.repos.d/mariadb.repo
Installa MariaDB.
sudo yum -y install mariadb mariadb-server
Ora apri il file di configurazione di MySQL.
sudo nano /etc/my.cnf
Aggiungi le seguenti righe alla fine del blocco.
[mysqld]
innodb_file_per_table=1
sql-mode=""
lower_case_table_names=0
Riavvia MariaDB e abilita l'avvio automatico all'avvio.
sudo systemctl restart mariadb
sudo systemctl enable mariadb
Prima di configurare il database, è necessario prima proteggere MariaDB.
sudo mysql_secure_installation
Ti verrà chiesta la password di root di MariaDB corrente. Per impostazione predefinita, non esiste una password di root in una nuova installazione di MariaDB. Premere il tasto " Enter
" per procedere. Imposta una password complessa per l' root
utente del tuo server MariaDB e rispondi " Y
" a tutte le altre domande che vengono poste. Le domande poste sono autoesplicative.
Accedi alla shell MySQL come root.
mysql -u root -p
Fornire la password per l'utente root MariaDB per accedere.
Eseguire le seguenti query per creare un database e un utente del database per l'installazione di LibreNMS.
CREATE DATABASE librenms CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'StrongPassword';
GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
FLUSH PRIVILEGES;
EXIT;
È possibile sostituire il nome del database librenms
e il nome utente in librenms
base alla propria scelta. Assicurati di passare StrongPassword
a una password molto sicura .
Installa LibreNMS
Oltre alle dipendenze di cui sopra, LibreNMS ha bisogno di poche altre dipendenze. Installali eseguendo.
sudo yum -y install cronie fping git ImageMagick jwhois mtr MySQL-python net-snmp net-snmp-utils nmap python-memcached rrdtool
Aggiungi un nuovo utente senza privilegi per l'applicazione LibreNMS.
sudo useradd librenms -d /opt/librenms -M -r
sudo usermod -a -G librenms nginx
LibreNMS può essere installato direttamente clonando il suo repository Github.
cd /opt
sudo git clone https://github.com/librenms/librenms.git librenms
Correggi la proprietà.
sudo chown librenms:librenms -R /opt/librenms
LibreNMS si affida a SNMP per molte attività. Poiché abbiamo già installato SNMP, copia il file di configurazione di esempio nella sua posizione.
sudo cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
Apri il file di configurazione nell'editor.
sudo nano /etc/snmp/snmpd.conf
Trova questa linea.
com2sec readonly default RANDOMSTRINGGOESHERE
Modifica il testo RANDOMSTRINGGOESHERE
e sostituisci la stringa di comunità con qualsiasi stringa di tua scelta. Per esempio.
com2sec readonly default my-org
Ricorda la stringa poiché sarà richiesta in seguito quando aggiungiamo il primo dispositivo SNMP.
SNMP necessita anche di informazioni sulla versione di distribuzione. Scarica e installa lo script per trovare la versione di distribuzione.
sudo curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
sudo chmod +x /usr/bin/distro
Avviare il servizio daemon SNMP e abilitarlo ad avviarsi automaticamente all'avvio.
sudo systemctl enable snmpd
sudo systemctl restart snmpd
Ora dovrai aggiungere alcune voci crontab per eseguire le attività pianificate. Crea un nuovo file di lavoro cron.
sudo nano /etc/cron.d/librenms
Popolare il file con il seguente testo.
33 */6 * * * librenms /opt/librenms/cronic /opt/librenms/discovery-wrapper.py 1
*/5 * * * * librenms /opt/librenms/discovery.php -h new >> /dev/null 2>&1
*/5 * * * * librenms /opt/librenms/cronic /opt/librenms/poller-wrapper.py 16
15 0 * * * librenms /opt/librenms/daily.sh >> /dev/null 2>&1
* * * * * librenms /opt/librenms/alerts.php >> /dev/null 2>&1
*/5 * * * * librenms /opt/librenms/poll-billing.php >> /dev/null 2>&1
01 * * * * librenms /opt/librenms/billing-calculate.php >> /dev/null 2>&1
*/5 * * * * librenms /opt/librenms/check-services.php >> /dev/null 2>&1
Riavvia il servizio daemon cron.
sudo systemctl restart crond
Configurare in logrotate
modo che i file di registro vengano aggiornati automaticamente nel tempo.
sudo cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms
Infine, imposta la proprietà e le autorizzazioni appropriate.
sudo chown -R librenms:nginx /opt/librenms
sudo chmod g+w -R /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
Configurazioni SSL e Nginx VHost
Gli accessi e le altre informazioni inviate tramite l'interfaccia Web di LibreNMS non sono protetti se la connessione non è crittografata con SSL. Configureremo Nginx per utilizzare SSL generato con Let's Encrypt SSL gratuito.
Installa Certbot, che è l'applicazione client per Let's Encrypt CA.
sudo yum -y install certbot
Prima di poter richiedere i certificati, è necessario consentire la porta 80
e 443
, o standard HTTP
e HTTPS
servizi attraverso il firewall.
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload
Nota : per ottenere certificati da Let's Encrypt CA, il dominio per il quale devono essere generati i certificati deve essere puntato verso il server. In caso contrario, apportare le modifiche necessarie ai record DNS del dominio e attendere la propagazione del DNS prima di effettuare nuovamente la richiesta di certificato. Certbot controlla l'autorità di dominio prima di fornire i certificati.
Genera i certificati SSL:
sudo certbot certonly --webroot -w /usr/share/nginx/html -d nms.example.com
È probabile che i certificati generati siano archiviati nella /etc/letsencrypt/live/nms.example.com/
directory. Il certificato SSL verrà archiviato come fullchain.pem
e la chiave privata verrà archiviata come privkey.pem
.
Let's Encrypt certificati scadranno tra 90 giorni, quindi si consiglia di impostare il rinnovo automatico per i certificati utilizzando un processo cron.
Apri il file di lavoro cron.
sudo crontab -e
Aggiungi la seguente riga alla fine del file.
30 5 * * 1 /usr/bin/certbot renew --quiet
Il cron job sopra verrà eseguito ogni lunedì alle 5:30 ora locale. Se il certificato è in scadenza, verrà automaticamente rinnovato.
Crea un nuovo host virtuale.
sudo nano /etc/nginx/conf.d/nms.example.com.conf
Popolare il file.
server {
listen 80;
server_name nms.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name nms.example.com;
ssl_certificate /etc/letsencrypt/live/nms.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/nms.example.com/privkey.pem;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
access_log /opt/librenms/logs/librenms.nginx.access.log;
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-fpm/php-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
Sostituisci nms.example.com
con il tuo dominio attuale nella configurazione sopra.
Riavvia Nginx.
sudo chown nginx:nginx /var/lib/php/session
sudo systemctl restart nginx
Installazione tramite WebUI
Per completare l'installazione, apri https://nms.example.com
il tuo browser preferito. Vedrai che i requisiti sono soddisfatti. Fornire i dettagli del database e creare un nuovo account amministrativo. Una volta installato, riceverai un messaggio per convalidare l'installazione. Fare clic sul collegamento e accedere utilizzando l'account amministratore. Vedrai che tutto tranne lo " Poller
" ha uno stato " Ok
".

Ora, fai clic sul collegamento per aggiungere un dispositivo. Sull'interfaccia " Add Device
", fornire il nome host come localhost e lasciare tutto così com'è. Fornisci la stringa della community nel campo della community. Deve essere esattamente la stessa stringa fornita snmpd.conf
durante la configurazione di SNMP.

Una volta aggiunto il dispositivo, è possibile visualizzare i dettagli andando alla Devices
scheda " ".

Allo stesso modo, è possibile aggiungere più dispositivi nell'applicazione LibreNMS per il monitoraggio "24 ore su 24".