LibreNMS est un logiciel de supervision permettant notamment de :

  • découvrir automatiquement un réseau,
  • configurer des alertes,
  • gérer, représenter et extraire des données de sur le réseau,
  • générer des rapports sur les bandes passantes des ports utilisés du réseau,
  • rester à jour automatiquement,
  • s’adapter aux besoin du réseau.

Source : http://www.librenms.org/

Cette documentation explique comment installer & configurer un serveur LibreNMS sous Debian 8.6.0. Si vous utilisez une autre distribution (ou version), il pourrait y avoir quelques divergences de paramétrage.

Toutes les manipulations à venir seront à effectuer en tant que super-utilisateur.


Installation de LibreNMS

Mettre à jour la distribution

Exécutez la commande suivante :

apt-get update -y && apt-get upgrade -y

Cette commande permet de mettre à jour la liste des paquets de Debian et de mettre à jour les paquets installés sur votre système Debian.

Installer les dépendances

Les dépendances principales sont MySQL et Apache pour pour stocker les données de LibreNMS et accéder à son interface graphique via un navigateur Web.

Exécutez la commande suivante :

apt-get install mysql-server mysql-client apache2

Si vous souhaitez pouvoir administrer le serveur MySQL depuis une interface graphique, vous pouvez
également installer le paquet
phpmyadmin :

apt-get install phpmyadmin

Vous pouvez accéder à l’interface de phpmyadmin à l’adresse http://IPServeur/phpmyadmin.

Installez ensuite les autres dépendances :

apt-get install libapache2-mod-php5 php5-cli php5-mysql php5-gd php5-snmp php-pear php5-curl snmp graphviz php5-mcrypt php5-json fping imagemagick whois mtr-tiny nmap python-mysqldb snmpd php-net-ipv4 php-net-ipv6 rrdtool git nagios-plugins

Installer LibreNMS

Cloner LibreNMS

LibreNMS n’est pas disponible dans les dépôts Jessie de Debian. Nous allons donc cloner le contenu du dépôt librenms.git qui contient le logiciel LibreNMS.

Exécutez la commande suivante :

git clone https://github.com/librenms/librenms.git /opt/librenms

Si le clonage de fonctionne pas, passez à l’étape suivante.

Le répertoire de LibreNMS sera /opt/librenms/.

Télécharger LibreNMS

Si le clonage depuis le dépôt librenms.git n’a pas fonctionné, alors il va falloir télécharger LibreNMS.

Téléchargez LibreNMS :

cd /opt/ && wget https://github.com/librenms/librenms/archive/master.zip

Décompressez le fichier master.zip :

unzip master.zip

Un dossier librenms-master devrait être créé, renommez-le en librenms :

mv librenms-master librenms

Supprimez le fichier master.zip :

rm master.zip

Le répertoire de LibreNMS sera /opt/librenms/.

Configuration du fuseau horaire de php

Cette étape est importante. Si vous ne configurez pas de fuseau horaire de php, LibreNMS n’affichera aucun
graphique.

Éditez le fichier php.ini :

nano /etc/php5/cli/php.ini

Repérez la lignes suivante :

;date.timezone =

Remplacez-là par celle-ci :

date.timezone = Europe/Paris

Si vous ne vivez pas dans la zone indiquée, adaptez-là à votre cas ;

Enregistrez les modifications.

Configuration de MySQL

Configurer la base de données de LibreNMS

Créer la base de données

Connectez-vous à MySQL :

mysql -u root -p

Créez la base de données librenms :

CREATE DATABASE librenms;

Créer l’utilisateur de la base de données

Pour être exploité, la base de données de librenms aura besoin d’un utilisateur qui a  tous les droits sur celle-ci, afin que par son intermédiaire LibreNMS puisse modifier sa base de données.  Cette utilisateur se nommera librenms.

Créez l’utilisateur librenms :

GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'%' IDENTIFIED BY 'motdepasse';

Quittez MySQL  :

exit

Configuration de LibreNMS

Créer un utilisateur système

L’utilisateur système va permettre d’accéder aux fichiers de LibreNMS situés dans le répertoire/opt/librenms/. Sans lui nous ne pourrons pas accéder à l’interface graphique de LibreNMS. L’utilisateur système se nommera librenms.

Créez l’utilisateur librenms :

useradd librenms

Configurer fping

La première étape pour vérifier qu’un hôte soit disponible est l’utilisation de requêtes ICMP via la commande
ping. Néanmoins, si LibreNMS doit gérer plus d’une machine, il aura besoin de contacter plusieurs
hôtes en même temps. Pour cela, il devra utiliser programme
fping, installé parmis les dépendances.

fping permet d’effectuer des requêtes ICMP mais, il dispose d’autres d’options comme par exemple envoyer des requêtes simultanément à plusieurs hôtes (c’est cela qui nous intéresse).

LibreNMS n’est pas autorisé à utiliser la commande fping. Il va donc falloir permettre à LibreNMS, par
l’intermédiaire de l’utilisateur système
librenms, utiliser fping.

