Mise en place - Supervision ad-hoc rapide

Lors de ce TP vous allez mettre en place une petite architecture système utilisé lors des séances suivantes, puis construire votre premier système simple de supervision.

Préliminaires

Comme vu lors du cours sur l'outillage de base, vous avez accès à la commande vmiut.

Par exemple, vmiut creer TOTO permet de créer un serveur virtuel nommé TOTO sur la base d'une installation Debian Bullseye minimale avec deux utilisateurs :

  • root avec comme mot de passe root
  • user avec comme mot de passe user

Un appel à vmiut --help donne des détails sur son utilisation.

Environnement des TPs

Création des postes

Préparez 3 serveurs virtuels nommé moniteur, poste1 et poste2.

Identification réseau

Modifiez la configuration de vos 3 serveurs pour que

  • moniteur ait comme adresse IPv4 192.168.194.10
  • poste1 ait comme adresse IPv4 192.168.194.21
  • poste2 ait comme adresse IPv4 192.168.194.22

Connexion SSH

Faites en sorte que depuis votre machine physique vous puissiez vous connecter en ssh en tant que root sur chacun des 3 postes via les commandes shell suivantes, sans spécifier de mot de passe lors de la connexion (c'est-à-dire en utilisant une authentification par clés plutôt que par mot de passe) et avec un redirection des demandes d'affichage graphiques de la machine virtuelle vers la machine physique :

  • ssh moniteur
  • ssh poste1
  • ssh poste2

Environnement sur les postes

Configurez vos serveurs de façon à ce que outre un éditeur de textes de votre choix (emacs, vim, etc.) ils disposent des outils suivants :

  • file
  • less
  • netcat
  • netstat
  • nmap
  • screen

Nommages des machines

Faites en sorte que sur chacun des postes chacune des 3 machines doit être accessible aussi bien par son nom que par son numéro IP.

Première supervision ad-hoc

Sauf spécification explicite, les différentes questions de cet exercice sont à exécuter sur le moniteur.

Vérification d'accès aux postes

Écrivez un script shell, nommé /usr/local/sbin/verifie-postes, qui :

  • Pour les postes poste1 et poste2
    1. envoie deux paquets ICMP ECHO_REQUEST via la commande ping(1)
    2. ajoute dans le fichier /var/log/local-ping une ligne de la forme

      TIMESTAMP:POSTE:RTT

      avec

      • TIMESTAMP l'heure UNIX (c'est-à-dire le nombre de secondes depuis l'epoch Unix)
      • POSTE le nom du poste
      • RTT le temps moyen de réponse du ping

Planification de la vérification

Sur le moniteur, planifiez l'exécution de ce script toutes les minutes grâce à une table crontab(5) placée dans /etc/cron.d.

Première présentation du suivi

  1. Installez le serveur apache2.
  2. Écrivez un script shell, nommé /usr/local/sbin/ping2html, qui convertit le contenu de /var/log/local-ping en un document HTML, dans /var/www/html/ping.html. Ce document doit contenir deux tableaux représentants les temps moyens de réponses pour chacun des deux postes.

    Si possible dans ce tableau les dates (timestamps) doivent être représentées sous la forme AAAA-MM-JJ-hh:mm.

  3. Planifiez la création de ce document HTML toutes les minutes en appelant ping2html juste après l'exécution de verifie-postes, si celle-ci a réussi, dans la crontab mise en place précédemment.

Amélioration de la représentation

La commande suivante permet de générer un image SVG dans /tmp/image.svg avec comme nom courbe. Il faut pour cela lui transmettre via son entrée standard des lignes de texte composés de 2 mots (une date et un temps de réponse).

gnuplot -e 'set terminal svg ; set output "/tmp/image.svg" ; set grid ; plot "-" using 1:2 with linespoint title "courbe"'
  1. Installez l'outil gnuplot
  2. Écrivez un script, nommé /usr/local/sbin/ping2svg, qui convertit le contenu de /var/log/local-ping en deux images au format SVG, respectivement /var/www/html/poste1.svg et /var/www/html/poste2.svg. Chaque image doit représenter la courbe des temps de réponse de chacun des 2 postes.
  3. Planifiez la création de ces deux images toutes les minutes en appelant ping2svg juste après l'exécution de ping2html, si celle-ci a réussi, dans la crontab mise en place précédemment.
  4. Modifiez la commande /usr/local/sbin/ping2html pour y inclure des liens vers les 2 images générées.

Tests

  • Sur poste1 planifiez un arrêt/démarrage de l'interface réseau aléatoire toutes les deux minutes.