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.