Autorisez l’utilisation de la commande fping et fping6 par les utilisateurs standards :

chmod u+s /usr/bin/fping
chmod u+s /usr/bin/fping6

L’option +s permet de donner les mêmes droits que le propriétaire du fichier aux utilisateurs (u).

Créer les dossiers logs & rrd

Le dossier logs va contenir les rapport de l’interface graphique et des fichiers de gestion de la base de données de LibreNMS. Le dossier rrd quant à lui va être utilisé par le système rrdtool qui servira pour la génération de graphique depuis l’interface de LibreNMS. Ces dossiers n’existent pas par défaut.

Créez les dossiers logs et rrd :

mkdir /opt/librenms/logs /opt/librenms/rrd

De tous les droits au groupe sur l’arborescence du dossier rrd :

chmod -R 775 /opt/librenms/rrd

Activer la gestion des journaux de LibreNMS

Le dossier logs permet de stocker les rapports d’activités mais, il deviendra de plus en plus gros car par défaut ses fichiers ne sont pas gérés automatiquement. LibreNMS met à disposition le fichier /opt/librenms/misc/librenms.logrotate  qui permet de gérer automatiquement les logs. pour cela il suffit de le placer dans le dossier /etc/logrotate.d/librenms.

Exécutez la commande suivante :

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

Configurer la base de données de LibreNMS

Créer & configurer le fichier config.php

Le fichier « config.php » va contenir la configuration de l’interface de LibreNMS, dont les informations (identifiant, mot de passe, etc…) nécessaires pour se connecter à la base de données librenms. Ce fichier n’existe pas par défaut, nous allons le créer dans le répertoire /opt/librenms/ à partir du fichier config.php.default fournis avec le logiciel.

Copiez le fichier config.php.default en config.php :

cp /opt/librenms/config.php.default /opt/librenms/config.php

Éditez le fichier config.php :

nano /opt/librenms/config.php

Nous allons y renseigner le nom d’utilisateur et le mot de passe de l’utilisateur MySQL librenms que nous avons créé précédemment ;

Repérez les lignes suivantes :

$config['db_user'] = 'USERNAME';
$config['db_pass'] = 'PASSWORD';

Renseignez le nom d’utilisateur et le mot de passe de l’utilisateur MySQL de la manière suivante :

$config['db_user'] = 'librenms';
$config['db_pass'] = 'motdepasse';

LibreNMS est régulièrement mis à jour mais, par défaut il n’est pas configuré pour les récupérer de lui-même. Nous allons donc activer les mises à jour automatiques de LibreNMS, si vous le souhaitez seulement ;

Repérez et et dé-commentez la ligne suivante  :

#$config['update'] = 0;

Une fois l’option activée, LibreNMS se mettra à jour tous les jours à 00:15 ;

Nous avons installer parmi les dépendances le paquet nagios-plugins. Celui-ci contient de nombreux plugins permettant de superviser des hôtes via différent services (ssh, http, mysql…). Pour que LibreNMS puisse les utiliser, il faut lui indiquer l’emplacement des plugins.

Ajoutez la ligne suivante à la fin du fichier :

$config['nagios_plugins'] = '/usr/lib/nagios/plugins';

Enregistrez les modifications ;

Créez une tâche cron pour que les services Nagios soient vérifiés toutes les 5 minutes :

echo "*/5 * * * * librenms /opt/librenms/check-services.php >> /dev/null 2>&1" >> /etc/cron.d/librenms

Construire la base de données de LibreNMS

MySQL est près pour accueillir les données de LibreNMS. Pour cela, nous avons a disposition le script php  build-base.php qui permet de construire la base de données.

Exécutez le script build-base.php :

cd /opt/librenms/ && php build-base.php 

Créer un utilisateur administrateur de LibreNMS

Pour accéder à l’interface de LibreNMS, il faut utiliser un utilisateur préalablement créé. Nous allons utiliser le script adduser.php qui permet de créer un utilisateur LibreNMS pour cela. A chaque utilisateur que vous voudrez créez vous devrez utilisé ce script.

Pour l’exemple, nous allons créer l’utilisateur librenms avec comme mot de passe librenms et adresse mail  librenms@tuto.facile :

php /opt/librenms/adduser.php librenms librenms 10 librenms@lycee.jb

syntaxe : php /opt/librenms/adduser.php utilisateur motdepasse 10 @mail

Configuration de Apache

Créer un hôte virtuel apache

Afin que le serveur Apache puisse accéder au répertoire /opt/librenms/ il doit être autorisé à le faire en utilisant le compte utilisateur système librenms que nous avons précédemment créé. Pour ce faire, il suffit d’ajouter l’utilisateur au groupe apache www-data.

Ajoutez l’utilisateur librenms au groupe www-data :

usermod -a -G librenms www-data

Créer le fichier de configuration apache de LibreNMS

Nous allons indiquer à Apache doit connaître l’emplacement du dossier de LibreNMS contenant les fichiers de l’interface. Le fichier de configuration se nommera librenms.conf.

Créer le fichier librenms.conf :

