Sistema de Monitorización

Hace algún tiempo me encontré un problema a la hora de monitorizar ciertos servidores que se encontraban en centros remotos, así como servicios web que debían estar disponibles. Existen muchas herramientas como Nagios y similares que permiten este tipo de monitorizaciones, pero en muchos casos no querremos montar un servidor sólo para monitorizar dos o tres IP’s y una web.

Como las pequeñas herramientas que encontré por internet no me convencieron demasiado, decidí programar una con funciones de notificación por e-mail, comprobación de ping y consulta web para detectar errores (en caso de que el servidor este online pero, por ejemplo, el servicio web este dando Error 500)

Las funcionalidades de que dispone el programa son:

  • Comprobación de ping
    • Registro de timeouts
    • Tiempo timeout(en ms) configurable
    • Notificación por mail (en la caída y en la recuperación del host)
    • Dos niveles de error (En rojo sin notificación pero con registro, y notificación por mail)
    • Registro de timeouts en fichero
  • Comprobación web
    • Comprobación de estado
    • Búsqueda de cadenas dentro del HTML retornado
    • Notificación por mail
    • Dos niveles de error (En rojo sin notificación pero con registro, y notificación por mail)
    • Registro de timeouts en fichero
  • Posibilidad de mantener la ventana sobre el resto de ventanas (On top)
  • Transparencia al perder el foco
  • Lectura del registro desde la aplicación
  • Archivos de configuración ini

Las configuraciones son las siguientes:
#ips.ini
DESCRIPCION;192.168.XXX.XXX;mail@from.com;mail@to.com;servidorsmtp.com
BDCENTRAL;192.168.1.1;alertas@gmail.com;alexlatorre@me.com;smtp.gmail.com

#webs.ini
WEBCENTRAL;http://miservidor/login.html;mail@from.com;alexlatorre@me.com;smtp.gmail.com;palabras-a-buscar-separadas-por-guiones

 

El sistema de envío de mails no admite servidores con autenticación, por lo que debes ususarlo con un servidor smtp propio o uno anónimo.
Actualmente no tengo previsto modificar el programa, pero si hubiera una buena sugerencia no tengo problema en ponerme a ello!

 

Descargar “PingPong!” PingPong.zip – Descargado 12 veces – 51 KB

Symfony y date.timezone php.ini

PHP (como ya habrás visto) es bastante ****** con los timezone. Para ser exactos, yo me encontré un problema debido a que al instalar Symfony, se queja con un warning de que el default timezone no esta setteado.

El error es el siguiente:

Warning: date_default_timezone_get(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in...

Después de darle muchas vueltas, me encontré que la causa es que el php.ini que usa la herramienta de linea de comandos de php es diferente del que usa el interprete de apache.

En mi caso al ejecutar:
MacBook:htdocs alatorre$ php composer.phar create-project symfony/framework-standard-edition testProject
funcionaba correctamente, pero al ejecutar comandos de cache:clear y similares, lanzaba el warning.

Para comprobar en linea de comandos que timezone estas usando y que php.ini estas usando, puedes ejecutar los siguientes comandos:

php -i | grep "timezone"
php -i | grep php.ini

Y para resolver el problema es tan sencillo como copiar el php.ini que usas con apache en la ruta que te indica el comando anterior (habitualmente /etc/php.ini) o realizar una copia del default cambiándole el nombre a php.ini y setteando el valor correcto (en mi caso Europe/Madrid) en la linea date.timezone:

date.timezone = Europe/Madrid

** Ojo! Si la linea esta comentada (; al inicio de la línea), descomentala!

Con esto tendrás un bonito colorido verde cuando ejecutes tus comandos desde Terminal! 😀

Conexión Puerto Serie TTY desde Mac OS X

Si has llegado hasta aquí es porque te has encontrado con el mismo problema que yo hace un par de meses.  Vamos, que estás usando un Macbook para configurar un switch cisco, una cabina NetApp … o en definitiva para conectar por medio de un puerto serie con un dispositivo que lo requiera.

Los portátiles de Apple hace mucho que no tienen puerto com (si es que lo han tenido en algún momento) y además el programa por excelencia para realizar este tipo de conexiones (putty) no funciona en Mac OS X.

Al buscar un poco de info sobre el tema, no parecía haber ningún software para realizar esta función y, aunque al principio me extrañó, la respuesta es más que simple. Usando un adaptador COM-USB podemos realizar esta conexión desde la Terminal con dos comandos:

  1. En primer lugar conectaremos el dispositivo USB
  2. Abrimos un Terminal
  3. Conectamos el cable del dispositivo
  4. Ejecutamos estos comandos:
  5. macbook:user$ cd /dev
    macbook:user$ ls -ltr /dev/*usb*
    crw-rw-rw- 1 root wheel 9, 66 Apr 1 16:46 tty.usbmodem1a21
  6. Con esto veremos una lista de los dispositivos USB que tenemos conectados
  7. Conectamos con el siguiente comando usando el dispositivo TTY que nos aparece en la lista especificando la velocidad del puerto (habitualmente 9600)
  8. macbook:user$ screen /dev/tty.usbmodem1a21 9600

Y listo! Con esto ya podremos configurar nuestro dispositivo sin problemas. Para salir simplemente hacemos un Enter Ctrl+Aseguido de Ctrl+\ o simplmente cerramos el terminal finalizando todos los procesos.

¡Espero que haya sido útil!

¡Hola mundo!

Una prueba de código!

using System;

public class Hello3
{
   public static void Main(string[] args)
   {
      Console.WriteLine("Hello, World!");
      Console.WriteLine("You entered the following {0} command line arguments:",
         args.Length );
      for (int i=0; i < args.Length; i++)
      {
         Console.WriteLine("{0}", args[i]); 
      }
   }
}