PDA

View Full Version : check_http "socket time out"


David31
04-30-2008, 04:23 PM
[RESOLU]

Bonjour à tous, j'ai un soucis avec le plug-in check_http sur des sites Web sur Internet.
Cette commande fonctionne avec mes serveurs Web sur mon réseau mais pas sur ceux qui sont consultables depuis Internet (par exemple sur www.vigicrues.ecologie.gouv.fr (http://www.vigicrues.ecologie.gouv.fr) qui alerte sur les crues au niveau national).
L'erreur renvoyé est : "socket time out after 10 seconds"

La machine Nagios est pourtant capable d'aller sur Internet, j'arrive notamment à faire un wget sur les sites Internet en question (et récupérer une page Web).

Merci pour vos réponses.

David

naparuba
04-30-2008, 05:38 PM
Le wget est sans proxy?

David31
05-02-2008, 10:14 AM
Le wget est sans proxy?
Le wget et le check_http passent tous les 2 par un proxy.
la variable http_proxy a été définie dans le .bash_rc et .bash_profile du compte nagios et root.
Nagios a t-il besoin d'une autre dévlaration ?

naparuba
05-02-2008, 11:17 AM
Ah je ne savais pas que check_http savait le faire. C'est qu'elle option?

Tu peux faire un netstat pendant le script afin de voir où il se connecte effectivement?

David31
05-02-2008, 12:20 PM
Si check_http ne passe pas les proxy et donc ne monitore pas les sites Web sur Internet, qu'utilises-tu pour surveiller un tel site ?

naparuba
05-02-2008, 12:32 PM
De toute manière, si tu passes par un proxy, le check va être moyennement fait à cause du cache du proxy. Il te faut une machine qui puisse taper réelement sur les serveurs web (en interne et DMZ pas de problème en général, pourl'extérieur plus problématique). Perso on a une petite machine qui est dédiée à ce genre de cas, elle a une connexion à part sur le net (une simple adsl) et on l'utilise en rebond pour les checks (enregistrements DNS, HTTP et certificats par exemple). Avec une petite machine comme ça, un ssh qui lance la commande et tu as ton résultat.

David31
05-05-2008, 12:23 PM
OK pour le cache, maintenant un de mes collègues a développé un autre plug-in qui utilise la comme shell "wget".
Avec le forçage de la variable "http_proxy" dans la commande, ça passe.

Voici le plug-in :
#!/usr/bin/php
<?
///////////////////////////////////////////////////////////////////////////////
//
// Configuration
//
///////////////////////////////////////////////////////////////////////////////

// Temps de reponse limites du serveur Web (en ms)
$warning["www"] = 700;
$critical["www"] = 1500;

// URL de la page fournissant les statistiques
$url = "http://votre_serveur_web/index.php";

///////////////////////////////////////////////////////////////////////////////
//
// Execution
//
///////////////////////////////////////////////////////////////////////////////

// Debut du chronometre
$debut = microtime (true);

// On recupere le fichier a la bonne URL

//if (!($contenu = file_get_contents ($url))) terminer (2, "Serveur Web inaccessible");
if (!($contenu = obtenirFichierWWW ($url))) terminer (2, "Serveur Web inaccessible");

// On arrete le chronometre et on calcule la duree d'execution (en otant la duree des requetes a la base)
$duree = round((microtime (true) - $debut)*1000);

// Preparation du message a afficher dans Nagios
$message = "Temps de reponse : ".$duree." ms (".$warning["www"]." / ".$critical["www"].")";

// Temps de reponse EXCESSIVEMENT LONG = alerte critique
if ($duree>$critical["www"]) terminer (2, $message);
//if ($duree>$critical["www"]) exit (2);

// Temps de reponse long = warning
if ($duree>$warning["www"]) terminer (1, $message);
//if ($duree>$warning["www"]) exit (1);

// Tout est ok
//exit (0);
terminer (0, $message);

///////////////////////////////////////////////////////////////////////////////
//
// Fonctions
//
///////////////////////////////////////////////////////////////////////////////

function terminer ($etat, $message)
{
echo $message;
exit ($etat);
}

function obtenirFichierWWW ($url)
{
$command = "export http_proxy=http://votre_proxy:le_port/ && wget --cache off -q -O /dev/stdout ".$url;
exec ($command, $resultat);
return implode ("\n", $resultat);
}
?>

naparuba
05-05-2008, 12:25 PM
Merci beaucoup :)