Accueil > Jean Cartier’s Blog > Techos > Wake up, little server !

Wake up, little server !

jeudi 10 mai 2007, par administrateur

Je gère un serveur web sous IIS (sic) qui a la facheuse tendance à planter.

Bizarre...

J’ai donc mis en place une procédure pour tester le bon fonctionnement du serveur web.

IIS signifie Windows. Comment faire ?

Un batch lancé toutes le 5 minutes via les tâches planifiées... Voilà donc ce que réalise mon batch :
- Récupère la page d’accueil du site web avec wget dont il existe une version compilée pour micro$oft.
- Vérifier que cette page est bonne, c’est à dire tester la présence d’une chaine de caractère avec la commande find
- mettre le résultat de la commande find dans un fichier
- comparer le résultat de la commande find avec un fichier de référence (créé au préalable lorsque le serveur fonctionnait).

Cas n°1 : le serveur fonctionne, la page est servie par le serveur web, donc on le laisse fonctionner...

Cas n°2 : la page renvoyée n’est pas la bonne. Dans ce cas, on ne fait rien tout de suite (parce que quand même, il faut lui laisser 5 minutes au cas où à ce bon vieux IIS). Mais on crée quand même un fichier flag.txt pour se souvenir dans 5 minutes qu’il y a un problème potentiel (commande echo flag > flag.txt).

Cas n°3 : la page renvoyée n’est pas la bonne et le fichier flag.txt existe déjà. Là, c’est la cacade... On considère qu’il y a un problème et un vrai. On envoie un message à l’administrateur via le réseau (commande net send) et on relance le service web (commande iisreset). Puis on supprime le fichier flag.txt car normalement tout est censé fonctionner.

Cas n°4 : la page renvoyée est la bonne mais il existe un fichier flag.txt. C’est que le serveur refonctionne. On supprime donc le fichier flag.txt.

Il vous faut donc :
- un fichier wget.exe (sur le web)
- un fichier batch (voir ci-dessous)
- un fichier de référence à créer par la commande find

Et hop, un coup de planificateur de tâche et ça roule.

Voici le fichier batch :

@echo off
REM Ce fichier teste le bon fonctionnement du serveur web.
REM ----------------------------------------------------
REM Il récupère le fichier http://monserveurweb/monchemin/monindex.php
REM Il teste le contenu de celui-ci pour voir ce qui est renvoyé
REM La chaine recherchée est "Machainepresentedanslapagedaccueil"
REM Si la chaine existe dans le fichier alors le serveur fonctionne
REM Sinon le serveur a un dysfonctionnement.
REM Dans ce cas, on lance un iisreset et on positionne un flag (sauf si déjà positionné)
REM sous la forme d'un fichier flag.txt et on envoie un message aux personnes
REM de la hotline et aux administrateur intranet.
REM ----------------------------------------------------
REM Ce script est lancé toutes les 5 minutes

REM Récupération de la page d'accueil de l'intranet
REM ----------------------------------------------------
REM Modifier le chemin du serveur web
echo Recuperation de la page Accueil Intranet Serveur15hdd :
wget http://monserveurweb/monchemin/monindex.php

REM Test de la présence de la chaine "Barres" dans le fichier récupéré
REM ----------------------------------------------------
REM Modifier la chaine à rechercher
find "XXXmachaineXXX" index.php > result.txt

REM Comparaison du fichier result.txt avec reference.txt
REM Si les 2 ont la même taille, c'est que le serveur fonctionne
REM ----------------------------------------------------
set fichier1=result.txt
set fichier2=reference.txt
for %%a in (%fichier1%) do set taille1=%%~za
for %%a in (%fichier2%) do set taille2=%%~za
if %taille1%==%taille2% (
echo Les tailles des fichiers sont identiques.
) else (
echo Les tailles des fichiers ne sont pas identiques.
if EXIST flag.txt (
 echo Suppression de flag.txt :
 del flag.txt
 echo Envoi d'un message administrateur :
 net send XXXposte_adminXXX Reset_serveur
 echo Lancement de iisreset :
 iisreset
) else (
 echo Positionnement du flag d'erreur :
 echo flag >flag.txt
)
)
echo Suppression de get.txt :
del index.php
echo Suppression de result.txt :
del result.txt

Le fichier reference.txt est créé en ligne de commande en exécutant les ordres suivants :

wget http://monserveurweb/monchemin/monindex.php
find "XXXmachaineXXX" index.php > reference.txt

Bonne supervision !