Hace unos días me surgió la necesidad de monitorear el estado de un servidor (si esta UP o DOWN) y recibir notificaciones via e-mail cuando se cayera. Probé un par de servicios gratuitos, pero sólo realizaban comprobaciones cada 30 minutos, por ejemplo.
Entonces se me ocurrió hacerlo por mí mismo, y conseguí realizarlo utilizando un servidor de hosting gratuito como 00webhost, realizando comprobaciones cada 5 minutos y notificando las caídas via e-mail al instante.
Código de PHP para monitoreo de servidores
Debemos crear una cuenta de usuario gratuita en 00webhost.com. No es necesario que registremos un dominio .com personalizado, simplemente utilizamos un subdominio de los que nos proveen. Una vez creada la cuenta, vamos a generar un archivo PHP llamado monitor.php que se encargue de verificar el estado del sitio y envie un e-mail de notificacion si esta caido.
Código :
<?php require_once ('Libmail.class.php'); // Function to check response time function pingDomain($domain){ $starttime = microtime(true); $file = fsockopen ($domain, 80, $errno, $errstr, 10); $stoptime = microtime(true); $status = 0; if (!$file) $status = -1; // Site is down else { fclose($file); $status = ($stoptime - $starttime) * 1000; $status = floor($status); } return $status; } // notificamos via email if (pingDomain('www.cordobalquila.com.ar') < 0) { $m= new Mail; $m->From("[email protected]"); $m->To("[email protected]"); $m->Subject("El sitio www.cordobalquila.com.ar esta caido"); $message= "El sitio esta caido"; $m->Body($message); $m->Send(); } ?>
Cron Jobs en tu servidor web
La parte mas importante, planificar la tarea para que el servidor realice esta comprobacion cada cierto período de tiempo. Lo positivo es que 00webhost nos permite planificar tareas hasta en intervalos de 5 minutos, que es lo que considero bastante apropiado.
Desde nuestro panel de administración de la cuenta, vamos a la opción Cron Jobs y asignamos intervalos de 5 minutos a la ejecución del comando:
Código :
php -f RUTA_DEL_ARCHIVO/monitor.php
¡Listo, eso es todo! Ahora bien, podemos jugar un poco con este modelo para comprobar el estado de múltiples sitio, guardar stats en una base de datos, etc, etc, etc. Código fuente completo y listo con instrucciones detalladas en mi blog.
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por Freddie el 02 de Diciembre de 2009
También podrías tener en esos servers gratuitos una web que muestre el estado de tu server pago en caso de problemas, para que la gente sepa qué pasa.
Por Huge el 02 de Diciembre de 2009
Lo puedes crear en un servidor gratuito o utilizar Google App Engine, que también es gratuito y sabes que va a estar online el 99,99%
Saludos
Por Freddie el 02 de Diciembre de 2009
Huge-blog :
Por Adri. el 02 de Diciembre de 2009
Por ejemplo, el servidor puede estar devolviendo un error HTTP 500 y para el script el sitio estaría levantado.
Lo mejor sería comprobar si, haciendo una petición (GET) al servidor, éste retorna una cadena del tipo "HTTP 200 OK".
Idealmente, lo que pasa es que para sitios gratuítos o multidominio está deshabilitado, es utilizar SNMP para la monitorización de diversos aspectos de los servidores.
Saludos,
Por joarobles el 02 de Diciembre de 2009
Adri.-blog :
Por ejemplo, el servidor puede estar devolviendo un error HTTP 500 y para el script el sitio estaría levantado.
Lo mejor sería comprobar si, haciendo una petición (GET) al servidor, éste retorna una cadena del tipo "HTTP 200 OK".
Idealmente, lo que pasa es que para sitios gratuítos o multidominio está deshabilitado, es utilizar SNMP para la monitorización de diversos aspectos de los servidores.
Saludos,
es muy buena idea!
Por sebasxnco el 02 de Diciembre de 2009