Skip to content

SNMP et LibreNMS

MaZeppAa edited this page Jan 9, 2023 · 11 revisions

SNMP et LibreNMS

image

☑️ Pré-requis:

Avant de commencer ce labo, assurez vous d'avoir effectué ces différentes tâches:

  • Avoir une machine virtuelle 'Ubuntu server' à disposition,
  • Vérifier que la connectivité est correcte en faisant par example un ping 8.8.8.8,
  • Mettre à jour les dépendances avec la commande sudo apt update,
  • Installer snmp via la commande sudo apt install snmp,

Dans ce labo nous allons mettre en pratique des concepts liés au monitoring d’infrastructure en utilisant notamment le protocole SNMP et l'pplication web LibreNMS.

📘 Quelques notions avant de commencer:

Nous allons d'abord expliquer quelques notions sur le fonctionnement de SNMP et sur l'utilisation de certaines commandes.

Différence entre les commandes 'snmpget' et 'snmpwalk':

-> La commande 'snmpget' permet de récupérer une information en particulier sur la machine précisée.

Par exemple:

snmpget -v2c -c public 10.0.0.201 syslocation.0 permet de récupérer la valeur pour l'attribut numéro ".1.3.6.1.2.1.1.6.0" nommé "syslocation.0"

-> La commande 'snmpwalk' permet quand à elle de lister tous les attributs et leurs valeurs disponibles pour une machine précisée.

Par exemple:

snmpwalk -v2c -c public 10.0.0.201 va lister tous les attributs de la machine '10.0.0.201' ainsi que leurs valeurs.

⚠️ Attention, soyer prêt, il peut y en avoir beaucoup !!

Utilisation et configuration des MIBS pour se simplifier la tâche:

En temps normal, on est obligé d'utiliser le référencement via les OID pour trouver nos valeurs. Donc si on veut avoir l'information sur la localisation de notre machine, on doit d'utiliser le OID, ce qui donnerait une commande du style:

snmpget -v2c -c public 10.0.0.201 .1.3.6.1.2.1.1.6.0

Ce qui nous retournerait:

image + La localisation de la machine

Évidemment, il serait quand même plus simple de juste retenir le nom de la propriété (dans ce cas-ci: syslocation.0) que de retenir son OID. 😕

C'est là que les MIBs entrent en jeux. 😃

Les MIBs sont des fichiers qui vont nous permettre de traduire des mots (donc des strings) directement en OID. De cette manière il n'est plus nécessaire de retenir des séries de chiffre mais bien le nom des propriétés eux-mêmes !! Cela va grandement nous faciliter la tâche.

Configuration des MIBs:

À l'installation de snmp, des MIBs sont déjà disponibles et il faut juste les rendre accessible par SNMP lors des requêtes snmpget. Pour cela, on va se rendre dans le fichier de configuration de SNMP nommé snmp.conf.

On peut le trouver via le path suivant:

/etc/snmp/snmp.conf

Ensuite on va ouvrir le fichier avec un éditeur comme nano ou vi.
Une fois le fichier ouvert on va aller modifier la ligne où il est indiqué mibs : en mibs +ALL. Ce changement va en fait permettre de charger tous les fichiers MIBs qui se trouve dans le dossier /usr/share/snmp/mibs lors de nos requête snmpget. On n'aurra donc plus besoin d'utiliser les OIDs lors des requêtes. 👍

Il se peut que un petit message de warning comme celui-ci s'affiche lors des requêtes: image
=> Il n'altère en rien les résultats obtenus

Voir ici pour plus d'infos sur les MIBs et leurs configurations

1️⃣ Étape n°1: Utiliser snmpget et snmpwalk pour déduire des informations sur une machine.

Maintenant, nous pouvons utiliser la commande 'snmpget' pour aller chercher différentes informations sur la machine cible (10.0.0.201):

  • Type de device => snmpget -v2c -c public 10.0.0.201 sysDescr.0
  • Modèle => snmpget -v2c -c public 10.0.0.201 sysDescr.0
  • Personne de contact => snmpget -v2c -c public 10.0.0.201 sysContact.0
  • Emplacement => snmpget -v2c -c public 10.0.0.201 sysLocation.0
  • Nombre de PSU (Power Supply Unit) => ?

2️⃣ Étape n°2: Utiliser libreNMS pour manager la machine 10.0.0.201