nano /etc/apache2/sites-available/librenms.conf

Ajoutez-y les lignes suivantes :

<VirtualHost *:80> 
DocumentRoot /opt/librenms/html/
ServerName /librenms.example.com
CustomLog /opt/librenms/logs/access_log combined
Errorlog /opt/librenms/logs/error_log
AllowEncodedSlashes On
<Directory "/opt/librenms/html/">
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
</Directory>
</VirtualHost>

Enregistrez les modifications ;

Pour terminer nous allons désactiver le site par défaut de apache2, activer le mode rewrite & cryptage de php5 et activer le site LibreNMS :

a2dissite 000-default && php5enmod mcrypt && a2enmod rewrite && a2ensite librenms.conf

Redémarrez le service apache2 :

service apache2 restart

Configuration du serveur SNMP

Il existe 2 paquet pour le service SNMP (que nous avons installé parmi les dépendances) :

  1. Le paquet snmp qui permet d’obtenir les outils nécessaires pour tester si la supervision SNMP fonctionne correctement ;
  2. Le paquet snmpd qui est le serveur SNMP chargé de récupérer ou envoyer les données via le protocole SNMP de vos hôtes.

Créer une communauté publique

Une communauté réprésente un ensemble de machines sur un réseau qui communiquent ensemble via le protocole SNMP. Pour pouvoir interroger une machine via SNMP depuis une autre, les 2 machines doivent se trouver dans la même communauté.

Nous allons ajouter le serveur LibreNMS à la communauté publique, nommée public, dans le fichier /etc/snmp/snmpd.confIci nous utiliserons la version v2c du protocole SNMP. Si vous utilisé la version v3les manipulations seront différentes.

Éditez le fichier snmpd.conf :

nano /etc/snmp/snmpd.conf

Repérez et dé-commentez la ligne suivante :

#rocommunity public  localhost

Le principe d’une communauté est le suivante :

  • Pour effectuer la supervision, il faut une communauté envoyant/réceptionnant les données : celle est définit par l’option rocommunity ;
  • public est le nom de cette communauté : c’est le standard mais. Vous pouvez modifier ce nom par ce que vous souhaitez seulement, pensez bien a utilisé ce nouveau nom par la suite dans la configuration de LibreNMS et de vos clients, sinon la communication ne pourra se faire entre le superviseur et le supervisé ;
  • localhost est l’adresse de boucle locale : vous pouvez y renseigner soit un nom DNS ou l’adresse IP de votre machine locale.

Enregistrez les modifications ;

Vous pouvez tester si les données sont accessibles à l’aide de la commande suivante :

snmpwalk -v 2c -c public 127.0.0.1

Ajouter l’hôte local parmi les hôtes de LibreNMS

Pour que LibreNMS supervise une machine, celle-ci doit faire partie de ses hôtes. Pour commencer, nous allons demander à LibreNMS de se superviser lui-même afin qu’il connaisse le nom de la communauté
dont le serveur fait partie. Pour cela nous allons utilisé le script 
addhost.php fourni avec le logiciel et qui permet d’ajouter des hôtes.

Exécutez le script addhost.php de la manière suivante :

php /opt/librenms/addhost.php localhost public v2c

Syntaxe : php /opt/librenms/addhost.php IPhôte  communauté v2c

Créer une communauté publique

Pour surveiller en temps réel les serveurs & actifs il faut créer une tâche cron qui va s’exécuter en boucle. LibreNMS met encore une fois à disposition un fichier cron pré-configuré nommé  librenms.nonroot.cron.

Copiez le fichier librenms.nonroot.cron dans le dossier /etc/cron.d/ :

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

Redémarrez le service cron :

service cron restart

Valider la configuration du serveur LibreNMS

Afin de s’assurer que tous les services nécessaires soient fonctionnelles, LibreNMS possède le script validate.php qui permet de valider l’installation de LibreNMS. Patientez quelque instant le temps que la tâche cron se lance au moins une fois (environ 5 minutes) sinon vous aurez une erreur au moment de l’exécution du script.

Donnez la propriété à l’utilisateur système librenms sur l’arborescence du dossier librenms :

chown -R librenms:librenms /opt/librenms/

Exécutez le script validate.php :

php /opt/librenms/validate.php

Vous devriez obtenir la réponse suivante :

[OK] Database connection successful

Il est également possible que vous ayez les messages suivants :

[FAIL] Discovery has never run, check the cron job
[FAIL] The poller has never run, check the cron job

Ça signifie que la tâche cron que nous avons créé n’a pas encore été exécutée : attendez quelques instant et ré-exécutez le script validate.php : cette fois-ci vous ne devriez plus recevoir ces 2 messages.

Vous pouvez maintenant accéder à LibreNMS  à l’adresse http://IPServeur.


Ce tutoriel est terminé. Pour pouvoir superviser des machines vous pouvez continuer vers le tutoriel sur la supervision d’hôtes.

Si vous avez des problèmes, où que vous trouvez que certains points sont mal expliqués (ou faux), n’hésitez pas à m’avertir.