LibreNMS est un logiciel de supervision réseau permettant de faire des mesures fines de débit par port/VLAN/« client »/… selon les annotations d'interface remontées par les équipements. Pour Linux, un script SNMP custom permet de remonter ces annotations à LibreNMS.

LibreNMS est un fork d'Observium. Notre ancienne configuration Observium est aussi documentée mais n'est plus mise à jour.

La supervision réseau est située sur ?vigie, une machine virtuelle sur gaillard.

Installation

La documentation pour Debian 10 / Nginx est très claire.

On part désormais sur une authentification mysql avec des utilisateurs / mot de passe gérés par LibreNMS (et non via une authentification faite par le serveur web).

Installation du plugin weathermap

Documentation : https://docs.librenms.org/Extensions/Weathermap/

Ne pas oublier d'installer php-pear, sinon le plugin weathermap échouera de façon silencieuse.

Il faut également mettre en place le cron, on le fait tourner toutes les 2 minutes chez nous :

*/2  *    * * *   librenms    /opt/librenms/html/plugins/Weathermap/map-poller.php >> /dev/null 2>&1

Utilisation

Ajout d'un utilisateur

C'est fait par l'interface web de LibreNMS, il faut être admin.

Ajout de la supervision d'un équipement

Le fonctionnement de base d'observium est d'utiliser le protocole snmp pour récupérer les informations.

Sur les équipements à surveiller

Il faut rendre accessible l'équipement en snmp depuis l'IP du serveur LibreNMS et renseigner la communauté.

On a maintenant un rôle Ansible pour configurer automatiquement snmpd sur les machines.

Description des interfaces sous Debian GNU Linux

Il faut indiquer à snmp d'utiliser un script dédié :

  • Soit dans /etc/network/interfaces : il faut utiliser le script snmpd ifAlias. La notion se fait sous la forme :

    # <interface>: <description>
    # exemple : 
    # eth1.606 : transit: Ielo
    
  • Soit dans quagga : il faut utiliser le script snmpd ifAliasQuagga

dans le fichier de configuration snmpd, il faut ajouter :

pass_persist -p 1 .1.3.6.1.2.1.31.1.1.1.18 /usr/local/sbin/snmpd_ifAlias

ou

pass_persist -p 1 .1.3.6.1.2.1.31.1.1.1.18 /usr/local/sbin/snmpd_ifAliasQuagga

Sur librenms

Il suffit d'ajouter la machine à surveiller depuis l'interface web. Tout le reste est normalement autoconfiguré.

Attention : bien mettre le "Port Association Mode" à ifName, ce n'est pas la valeur par défaut qui est ifIndex. Si on utilise ifIndex, à chaque reboot de la machine Linux supervisée, les interfaces seront mélangées dans LibreNMS...

Ajout d'une weathermap

Le plus simple est d'utiliser l'éditeur en ligne : https://librenms.grenode.net/plugins/Weathermap/editor.php

  • créer une nouvelle carte ou en copier une existante. Le nom de la carte doit finir en .conf
  • dans "Map Properties", changer "Output Image Filename" à maps/truc.png, et "Output HTML Filename" à maps/truc.html
  • s'amuser à placer des liens et des noeuds :)
  • en cliquant sur un lien, il est possible de lui associer un graphe (récupéré de librenms)
  • la configuration générée par l'éditeur web est dans /opt/librenms/html/plugins/Weathermap/configs/, il est possible de l'éditer à la main, l'éditeur web respectera les changements

Plus de documentation ici : https://network-weathermap.com/manual/0.98/pages/editor.html

Accéder aux weathermaps

Les weathermaps sont normalement listées dans le menu d'observium (tout en haut, premier onglet)

Sinon, les URL sont de la forme https://librenms.grenode.net/plugins/Weathermap/maps/truc.html

Attention, les weathermap sont accessibles publiquement si on connaît le lien.

Utilisation du billing

LibreNMS a une fonctionnalité de "billing" https://docs.librenms.org/Extensions/Billing-Module/.

On ne s'en sert pas pour facturer, mais pour avoir une vue rapide de la consommation mensuelle au 95ème percentile d'un groupe de ports (transit, membre...).

L'ajout d'un groupe de ports se fait dans l'interface web.

Bug lié aux ifIndex mélangés

La fonctionnalité de billing se base sur les ifIndex pour déterminer la consommation réseau, ce qui peut créer des confusions. Même si l'interface a l'air correctement renseignée dans la "Bill", les valeurs de 95ème percentile calculées sont parfois complètement fausses.

Le problème vient toujours du fait que les ifIndex remontés par Linux via snmpd changent au reboot. Lorsque LibreNMS s'en rend compte, il essaie de mettre à jour sa base de données pour associer les nouveaux ifIndex aux bonnes interfaces, mais il échoue à cause d'une contrainte d'unicité sur les ifIndex. C'est visible dans les logs : /opt/librenms/logs/librenms.log.

Le bug est connu mais jamais réparé : https://github.com/librenms/librenms/issues/3510

Pour régler le problème, le plus simple est d'enlever la contrainte d'unicité :

# mysql librenms
MariaDB [librenms]> ALTER TABLE ports DROP INDEX ports_device_id_ifindex_unique;

Il suffit alors d'attendre le prochain polling de l'équipement et les ifIndex devraient être corrigés automatiquement.