Installer libreNMS:

Pour pouvoir monitorer la machine cible, il faut d'abord installer libreNSM. Nous allons l'installer sur la même machine utilisée pour les requêtes SNMP, c'est à dire notre serveur ubuntu.

Plusieurs solutions d'installation s'offrent à nous. Nous avons choisi dans ce cas-ci d'utiliser un package que nous pourrons simplement télécharger sur notre serveur. Néanmoins il y a pas mal d'étapes de configuration:

🚩 Avant tout n'oublier pas mettre les paquets à jour avec la commande sudo apt update!

A. Créer un nouvel utilisateur

Nous devons d'abord créer un nouvelle utilisateur pour libreNMS.
Pour cela effectuer la commande: sudo useradd librenms -d /opt/librenms -M -r

B. Installer nginx, mariadb et PHP

LibreNMS à besoins de ces trois composants pour fonctionner et nous allons donc également les installer.

Avant d'installer quoi que ce soit verifier la version d'ubuntu avec la commande suivante

lsb_release -a

Dans notre cas on a la version 20.04

Si vous avez une version différente, veuillez vous suivre la documentation officielle de libreNMS disponible ici

Etant donnée le nombre élevé de dépendances à installé ce qui fait crasher le serveur , On va continuer l'installation via le conteneur docker de libreNMS

  • Installer docker et docker-compose sur votre server

Si vous avez des soucis lors de l'installation de docker veuillez vous référer à la documentation officielle disponible ici

sudo apt install docker.io -y
sudo apt update
  • Télécharger le fichier compose de libreNMS
cd 
mkdir librenms
cd librenms
wget https://github.com/librenms/docker/archive/refs/heads/master.zip
unzip master.zip
cd docker-master/examples/compose
  • Configurer un nouveau mot de passe mysql dans votre fichier d'environnemet
cd ~/librenms/docker-master/example/compose
nano .env

Etant donnée qu'on doit definir une varaible d'environnement pour le dossier ou doit se trouver le fichier compose, on va déplacer les fichier du dossier compose dans le dossier qui porte a le nom de la nouvelle variable d'environnement

export COMPOSE_PROJECT_NAME=libreNMS
cd ~/librenms/docker-master/example
mv compose libreNMS

Remarque : Retirer la première ligne du docker-compose: name : "librenms" cela n'est plus nécessaire suite à la manipulation précédente

  • Exécutez le docker compose file
cd libreNMS
sudo docker-compose up -d

  • Configurez l'interface de librenms

Une fois les conteneurs installé , récupérez l'adresse du conteneur librenms avec la commande suivante

docker ps
docker inspect <container-id-librenms>
Aide en Image

image

Entrez l'adresse ip du conteneur sur votre navigateur http://<ip-conteneur>:<port>

Inscrivez vous en entrant vos informations d'identification

image

image

  • Ajoutez un hôte dans librenms

Rendez vous sur l'onglet Devices puis vous faite add-device ensuite vous pouvez entrez les informations sur votre hôte. Notez que le port udp par défaut de snmp est le port 161

image

Après avoir ajouter votre device, vous pouvez également ajouter une alerte: Pour cela rendez-vous dans l'onglet "alert" puis cliquer sur "alert rules". Ici vous pourrez ajouter des nouvelles alerte en cliquant sur le bouton vert "create new alert rule" qui se trouve en haut à droite de l'écran.

Un popup comme celui-ci devrait s'afficher:

image

Ici vous pouvez alors paramétrer votre alerte.

Exemple:

"Une alerte qui se déclenche lorsque la mémoire vive d'un device est à plus de 60% pendant au moins 1 minutes."

Pour cette alerte, indiquer d'abord un nom puis dans la zone de query juste en dessous préciser la donnée à vérifier et à quoi vous voulez la vérifier. Dans ce cas-ci, on sélectionne "mempools.mempool_perc" et on indique "greater" et "60" car on souhaite avoir l'alerte quand la mémoire est utilisée à plus de 60%. Ensuite on sélectionner le device concerné dans la section "Match devices, groups...".

image

Pour finir on peut créer l'alerte en cliquant sur le bouton "save rule".

Pour plus d'infos sur les différents types de données utilisables dans les alertes cliquer ici.

image

Clone this wiki locally