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¬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);
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.