29 de octubre de 2013

Consolidación de logs con LogFaces

clip_image001Desde hace un tiempo, estamos utilizando LogFaces para centralizar y analizar las trazas generadas por aplicaciones diversas. Los resultados están siendo excelentes, al tratarse de una herramienta flexible y potente, con un coste de licencia muy razonable.

LogFaces es un servicio capaz de recibir eventos generados por aplicaciones diversas y consolidarlos en una base de datos. Desde ella, y con la aplicación LogFaces Client, los supervisores disponen de una consola en la que analizar en tiempo real el estado de las aplicaciones y realizar potentes búsquedas sobre los avisos generados.

clip_image002

El servicio

El servicio puede correr en cualquier equipo Linux o Windows, la instalación predeterminada es muy sencilla y prepara un servicio totalmente operativo, sobre una base de datos embebida basada en Apache Derby. Con un poco más de trabajo se puede conectar contra otras bases de datos relacionales, o usar MongoDB.

Tiene muchas opciones de configuración, pero repasaré solo las que hemos modificado para nuestro entorno.

Se puede integrar con un directorio activo para que se usen usuarios y grupos de directorio activo (y de otros proveedores, porque tira de LDAP) para identificar a los usuarios que acceden a consultar los logs.

La base de datos permite controlar la capacidad en días para los que se guardarán los logs, de forma que se eliminen automáticamente. También es posible configurar qué eventos se consolidan en la base de datos y qué eventos solo se retransmiten a los clientes. En nuestro caso, usamos la configuración por defecto, sólo se guardan los eventos de nivel INFO, y si alguna aplicación genera eventos DEBUG, estos se reenviarán a cualquier cliente que esté conectado. Si nadie está conectado, se perderán.

Podemos ampliar el esquema de información que se guarda utilizando MDC de log4j, unos parámetros que se pueden añadir a las trazas para enriquecerlas. En nuestro caso, hemos añadido dos parámetros, user y sessionID, que nuestra librería de trazas rellena para poder seguir todas las operaciones de una sesión de usuario en una aplicación web dentro de una granja de servidores.

clip_image003

En la gestión de notificaciones, tenemos dos opciones, los informes, que permiten una ejecución periódica (basada en cron) de una determinada consulta sobre la base de datos de LogFaces, que será enviada por correo electrónico a las direcciones indicadas. En nuestro caso, lo usamos para tener un resumen cada hora de determinado tipo de errores en algunas aplicaciones.

clip_image005

Por otra parte, tenemos la posibilidad de definir avisos en tiempo real: definimos una consulta y unos umbrales de eventos en un periodo. Por ejemplo, si en 5 minutos se producen más de 10 warnings o excepciones, se enviará un correo electrónico.

clip_image007

clip_image009

clip_image011

En cuanto a requerimientos de hardware, son bajos. En nuestro entorno, una máquina virtual con un procesador y 2 GB de RAM está consolidando eventos de unos 100 clientes, un cluster web y otras aplicaciones y servicios diversos, sin ninguna penalización ni pérdida de mensajes, mientras 5-8 personas tienen abierto el cliente de consulta.

Las aplicaciones

La integración entra las aplicaciones y LogFaces se realiza generalmente a través de log4j, log4net o log4php, aunque existe soporte para otras librerías de traceo o se puede hacer algún tipo de desarrollo propio.

En nuestro caso, adaptamos nuestra librería de traceo para utilizar log4net, además de mejorarla para guardar la información de sesión en aplicaciones web y configurar la información de algunas trazas especiales (todo esto es transparente a LogFaces).

Además, hemos hecho algún script para analizar otro tipo de logs tradicionales generados por aplicaciones para su envío a LogFaces, utilizando un script php en un servidor Linux y log4php.

El cliente de consulta

La aplicación cliente de consulta de logs es muy completa, permite definir ‘workspaces’, escritorios de trabajo en los que personalizar cómo queremos ver los logs, en caso de que queramos tener entornos diferentes para cada aplicación.

image

Permite dos modos de trabajo:

  • Consultas sobre la base de datos, cualquier consulta que se realice sobre la base de datos, por nivel de error, tipo de aplicación, fecha y hora, severidad…. puede ser consultada y refrescada automáticamente cada cierto tiempo.
  • Perspectivas: básicamente, son consultas que se ejecutan en tiempo real, mostrándonos los eventos a medida que se reciben.

Generalmente, trabajaremos con una perspectiva de problemas, que nos dice qué errores se están produciendo en tiempo real, y que recoge trazas de nivel WARN o excepciones.

clip_image013

De cada mensaje, tenemos acceso a un montón de información (condicionada por lo que estemos mandando en la traza):

  • Fecha y hora
  • Nivel de severidad
  • Dominio: es una etiqueta que podemos usar para hacer referencia a la aplicación que genera el error
  • Host: el equipo que genera el error
  • Logger: el logger de log4j/log4net
  • Clase y método que generan el error
  • Fichero y línea que genera el error, si tenemos información de depuración en los compilados

El cliente de Logfaces tiene muchas características interesantes, pero una es realmente útil. Sobre un error concreto, podemos recuperar rápidamente eventos anteriores relacionados con error, por dominio, máquina, sesión, usuario…. Realmente útil!!

clip_image014

El soporte y las actualizaciones

LogFaces es un producto vivo, con actualizaciones frecuentes con nuevas características y resolución de problemas. El soporte técnico es rápido y directo, muy efectivo.

En resumen, un producto totalmente recomendable!!!

http://www.moonlit-software.com/