Webinject est un script perl qui a pour but de tester des scénarios web, en lui décrivant les cas d'utilisation. Par exemple, on veut vérifier la prescence d'un email à travers le webmail après s'être authentifié. Webinject peut s'utiliser avec Nagios en tant que plugin et génère des données de performances.
# wget http://mesh.dl.sourceforge.net/sourceforge/webinject/webinject-1.41.src.tar.gz
Décompresser les sources, par exemple, dans /usr/lib/nagios/plugins
# tar xzf webinject-1.41.src.tar.gz
# mv webinject/webinject.pl /usr/lib/nagios/plugins/.
Avec FAN, lancer
# yum install webinject
Ce premier scénario a pour but de tester l'authentification sur Horde et vérifier la présence d'un mail. Pour une première écriture d'un scénario web, mettez comme valeur “standard” à reporttype. Cela permettra le debugger en cas de problème, en regardant les fichiers de log générés, dont http.log. Quand tout marchera bien, changez la valeur par “nagios”.
# cd /usr/lib/nagios/plugins/
# mkdir scenarios/test1
# chown -R apache:apache scenarios/test1
# vi scenarios/test1/config.xml
<globalhttplog>yes</globalhttplog> <useragent>WebInject Application Tester</useragent> <timeout>10</timeout> <globaltimeout>20</globaltimeout> <reporttype>standard</reporttype>
On supposera que l'url de horde est https://server/horde3/login.php. On s'authentifie avec l'identifiant “toto” et comme mot de passe “azerty”
# vi scenarios/webinject/testcases.xml
<testcases repeat="1">
<case
id="1"
description1="Authentification horde"
method="post"
url="https://server/horde3/login.php"
postbody="url=&horde_user=toto&horde_pass=azerty&new_lang=fr_FR"
parseresponse1="Horde=|;"
parseresponse2="auth_key=|;"
/>
<case
id="2"
description1="Presence message1"
url="https://server/horde3/imp/mailbox.php?mailbox=INBOX&actionID=login"
method="get"
parseresponse="Location: |\n"
/>
<case
id="3"
description1="Presence message2"
url="{PARSEDRESULT}"
method="get"
parseresponse="Location: |\n"
/>
<case
id="4"
description1="Presence message3"
url="{PARSEDRESULT}"
method="get"
verifypositive="exemple de sujet"
/>
</testcases>
Pour tester :
# /usr/lib/nagios/plugins/webinject.pl
# /usr/lib/nagios/plugins/webinject.pl scenarios/horde3/testcases.xml -c scenarios/horde3/config.xml
Créer une commande pour l'appel au plugin webinject.pl, par exemple :
define command{
command_name check_webinject
command_line $USER1$/webinject.pl $ARG1$ -c $ARG2$
}
Puis créer le service associé à votre host :
define service{
host_name ovh1
service_description scenario_horde_presence_message
use generic-service
check_command check_webinject!scenarios/horde3/testcases.xml!scenarios/horde3/config.xml
}
Modifier les droit pour que Nagios puisse avoir les droits d'écriture sur scenarios/horde3.
# chown -R nagios:nagios /usr/lib/nagios/plugins/scenarios/horde3