Monitoring de site avec alerte mail et SMS
Posté par le 31 mai 2009 dans PHP • 19 commentairesEn 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. Un hébergement php gratuit fera très bien l'affaire.
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('monmail@gmail.com', 'Monitoring', $host.' down');
mail('sms@smsbox.fr', 'login=****&pass=****&dest=**********&mode=Expert¬if=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);
Et dans la base de données on crée la table monitoring
CREATE TABLE `monitoring` ( `host` varchar(25) NOT NULL, `date` datetime NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1
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.
Autres articles dans la catégorie PHP
- Traiter les emails avec php
- Faire du email piping avec PHP et CPanel
- Présentation de l’interface Iterator de PHP
- Manipulation de répertoires en php avec la SPL
- Géolocalisation IP avec PHP et WordPress
- script php de sauvegarde mysql
- Monitoring de site avec alerte mail et SMS
- Communiquer entre serveurs par requêtes xml
- Une classe php complète pour la détection du navigateur
- 6 fonctions PHP indispensables








Très pratique, mais limité, car il faut un autre serveur… Ce que tout le monde n’a pas.
Je découvre a travers ton poste smsbox.
Je m’en servirai pour d’autres appli je pense.
à noter que smsbox propose une API simple d’utilisation, je n’en ai pas parlé dans cet article car ce n’est pas son but. Si certains veulent mettre en place un site/plateforme d’envoi de SMS gratuits (rémunérés par la pub) il y a moyen de faire quelques chose rapidement
il y a un service gratuit qui peut faire ça ici : http://mail2sms.fr.nf/fr/help.php
Salut,
tu as testé ? ca fonctionne ? c’est vraiment gratuit ? l’envoi de sms est immédiat ou il y a un temps d’attente ?
J’ai testé, c’est vraiment gratuit, le sms arrive en moins 5 minutes.
Très intéressant comme solution, et surtout très simple par rapport à des solutions gratuites que l’on peut trouver sur le net (qui sont le plus souvent des machine à gaz).
Bonjour,
Merci pour ce billet, je ne connaissais pas non plus smsbox.
Est-ce que vous ne connaitriez pas un service en ligne qui propose ce genre de service ? Pour monitorer mes sites, j’utilise ozmonitor qui est sensé proposer l’alerte par SMS, mais qui visiblement n’a jamais fini d’implémenter ce service… J’aimerais bien ne pas avoir à louer un nouveau serveur juste pour le monitoring…
On peut très bien mettre ce petit script sur un hébergement php gratuit.
Mais comment se lance la fonction? Il faut bien appeler tout ça quelque part?
Merci d’avance pour ta réponse!
Bonjour, on planifie l’appel de la page PHP toutes les x minutes. On peut par exemple le faire par un cron job sous linux, ou un cron en ligne gratuit, faire une recherche sur Google sur « cron en ligne » pour en trouver.
Ok, merci =). Je pensais bien au cron, mais vu que les hébergements gratuits ne proposent pas les taches cron, je comprenais pas. Et je savais pas qu’il existait des sites de « cron gratuit ».
Merci du renseignement!
J’ai du mal a croire que l’envoi de sms soit gratuit ?? ya vraiment rien a payer, il y a forcement une limite dans le nombre quand même?
Salut,
Mon site est maintenant fonctionnel et c’est un peu grâce à toi, j’ai donc rajouté ton lien dans mes favoris.
Merci encore pour tes trucs et astuces.
Bonne Année
Post intéressant mais il faut une plateforme d’envoi SMS.
Quelle plateforme conseillez-vous ?
Personnellement, je préfère utiliser le Google Agenda avec RDV et rappel par SMS, en plus c’est gratuit.
Romain
[...] également souscrire à l’un des services gratuits de monitoring sur internet ou développer votre service de monitoring avec alerte mail et [...]
Tiens on croirait pas que ce genre de service pour son site est à la portée de tout le monde de cette façon, va falloir que je me penche dessus pour le lancement d’un site que je suis sur le point de faire ^^ merci pour les infos
Très interessant comme solution! Quelqu’un a trouver un « cron en ligne gratuit »?
C’est une bonne idée que de ne pas envoyer au premier échec mais d’attendre le second. Cela évite de manger son quota de SMS sur les fausses alertes.