LibreNMS – Un outil de surveillance de réseau entièrement fonctionnel pour Linux

LibreNMS est un système de surveillance de réseau open source, puissant et riche en fonctionnalités, basé sur PHP, qui utilise le protocole SNMP. Il prend en charge un large éventail de systèmes d’exploitation, notamment Linux, FreeBSD, ainsi que des équipements réseau tels que Cisco, Juniper, Brocade, Foundry, HP et bien d’autres.

Fonctionnalités de LibreNMS:

  1. Il découvre automatiquement l’ensemble du réseau en utilisant les protocoles suivants : CDP, FDP, LLDP, OSPF, BGP, SNMP et ARP.
  2. Il dispose d’une interface Web adaptée aux mobiles, avec des tableaux de bord personnalisables.
  3. Prise en charge d’un agent Unix.
  4. Prise en charge d’une mise à l’échelle horizontale pour s’étendre avec votre réseau.
  5. Prise en charge d’un système d’alerte hautement flexible et personnalisable ; envoie des notifications par e-mail, IRC, Slack et plus encore.
  6. Prise en charge d’une API pour gérer, graphiquer et récupérer des données à partir de votre système.
  7. Propose un système de facturation du trafic.
  8. Prend également en charge des applications Android et iOS offrant des fonctionnalités de base.
  9. Prise en charge de l’intégration avec NfSen, collectd, SmokePing, RANCID et Oxidized.
  10. Prise en charge de plusieurs méthodes d’authentification telles que MySQL, HTTP, LDAP, Radius et Active Directory.
  11. Permet la mise à jour automatique et de nombreuses autres fonctionnalités.

Une démo en ligne est disponible pour que vous puissiez l’essayer avant d’installer LibreNMS sur des systèmes Linux.

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

Environnement de test:

  1. Ubuntu 16.04 avec LEMP Stack
  2. CentOS 7 avec LEMP Stack

Dans ce tutoriel, nous apprendrons comment installer l’outil de surveillance réseau LibreNMS sur un système Linux Ubuntu ou CentOS fraîchement installé (les mêmes instructions fonctionnent également sur les distributions Debian et RHEL).

REMARQUE: Toutes ces instructions dans cet article doivent être exécutées en tant qu’utilisateur root, si ce n’est pas le cas, utilisez la commande sudo pour obtenir les privilèges de l’utilisateur root.

Étape 1: Installer les paquets requis

1. Commencez d’abord par installer tous les paquets requis en utilisant le gestionnaire de paquets par défaut comme indiqué.

Sous 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

Sous 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. Une fois que tous les paquets sont installés, les services nginx, php-fpm, mariadb et snmp seront démarrés et activés pour démarrer automatiquement au démarrage (c’est normalement le cas avec Ubuntu), sinon, vous pouvez exécuter les commandes ci-dessous pour les démarrer et les activer.

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

Étape 2: Installer l’outil de surveillance LibreNMS

3. Ensuite, créez un utilisateur système nommé librenms en utilisant la commande useradd ; l’option -M désactive la création du répertoire personnel de l’utilisateur, tandis que -r active la création d’un compte système. Ensuite, ajoutez l’utilisateur librenms au groupe www-data (sur Ubuntu) ou nginx (sur CentOS), comme indiqué ci-après.

------------ 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. Installez ensuite LibreNMS via la commande composer comme illustré.

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

Step 3: Créer la base de données LibreNMS

5. Avant de pouvoir utiliser le serveur MariaDB, vous devez sécuriser votre installation en exécutant le script de sécurité fourni dans le paquet binaire. Celui-ci vous demandera de définir un mot de passe root, de supprimer les utilisateurs anonymes, de désactiver le login root à distance et de supprimer la base de données de test.

Vous pouvez lancer ce script en émettant la commande ci-après et répondre oui (yes/y) à toutes les questions.

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

6. Connectez-vous ensuite à la base de données MariaDB pour créer une base de données pour LibreNMS (n’oubliez pas d’utiliser un mot de passe fort et sûr dans un environnement de production).

$ 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. Par la suite, désactivez pour le moment le mode strict de MySQL (la compatibilité avec le mode strict de MySQL n’est pas encore ajoutée).

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

Ajoutez dans la section [mysqld] le code suivant.

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

Redémarrez ensuite le serveur de base de données pour mettre en œuvre les modifications.

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

Step 4: Configurer et démarrer PHP-FPM

8. Ensuite, configurez votre date.timezone dans le fichier php.ini à votre fuseau horaire actuel, par exemple “Africa/Kampala”, comme illustré dans la capture d’écran suivante.

------------ 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. Ensuite, activez le module PHP mcrypt dans Ubuntu et redémarrez php-fpm comme indiqué.

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

10. Sur CentOS/RHEL, vous devez faire les modifications suivantes dans le fichier de configuration de php-fpm.

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

Faites les modifications suivantes.

;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. Redémarrez le service php-fpm comme indiqué.

# systemctl restart php-fpm

Étape 5 : Configurer Nginx pour LibreNMS

12. Dans cette étape, vous devez configurer un bloc serveur Nginx pour Nginx afin d’accéder à l’interface Web de LibreNMS. Créez un fichier .conf pour celui-ci, comme illustré.

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

Ajoutez les configurations suivantes, éditez server_name comme requis.

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. Ensuite, enregistrez et quittez le fichier. Supprimez également la configuration de bloc serveur par défaut et redémarrez le serveur Nginx.

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

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

