enchufado
   RSS
#
Script de monitorización de webservers (Programación) 2006-09-16 09:52:27

Buenas amigos, aquí nos tenéis en un artículo más, dejando atras el chaparrón solar veraniego.

Bien, lo que hoy aquí os presento ha surgido fruto de las necesidades laborales de monitorizar servidores web remotos. Obviamente, la intención para con estos servidores es que esten online la mayor parte del tiempo y, en en su defecto, restablecerlos en el menor espacio de tiempo posible. Para ello es imprescindible saber cuanto antes desde qué momento el servidor no está accesible (para poder actuar en consecuencia).

Para llevar a buen puerto esto, nuestro script tratará de obtener una insignificante porción de datos de nuestro webserver. Si esto da resultado, el script se queda tanto o más tranquilo que su sysadmin y acaba. Si -por desgracia- esto no es así, hace varios reintentos en distintos lapsos de tiempo, y al tercer reintento fallido notifica al inconsciente sysadmin por correo de la desgracia.

Pues aquí tenéis el webserver monitoring script (o como lo queráis llamar) que, como podréis ver, está escrito en php.

Algunos apuntes

  1. La intención es ponerlo como tarea programada -cronificada- cada hora, por ejemplo (en /etc/crond.hourly/).
  2. Si no encuentra el intérprete no os llevéis las manos a la cabeza: recordad cambiarle la ruta de la primera linea hacia dónde tengáis vuestro php (which php).
  3. Es altamente probable que no funcione en algunos servidores de correo, ya que la comunicación con éste puede variar dependiendo del servidor que se trate, de la versión, de su configuración, etc... Esto es insalvable, y la única solución es... habla con tu servidor, aprende su lenguaje y modifica el script acorde con sus necesidades (en esta ocasión, telnet es tu amigo). Se ha escrito para y funciona con los servidores de correo (smtp) de Ya.com.

Aprovecho la ocasión para recomendar SciTE, un editor de texto bajo X que me ha cautivado. Es altamente configurable, atractivo, y posee varias y útiles funcionalidades para la programación en distintos lenguajes (indentaciones, syntax highlights, numeración de linea, line wrapping, folding, compilación/ejecuión, franja de salida de consola, y muchas otras que seguramente me queda por descubrir). Por si a alguien le da por probarlo, aquí tenéis mi configuración global (que en el caso de Gentoo está ubicada en /usr/share/scite/SciTEGlobal.properties).

Sólo me queda agradecer la ayuda de mobius (aka Row) para desarrollar la función webtest(), sin cuya colaboración esto se hubiera demorado (probablemente de manera eterna). Se había probado de hacer de varias formas, entre las cuales fueron varias implementaciones de ping en php y varios modos de uso de fread() de la página de documentación oficial, sin por ello obtener ningún resultado alentador.

Por otro lado, si hubiera aprendido a usar la clase phpMailer a tiempo, probablemente también me habría ahorrado tener que reinventar la rueda y escribir mi pequeño algoritmo para enviar a través de SMTP. No comments...

Algunos enlaces consultados fueron...


Comentarios (3)


Volver al indice

login, admin, form, register