Magazine Internet

Monitoring de site avec alerte mail et SMS

Publié le 31 mai 2009 par Jbjweb

En cette période de longs week-end il est toujours intéressant d'être alerté automatiquement en cas de soucis sur son ou ses sites.

Voici un code PHP pour surveiller que son site web répond (monitoring de site).

Il pourra ainsi détecter si le site ne répond pas ou si la page d'accueil contient bien le mot clé indiqué. C'est toujours utile de vérifier le contenu, dans le cas par exemple où on se fait hacker et que le hacker met juste sa signature en page d'accueil, ou plus classique le site web répond mais affiche juste un message d'erreur.

Ce programme de monitoring de site doit être placé sur un autre serveur que le site à surveiller afin justement de ne pas risquer d'être down en même temps.

En cas de problème ce monitoring de site envoie un mail ou une alerte SMS.

On crée une page PHP et on y met son include de connexion à la base de données.

La première chose à écrire est la fonction de monitoring de site (surveillance).

On regarde si le site (host) répond et si on a bien la chaine de caractères désirée (find).
Retourne True si tout est ok, sinon retourne False.

function check($host, $find) {
 $fp = fsockopen($host, 80, $errno, $errstr, 10);
 if (!$fp) {
  echo "$errstr ($errno)\n";
 } else {
  $header = "GET / HTTP/1.1\r\n";
  $header .= "Host: $host\r\n";
  $header .= "Connection: close\r\n\r\n";
  fputs($fp, $header);
  while (!feof($fp)) {
   $str .= fgets($fp, 1024);
  }
  fclose($fp);
  return (strpos($str, $find) !== false);
 }
}

On va maintenant écrire la fonction qui envoie le mail d'alerte et le SMS.
On utilise ici le service d'envoi de sms : smsbox.fr.

function alert($host) {
 global $ConnString2;
 $conn = mysql_connect($ConnString2['ip'],$ConnString2['uid'],$ConnString2['pwd']) or die('impossible de se connecter');
 mysql_select_db($ConnString2['db'], $conn) or die('erreur bdd'); 

 // on purge la table des vieux enregistrements
 $sql = 'delete from monitoring where date_add(date, interval 12 hour) < NOW()';
 mysql_query($sql) or erreurbdd (mysql_error(),$sql);

 // on historise l'alerte
 $sql = 'insert into monitoring (host, date) values (\''.$host.'\', now())';
 mysql_query($sql) or erreurbdd (mysql_error(),$sql);

 // on compte le nombre d'échecs
 $sql = 'select count(*) as tot from monitoring where host=\''.$host.'\'';
 $rs = mysql_query($sql) or erreurbdd (mysql_error(),$sql);
 $row = mysql_fetch_array($rs);

 // on envoi le sms au deuxième échec
 if ($row['tot'] == 2) {
  mail('[email protected]', 'Monitoring', $host.' down');
  mail('[email protected]', 'login=****&pass=****&dest=**********&mode=Expert&notif=1', $host.' down');
 }
 mysql_close();
}

C'est presque terminé il faut juste écrire les appels du monitoring :

$host = 'www.lyxia.org';
$find = 'Theme par JBJ';
if (!check($host, $find)) alert($host);

Voilà on peut partir en week-end rassuré, on sera alerté en cas de soucis, et il suffira d'agir en conséquence : appel à l'hébergeur, reboot du serveur etc.


Retour à La Une de Logo Paperblog

A propos de l’auteur


Jbjweb 18 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte

Magazine