NOTE : Sur CentOS/RHEL, vous devrez désactiver la section default site, si c’est la seule site que vous hébergez. Supprimez la section serveur de votre fichier /etc/nginx/nginx.conf.

14. De plus, sur CentOS/RHEL, vous devez installer l’outil de politique pour SELinux et configurez les contexts nécessaires par LibreNMS en utilisant les commandes suivantes.

------------ 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. Autoriser fping en créant le fichier http_fping.tt avec les contenu suivants.

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. Ensuite, exécutez les commandes suivantes.

------------ 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. Si vous utilisez un Pare-Feu sur CentOS/RHEL, activez l’accès HTTP/HTTPS par le pare-feu.

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

Étape 6 : Configurer SNMPD pour LibreNMS

18. Maintenant, utilisez le modèle de configuration SNMP pour créer votre fichier de configuration et ouvrez-le pour l’édition, comme suit.

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

Recherchez la chaîne RANDOMSTRINGGOESHERE et changez-la par votre propre chaîne de communauté, comme illustré dans la capture d’écran.

Set SNMP String

19. Ensuite, téléchargez un script shell sur votre système, qui aide à détecter quelle OS et si c’est Linux, alors il détectera quelle distribution Linux vous utilisez :

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

Étape 7 : Créer un Cron et Configurer Logrotate

20. Maintenant, exécutez la commande ci-dessous pour configurer un job cron pour LibreNMS.

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

21. Ensuite, tous les logs de LibreNMS sont enregistrés dans /opt/librenms/logs, vous devez configurer ces journaux pour être auto-rotatés, en utilisant le fichier de configuration de logrotate fourni, comme ceci.

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

Ensuite, définissez les permissions appropriées sur le répertoire racine de l’installation de LibreNMS et sur les fichiers de journal.

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

Étape 8 : Accéder au Web Installer de LibreNMS

22. Ensuite, utilisez l’URL suivante pour accéder au web installer et suivez les instructions à l’écran.

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

Pour que cette adresse fonctionne sur une machine locale, vous devez configurer un DNS local en utilisant le fichier hosts (/etc/hosts), pour la résolution de domaine local ou à des fins de test avant de le rendre accessible au public.

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

23. Vous verrez la page d’accueil de l’installation comme indiqué dans la capture d’écran suivante, cliquez sur Étape suivante pour continuer.

LibreNMS Web Installer

24. Ensuite, entrez les paramètres (hôte de la base de données, port, nom d’utilisateur et mot de passe de l’utilisateur) pour la base de données LibreNMS et cliquez sur Étape suivante pour procéder.

LibreNMS Database Settings

25. L’installateur web commencera maintenant à importer la base de données MySQL, cela prendra un certain temps. Notez que le processus essaiera de faire une pause à certains moments, cliquez simplement sur Réessayer pour continuer le processus d’importation.

LibreNMS Database Importing

26. Une fois l’importation de la base de données terminée, vous devriez voir le message « La base de données est à jour ! », comme indiqué dans la capture d’écran ci-dessous. Ensuite, cliquez sur Aller à Ajouter un utilisateur pour procéder.

LibreNMS Database Updated

27. Ensuite, ajoutez un utilisateur LibreNMS, spécifiez le nom d’utilisateur, le mot de passe et l’e-mail, puis cliquez sur Ajouter un utilisateur pour effectuer les changements.

Add LibreNMS User

28. Cliquez maintenant sur créer la configuration LibreNMS pour votre système, en cliquant sur Générer Config.

Generate Librenms Config
LibreNMS Configuration

29. Une fois la configuration générée, comme indiqué dans la capture d’écran précédente, copiez-la et enregistrez-la dans le répertoire racine de votre installation, dans un fichier appelé /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. Enregistrez et fermez le fichier. Ensuite, retournez à l’installateur web pour continuer le processus d’installation en cliquant sur Terminer l’installation.

Finish LibreNMS Installation

31. Maintenant, votre installation de LibreNMS est terminée, vous pouvez cliquer sur « valider votre installation et corriger les problèmes éventuels« , la page de connexion devrait apparaître.

Validate LibreNMS Install

32. Ensuite, saisissez vos informations d’identification utilisateur pour accéder à la page de validation.

LibreNMS Login Page

33. Dans le processus de validation de l’installation, LibreNMS a découvert deux problèmes, l’un est que les appareils n’ont pas été ajoutés (ceci est une alerte pour l’instant), et deuxièmement, nous n’avons pas défini les permissions appropriées sur le fichier de configuration (/opt/librenms/config.php) qui a été ajouté manuellement, comme indiqué dans la capture d’écran ci-dessous.

LibreNMS Permission Issues

Exécutez maintenant la commande suivante pour définir les permissions correctes sur le fichier de configuration.

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

34. Pour ajouter des appareils, rendez-vous sur : http://librenms.tecmint.lan/addhost. Après avoir ajouté des appareils, vous pouvez accéder à la page d’accueil et ajouter différents tableaux de bord.

LibreNMS Dashboard

C’est tout ! Vous pouvez trouver plus d’informations, y compris l’installation et la configuration, dans la documentation de LibreNMS à l’adresse https://docs.librenms.org/.

LibreNMS est un système de surveillance réseau complet qui prend en charge une variété de matériels réseau. Nous espérons que ce guide d’installation a été clair, si vous avez des questions, contactez-nous via le formulaire de feedback ci-dessous.

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