R5B08 - Séance 1
Supervision ad-hoc rapide
1. Introduction
Lors de ce TP vous allez :
- mettre en place une petite architecture système, utilisée lors des séances suivantes,
- construire une premier système simple de supervision réseau.
2. Environnement des TPs
L'ensemble de vos TPs devra être effectué sur une machine de salles de
TP. En fin de TP vous devrez donc toujours supprimer l'infrastructure
utilisée pendant le TP via un appel à vagrant destroy.
Pensez-donc à bien sauvegarder régulièrement vos modifications en dehors de vos machines virtuelles, à la fois:
- dans un document texte au format Markdown décrivant ce qui est
nécessaire à faire pour atteindre les objectifs demandés. Pour le
TP courrant ce fichier devra être nommé
tp-01-LOGIN.md(avecLOGINremplacé par votre identifiant) ; - et dans des scripts (un par poste) permettant d'atteindre ces objectifs rapidement une fois exécutés sur les machines virtuelles concernées. Cela doit, notamment vous permettre de remettre en place l'environnement de travail au moment de la recréation de votre infrastructure lors des séances suivantes.
2.1. Création des postes
Grâce à vagrant préparez une infrastructure composée de 3 serveurs
virtuels nommés moniteur, poste1 et poste2 telle que :
- les serveurs soient connectés au réseau
192.168.62.0/24; moniteurait comme adresse IPv4192.168.62.10;poste1ait comme adresse IPv4192.168.62.21;poste2ait comme adresse IPv4192.168.62.22;- chacun des 3 serveurs soient accessibles par leur nom (
moniteur,poste1,poste2) depuis chacun des serveurs ; - chacun des 3 serveurs, outre un éditeur de textes de votre choix
(
emacs,vim, etc.), dispose des outils suivants :filelessnetcatnetstatnmapscreenxauth
2.2. Connexion SSH
Faites en sorte que, une fois votre infrastructure démarrée, vous
puissiez vous connecter, depuis votre machine physique, 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 une redirection des demandes d'affichage
graphique de la machine virtuelle vers la machine physique :
ssh moniteurssh poste1ssh poste2
3. Première supervision ad-hoc
Sauf spécification explicite, les différentes questions de cet
exercice sont à exécuter sur le moniteur.
3.1. Vérification d'accès aux postes
Écrivez un script shell, nommé /usr/local/sbin/verifie-postes,
qui :
- Pour les postes
poste1etposte2- envoie deux paquets
ICMPECHO_REQUESTvia la commandeping(1) ajoute dans le fichier
/var/log/local-pingune ligne de la formeTIMESTAMP:POSTE:RTTavec
TIMESTAMPl'heure UNIX (c'est-à-dire le nombre de secondes depuis l'epoch Unix)POSTEle nom du posteRTTle temps moyen de réponse du ping
- envoie deux paquets
3.2. 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/local-ping.
3.3. Première présentation du suivi
- Installez le serveur
apache2. Écrivez un script (shell ou python), nommé
/usr/local/sbin/ping2html, qui convertit le contenu de/var/log/local-pingen un document HTML, dans/var/www/html/ping-tableaux.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.- Planifiez la création de ce document HTML toutes les minutes en
appelant
ping2htmljuste après l'exécution deverifie-postes, si celle-ci a réussi, dans lacrontabmise en place précédemment.
3.4. Amélioration de la représentation
La commande suivante permet de générer une 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, chacune composées 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"'
- Installez l'outil
gnuplot - Écrivez un script, nommé
/usr/local/sbin/ping2svg, qui convertit le contenu de/var/log/local-pingen deux images au format SVG, respectivement/var/www/html/poste1.svget/var/www/html/poste2.svg. Chaque image doit représenter la courbe des temps de réponse de chacun des 2 postes. - Planifiez la création de ces deux images toutes les minutes en
appelant
ping2svgjuste après l'exécution deping2html, si celle-ci a réussi, dans lacrontabmise en place précédemment. - Modifiez la commande
/usr/local/sbin/ping2htmlpour remplacer les tableaux par les 2 images générées.
3.5. Tests sur poste1
- Écrivez un script, nommé
/usr/local/sbin/panne-aleatoire, qui change l'état de l'interface réseau aléatoirement (en shell la variable$RANDOMpourra vous être utile) - Planifiez l'appel de ce script toutes les 2 minutes
- Vérifiez la prise en compte des pertes de connexion dans le rapport HTML
4. Modification du stockage
4.1. Rotation des logs
Conserver les données sous la forme actuelle peut vite devenir très consommateur d'espace disque.
Configurez votre système pour qu'une rotation du fichier
/var/log/local-ping soit effectuée à chaque fois que le fichier
dépasse 250 octets. Les 6 dernières versions du fichier devront être
conservées et accessibles en lecture à tous les utilisateurs de la
machine.
L'étude des pages logrotate(8) et logrotate.conf(5) sont
indispensables.
4.2. Utilisation de syslog
Modifier vos scripts de façon à ce que les données de connexion aux
postes soit stockées (et donc récupérés) via syslog pour le service
local0 avec la priorité info.
4.3. Utilisation de RRD
Stocker les informations de lattence sous la forme texte actuelle et en effaçant brutalement les données les plus anciennes fait perdre de l'information.
Après avoir installé rrdtool et étudié son manuel, transformez le
stockage des données de lattence en une archive RRD dans une base
nommée /var/log/local-ping.rrd et remplacer la construction des
courbes par des graphes produits par rrdgraph.
Documentez vos différents choix de paramétrages de la base de données et des archives RRD.