LibreNMS | Supervision avancée de votre réseau


Présentation


LibreNMS est un projet démarré en 2006 par Adam Armstrong puis ouvert à la communauté en 2013. Cet outil de supervision vous permet de superviser quasiment tout ce qui est possible et imaginable sur un réseau.
Le développement avance relativement vite et est de plus en plus apprécié par la communauté. C’est un des principaux remplaçant de Cacti qui n’est plus maintenu (même si le dev a repris depuis peu).

Pour l’essayer, vous pouvez vous rendre sur https://demo.librenms.org/login (demo en login et password)

LibreNMS est principalement codé en JavaScript et PHP, il est donc assez gourmand en ressources…


Mise en place


Démarrons sur une VM Ubuntu 16.04 fraîchement installée et à jour.

(Pour les étapes suivantes, nous considérerons que vous êtes connecté avec l’utilisateur root).

Étape 1 : Installation et configuration de la base de données MySQL

Installation de MySQL :

1
2
3
apt-get install mariadb-server mariadb-client
systemctl restart mysql
mysql -u root -p

Configuration de MySQL :

1
2
3
4
CREATE DATABASE librenms CHARACTER SET utf8 COLLATE utf8_unicode_ci;
GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost' IDENTIFIED BY 'UnMotDePasseFort';
FLUSH PRIVILEGES;
exit

Configuration de mysqld :
vi /etc/mysql/mariadb.conf.d/50-server.cnf

Et ajoutez à la suite de [mysqld]:

1
2
innodb_file_per_table=1
sql-mode=""

Redémarrage de MySQL :
systemctl restart mysql

Vérification du bon redémarrage de MySQL :
systemctl status mysql

En cas d’erreurs, consultez /var/log/syslog et reprenez les étapes précédentes

Étape 2 : Installation et configuration du serveur Web

Installation de nginx et des dépendances pour LibreNMS :

1
apt-get install php7.0-cli php7.0-mysql php7.0-gd php7.0-snmp php-pear php7.0-curl php7.0-fpm snmp graphviz php7.0-mcrypt php7.0-json nginx-full fping imagemagick whois mtr-tiny nmap python-mysqldb snmpd php-net-ipv4 php-net-ipv6 rrdtool git

Configuration de php fpm et cli :
Éditez les deux fichiers suivants et configurez la timezone
vi /etc/php/7.0/fpm/php.ini
vi /etc/php/7.0/cli/php.ini

1
2
[Date]
date.timezone = Europe/Paris

💡 ProTIP! Avec la commande vi

1
/

recherchez le terme « Date » :

1
/Date

Le paramètre Date se trouve à la ligne 921. Pour afficher les numéros de lignes dans vi, exécutez la commande

1
:set number

pendant l’édition de votre fichier

Puis on redémarre php fpm et on active le module mcrypt pour php :

1
2
systemctl restart php7.0-fpm
phpenmod mcrypt

Création de l’utilisateur librenms :

1
2
useradd librenms -d /opt/librenms -M -r
usermod -a -G librenms www-data

Clonage du dépôt GIT :

1
2
cd /opt
git clone https://github.com/librenms/librenms.git librenms

Création des dossiers qui contiendront les logs et les données rrd :

1
2
3
cd /opt/librenms
mkdir rrd logs
chmod 775 rrd

Configuration Nginx :
On désactive le site par défaut de nginx :

1
rm /etc/nginx/sites-enabled/default

On ajoute la configuration pour LibreNMS :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
vi /etc/nginx/conf.d/librenms.conf
server {
listen      80;
server_name librenms.example.com;
root        /opt/librenms/html;
index       index.php;
access_log  /opt/librenms/logs/access_log;
error_log   /opt/librenms/logs/error_log;
gzip on;
gzip_types text/css application/x-javascript text/richtext image/svg+xml text/plain    text/xsd text/xsl text/xml image/x-icon;
location / {
try_files $uri $uri/ @librenms;
}
location ~ \.php {
include fastcgi.conf;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
location @librenms {
rewrite api/v0(.*)$ /api_v0.php/$1 last;
rewrite ^(.+)$ /index.php/$1 last;
}
}

Vérification de la configuration et redémarrage de nginx :

1
2
nginx -t
systemctl restart nginx

Étape 3 : Finalisation de l’installation du WebGUI via le Web installer

Connectez-vous en web à votre serveur LibreNMS et suivez les étapes suivantes :

Pour la prochaine étape, il est possible que vous obteniez une erreur (voir ci-dessous). Pour pallier au problème, copier/coller le contenu fourni dans le fichier

1
config.php

que vous créerez dans

1
/opt/librenms

:

Retour sur notre console SSH

Étape 4 : Configuration de snmpd

Copiez le fichier exemple de LibreNMS dans vers /etc/snmp/snmpd.conf :

1
2
mv /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.old
cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf

Puis remplacez

1
RANDOMSTRINGGOESHERE

par le nom de votre communauté snmp :

1
vi /etc/snmp/snmpd.conf
1
com2sec readonly  default         snmp-community

Enfin récupérez le script distro pour permettre à LibreNMS de détecter la version de votre OS :

1
2
3
curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
chmod +x /usr/bin/distro
systemctl restart snmpd

Étape 5 : Finalisation

Création d’une tâche Cron :

1
cp librenms.nonroot.cron /etc/cron.d/librenms

Rotation des logs :
Par défaut les logs sont en enregistrés dans

1
/opt/librenms/logs

. Après un certains temps d’utilisation, ces logs peuvent grossir et prendre beaucoup de place. Pour palier à ce problème, on peut s’appuyer sur un fichier de configuration qui effectuera une rotation des vieux fichiers de logs.

1
cp misc/librenms.logrotate /etc/logrotate.d/librenms

Validation :
Une fois toutes ces étapes passées, changez l’utilisateur et le group propriétaire du dossier de LibeNMS :

1
chown -R librenms:librenms /opt/librenms

Puis validez le bon fonctionnement avec la commande suivante :

1
./validate.php

[OK] Database connection successful

Source

Enjoy ! 🙂