R5B08 - Séance 1
Supervision ad-hoc rapide
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.
1. 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 vos modifications en dehors de vos machines
virtuelles et à les remettre en place au moment de la recréation de
votre infrastructure (par exemple via un provisionnement).
1.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
; moniteur
ait comme adresse IPv4192.168.62.10
;poste1
ait comme adresse IPv4192.168.62.21
;poste2
ait 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 :file
less
netcat
netstat
nmap
screen
xauth
1.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
graphiques de la machine virtuelle vers la machine physique :
ssh moniteur
ssh poste1
ssh poste2
2. Première supervision ad-hoc
Sauf spécification explicite, les différentes questions de cet
exercice sont à exécuter sur le moniteur
.
2.1. Vérification d'accès aux postes
Écrivez un script shell, nommé /usr/local/sbin/verifie-postes
,
qui :
- Pour les postes
poste1
etposte2
- envoie deux paquets
ICMP
ECHO_REQUEST
via la commandeping(1)
ajoute dans le fichier
/var/log/local-ping
une ligne de la formeTIMESTAMP:POSTE:RTT
avec
TIMESTAMP
l'heure UNIX (c'est-à-dire le nombre de secondes depuis l'epoch Unix)POSTE
le nom du posteRTT
le temps moyen de réponse du ping
- envoie deux paquets
2.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
.
2.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-ping
en 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
ping2html
juste après l'exécution deverifie-postes
, si celle-ci a réussi, dans lacrontab
mise en place précédemment.
2.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 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"'
- Installez l'outil
gnuplot
- É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. - Planifiez la création de ces deux images toutes les minutes en
appelant
ping2svg
juste après l'exécution deping2html
, si celle-ci a réussi, dans lacrontab
mise en place précédemment. - Modifiez la commande
/usr/local/sbin/ping2html
pour remplacer les tableaux par les 2 images générées.
2.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$RANDOM
pourra 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
3. Modification du stockage
3.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.
3.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
.
3.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.