**LibreNMS - Configuration**
# Introduction
## Objectif
* Apprendre à configurer le système de gestion de réseau LibreNMS.
## Notes
* Les commandes précédées de "`$`" signifient que vous devez exécuter la commande en tant qu'utilisateur général - et non en tant qu'utilisateur root.
* Les commandes précédées de "#" signifient que vous devez travailler en tant qu'utilisateur root.
* Les commandes comportant des lignes de commande plus spécifiques (par exemple "rtrX" ou "mysql>") signifient que vous exécutez des commandes sur des équipements à distance, ou dans un autre programme.
* Si une ligne de commande se termine par "\", ceci signifie que la commande se poursuit sur la ligne suivante et que vous devez la traiter comme une seule ligne.
* Ces instructions supposent que vous êtes l'utilisateur root. Si vous ne l'êtes pas, ajoutez "sudo" aux commandes Shell (celles qui ne sont pas dans les invites "mysql>") ou invoquez temporairement les privilèges de root avec "sudo -s".
# Etapes de la configuration
## Configuration de LibreNMS
### Définition de la communauté SNMP
Tout d'abord, modifions la communauté SNMP que LibreNMS utilisera lors de la découverte et de l'ajout de nouveaux équipements.
Tout d'abord, si vous n'êtes pas déjà root, vous devez saisir :
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$ sudo bash
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ensuite, modifiez le fichier */opt/librenms/config.php* :
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# editor /opt/librenms/config.php
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Trouvez la ligne:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$config['snmp']['community'] = array("public");
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Et changez-le comme suit:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$config['snmp']['community'] = array("NetManage");
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
### Dire à LibreNMS quels sous-réseaux il est permis de scanner automatiquement
Par défaut, LibreNMS tentera de demander la liste des "voisins" que les équipements réseau "accèdent" sur le réseau. Cela se fait en utilisant le protocole de détection de couche de liaison (LLDP) ou CDP de Cisco (Cisco Discovery Protocol).
Mais pour être sûr, et ne pas analyser les réseaux en dehors de notre organisation, il faut indiquer à LibreNMS sur quels sous-réseaux il est permis de rechercher de nouveaux périphériques.
Toujours dans le fichier */opt/librenms/config.php*, trouvez la ligne:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#$config['nets'][] = "10.0.0.0/8";
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Et remplacez-le par ce qui suit pour analyser les sous-réseaux utilisés par notre réseau et l'infrastructure de l'atelier.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$config['nets'][] = "10.10.0.0/16";
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Nous devons faire un changement de plus ...
### Dire à LibreNMS de ne pas ajouter de doublons
Une situation peut se produire lorsque deux périphériques ont un paramètre SNMP *sysName* en double (c'est le *nom* d'*hôte* dans IOS). Ils pourraient être deux périphériques différents, donc il serait judicieux que LibreNMS les ajoute automatiquement et les surveille.
Mais il se peut aussi que le même appareil soit vu plusieurs fois par LibreNMS - une fois utilisant LLDP / CDP, et une autre fois via OSPF (par exemple).
Dans ce cas, il finit par être ajouté deux fois. Par exemple, vous pouvez soudainement voir deux périphériques appelés *rtr2-fa0-0.ws.nsrc.org* et *rtr2* , et ce n'est pas ce que nous voulons.
Étant donné que les "deux" dispositifs soient en fait les mêmes, leur SNMP *sysName* sera identique, et nous pouvons dire que LibreNMS n'ajoute **PAS** de périphériques si l'un existe déjà avec le même *sysName* - après tout, cela ne devrait pas se produire dans un réseau bien configuré!
Voici un exemple illustrant cela:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2016-07-06 20:16:47 rtr4 discovery Device rtr4 (10.10.0.224) (port FastEthernet0/0)
autodiscovered through CDP on rtr1.ws.nsrc.org
2016-07-06 20:09:45 rtr4-fa0-0 discovery Device rtr4-fa0-0.ws.nsrc.org (10.10.0.224)
(port ) autodiscovered through OSPF on rtr1-fa0-0.ws.nsrc.org
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Pour éviter cela, ajoutez la ligne suivante au bas du fichier config.php:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$config['allow_duplicate_sysName'] = false;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
... cela empêchera LibreNMS d'ajouter le périphérique s'il existe déjà avec le même *sysName* . Vous pourrez voir s'il existe des périphériques en double détectés dans le *journal des événements* (Vue d'ensemble -> Journal des événements).
Après avoir ajouté le paramètre ci-dessus, enregistrez le fichier et quittez l'éditeur - nous avons fini!
### Ajouter un hôte
Ajoutons localhost (c'est-à-dire: VOTRE serveur virtuel), en utilisant les commandes suivantes. Plus tard, vous le feriez à partir de l'interface Web:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# cd /opt/librenms
# php addhost.php localhost NetManage v2c
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Vous devrez voir:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Added device localhost (1)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Remarquez que nous demandons explicitement à LibreNMS quelle communauté SNMP doit être utilisée. Nous supposons également que c'est SNMP v2c. Si vous utilisez v3, il existe des étapes supplémentaires qui ne sont pas décrites ici.
## Configuration finale
### Découvrez et vérifiez les nouveaux serveurs ajoutés
LibreNMS «découvre» d'abord chaque hôte qui a été ajouté. Cela signifie qu'il examine méthodiquement chaque hôte que vous avez ajouté et découvre ce qu'il doit surveiller. Le script *discover.php* ne scanne pas automatiquement votre réseau pour trouver de nouveaux périphériques. Pour exécuter ce script, procédez comme suit:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# cd /opt/librenms
# sudo -u librenms php discovery.php -h all
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**REMARQUE:** Cela pourrait prendre du temps. Si vous essayez d'ajouter des périphériques qui n'ont pas encore de service snmp configuré, le script de découverte prendra un certain temps.
Une fois que cela est terminé, vous pouvez maintenant "sonder" les hôtes. Cela signifie que LibreNMS sait maintenant ce qu'il doit surveiller pour chaque hôte, mais il n'a pas encore localisé sa base de données avec des valeurs initiales pour chaque élément. Pour ce faire, nous allons faire :
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# sudo -u librenms php poller.php -h all
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Comme vous pouvez le voir, le script *poller.php* travaille avec juste quelques périphériques. Lorsque nous l'ajoutons à un cronjob ci-dessous, cela explique pourquoi LibreNMS est un outil à forte intensité de ressources.
### Créer cronjob
Créez le cronjob qui exécutera les tâches périodiques requises par LibreNMS:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# cd /opt/librenms
# cp librenms.nonroot.cron /etc/cron.d/librenms
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Une dernière chose: éditez le fichier */etc/cron.d/librenms* ...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# editor /etc/cron.d/librenms
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
... et trouvez la ligne:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/5 * * * * librenms /opt/librenms/cronic /opt/librenms/poller-wrapper.py 16
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Et changez le chiffre "16" en "4" (nous avons uniquement un processeur et 4 threads suffisent amplement):
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/5 * * * * librenms /opt/librenms/cronic /opt/librenms/poller-wrapper.py 4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sauvegarder et quitter.
## Installation terminée
C'est tout! Vous devriez maintenant pouvoir vous connecter à [http://librenmsN.ws.nsrc.org/](http://librenmsn.ws.nsrc.org/) et commencer à explorer les informations collectées sur les équipements surveillés.
Vous pouvez ajouter des périphériques supplémentaires via l'interface Web LibreNMS. Pourquoi ne pas ajouter:
- noc.ws.nsrc.org
- www.ws.nsrc.org
- s1.ws.nsrc.org
En utilisant la communauté snmp de la classe. Voyez si vous pouvez comprendre comment procéder par vous-même.
**VEUILLEZ NOTER** : Nous n'avons pas couvert la configuration HTTPS dans cet exemple, de sorte que votre installation de LibreNMS n'est pas sécurisée par défaut. Ne l'exposez pas à l'Internet public, sauf si vous avez configuré HTTPS et effectué les étapes appropriées de sécurisation du serveur Web.
## À propos des mises à jour quotidiennes
LibreNMS effectue des mises à jour quotidiennes par défaut. À l'heure de fonctionnement du système 00:15 tous les jours, un *git pull --no-edit --quiet* est effectué. Si vous ne souhaitez pas cela, modifiez la valeur par défaut en éditant le fichier "config.php". Supprimez le commentaire (la marque "#") sur la ligne:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#$config['update'] = 0;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
De sorte que cela ressemble à ceci:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$config['update'] = 0;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~