-
Notifications
You must be signed in to change notification settings - Fork 0
Labo 6 Monitoring
Pour faire ce labo, il faut avoir une VM Ubuntu 20.04 lts server.
Avant de commencer, petit note par rapport à l'exécution des commandes.
- Nous supposons que l'utilisateur est
rootquand celui-ci n'est pas spécifié. Pour changer d'utilisateur vous pouvez :
- Utiliser la commande
sudoavant chaque commande si votre utilisateur actuel fait partie du groupewheelet que la commandesudoest installée. - Faire la commande
supour se connecter en tant queroot.
su
- Nous supposons que l'utilisateur utilise
ubuntu 20.04 lts server, ceci peut-être vérifié avec la commande :
uname -a
- Nous supposons que l'utilisateur a son cache
aptà jour grâce à la commande :
apt update
Nous allons tout d'abord installer SNMP
apt install snmpd snmp libsnmp-dev
Installer les librairies pour bien faire fonctionner SNMP
apt install snmp-mibs-downloader
snmpwalk ne diffère pas beaucoup de snmpget pour ce qui est de l’interrogation des données. La différence réside principalement dans l’exécution des commandes : alors que snmpget renvoie uniquement une valeur concernant l’Obect-ID demandé ou affiche un message d’erreur lorsqu’aucun objet n’est disponible pour le numéro d’identification, snmpwalk passe également par l’ensemble des sous-nœuds. Ceci permet notamment d’afficher une liste détaillée des informations système pertinentes lorsque le numéro d’identification est connu de la base MIB correspondante.
Exemples:
- Avec snmpwalk
- Avec snmpget
Voici quelques commandes pour avoir des informations précises sur l’hôte 10.0.0.201:
- Type de device
snmpget -v2c -c public -O fT 10.0.0.201 sysDescr.0
- Modèle
snmpget -v2c -c public -O fT 10.0.0.201 sysDescr.0
- Personne de contact
snmpget -v2c -c public -O fT 10.0.0.201 sysContact.0
- Emplacement
snmpget -v2c -c public -O fT 10.0.0.201 sysLocation.0
- Nombre de PSU (Power Supply Unit)
snmpwalk -v2c -c public 10.0.0.201 | grep -o 'Power Supply' | wc -l
ATTENTION: Nous avons eu un problème. Durant toute l'installation, nous avons utilisé PHP 8.2 . C'est seulement à la fin que nous avons réalisé que PHP 8.2 n'est pas supporté par LibreNMS.

Nous avons donc dû installer PHP 8.1. Pour ce faire, nous avons installé tout les paquets requis de PHP mais en spécifiant la version 8.1:
apt install php8.1
apt install php8.1-mysql php8.1-mbstring php8.1-xml php8.1-curl php8.1-gd php8.1-cli php8.1-curl php8.1-fpm php8.1-gd php8.1-gmp php8.1-json php8.1-mbstring php8.1-mysql php8.1-snmp php8.1-xml php8.1-zip php8.1-cgi php8.1-fpm php8.1-phpdbg libapache2-mod-php8.1 libphp8.1-embed
Une fois ceci fait, on a dû changer la version de PHP qu'on utilisait:
sudo a2enmod php8.1
sudo update-alternatives --set php /usr/bin/php8.1
Source: https://fedingo.com/how-to-change-php-version-in-ubuntu/
Durant toute l'installation, il faudra donc comprendre qu'il faut écrire PHP8.1 au lieu de PHP8.2
Tout d'abord, il faut ajouter un utilisateur qui pourra accéder à LibreNMS:
useradd librenms -d /opt/librenms -M -r -s "$bash"
Il faut aussi mettre le bon fuseau horaire. Pour cela, il faut le changer dans les fichiers de PHP:
nano /etc/php/8.1/fpm/php.ini
nano /etc/php/8.1/cli/php.ini
Dans notre cas, nous allons mettre Europe/Brussels.

Il faut aussi taper une commande:
timedatectl set-timezone Europe/Brussels

Veillez à bien avoir votre fichier 50-server.cnf configuré comme le nôtre:

Nous devons ensuite créer la base de données qui va contenir les informations concernant les rapports le LibreNMS. Pour cela, nous utilisons mariadb:

Finalement, dans le fichier librenms.conf, il faut enlever le commentaire devant le listen et il faut aussi bien le configurer car sinon LibreNMS n'écoutera jamais au bon endroit:


Nous allons sur l'interface web:

Nous configurons les quelques options pour la base de données:

Nous créons l'utilisateur admin:

Finalement, LibreNMS nous propose quelques dernières préférences:


Nous pouvons donc ensuite nous connecter avec l'utilisateur que l'on vient de créer

Maintenant, nous allons pouvoir ajouter une machine à monitorer. Pour ce faire, on va dans Devices>Add Device.





Problème


Pendant le blocus, notre serveur ubuntu a rencontré des problèmes critiques qui ont rendu des paquets comme nginx et php inutilisable.
Nous avons dus de ce fait réinstaller librenms mais ne voulions plus retomber dans les problèmes de dépendances, c'est pourquoi nous avons opté pour la méthode docker.
Pour ce faire, nous devons créer un dossier librenms dans lequel nous allons installer LibreNMS:
mkdir librenms
cd librenms
Ensuite, nous allons télécharger les fichiers de configuration docker et le décompresser:
wget https://github.com/librenms/docker/archive/refs/heads/master.zip
unzip master.zip

Nous pouvons donc voir que nous avons bien les bons fichiers:
cd ./docker-master/examples/compose
ls -a

ATTENTION: n'oubliez pas de changer le mot de passe de MYSQL dans le .env.

ATTENTION: nous avons eu un problème. La version de Docker que nous utilisons n'était pas la même version que celle attendue par LibreNMS. Nous avons dû donc adapter certaines choses.

Tout d'abord, nous avons dû exporter le nom du projet:
export COMPOSE_PROJECT_NAME=librenms

Nous avons dû renommer le dossier dans lequel ce trouve le docker-compose:
mv compose librenms

Nous avons dû enlever la première ligne du docker-compose.yml qui était name: librenms :

Finalement, nous avons lancé le Docker:
docker-compose up -d

Une fois tout ceci fait, nous allons sur l'interface web de la machine (http://10.128.3.21:8000/). Contrairement à la façon de le faire à la main, ici, nous devons juste configurer l'utilisateur.

On nous demande d'envoyer une alerte quand la mémoire vive dépasse 60% de la mémoire vive totale, et ce pendant au moins une minute. Nous utilisons mempools.mempool_perc pour mesurer le pourcentage de mémoire utilisée. On met "1m" dans le Delay pour vérifier que cette règle reste vraie pendant une minute. "Interval" permets de mettre en place un délai entre les alertes.
