¿Quieres registrarte?

Monitor de servidor en PHP

Por: joarobles
2 de Diciembre del 2009
2,143 visitas

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("mailDesde@mail.com.ar");
      $m->To("mailPara@mail.com");
      $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.

Enviar a twitter Enviar a facebook


También te interesa


Etiquetas php linux servidores

Comentarios | Enviar un comentario
Jeje, es un muy interesante hack. La mayoría de servidores dedicados ofrecen esto off-site, pero es una genial idea usar un server gratuito como 000webhost para hacer ping a tus servers pagos en caso de que caigan.

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: Freddie
Buenas...

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: Huge-blog

Huge-blog :

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%
Bueno, el Google App Engine usa Python/Django en vez de PHP. ¿Por qué no escribes el tip en AppEngine? Lo puedes hacer creando un post acá y de ahí pasa a portada.
Por: Freddie
Como ejemplo está bien, y para cosas sencillas puede valer. Pero lo único que está comprobando es que algun servicio esté escuchando por el puerto 80, y esto a veces no es suficiente.
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: Adri.-blog

Adri.-blog :

Como ejemplo está bien, y para cosas sencillas puede valer. Pero lo único que está comprobando es que algun servicio esté escuchando por el puerto 80, y esto a veces no es suficiente.
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: joarobles
muy bueno gracias
Por: sebasxnco-blog
Deja un comentario
IMPORTANTE

Recuerda ser respetuoso, no insultes a otras personas, ni uses palabrotas, hay una persona al otro lado de la pantalla.

Habla bien, NO ESCRIBAS EN MAYUSCULA TODO, no escribas como en un SMS, evita cosas como "ke", "x q" y demás abreviaciones.

Aquí funcionan las etiquetas de los foros, puedes usar [b] para negrita, [img] para las imágenes, [url] para los enlaces, etc.

Si tienes preguntas técnicas, envíalas mejor al foro.