Logstash
# Logstash

Logstash es una herramienta para la administración de logs. Esta herramienta se puede utilizar para recolectar, analizar (parsing) y guardar los logs para futuras búsquedas. La aplicación se encuentra basada en jRuby y requiere de Java Virtual Machine para ejecutarse. Como se ejecuta mediante JVM puede ser ejecutada en cualquier Sistema Operativo que ejecute JVM (Linux, Mac OS X, Windows).

## Características y diseño

Logstash soporta un número de entradas, códecs, filtros y salidas. Las entradas son las fuentes de datos. Los códecs esencialmente convierten un formato de entrada en un formato aceptado por Logstash, así como también transforman del formato de Logstash al formato deseado de salida. Estos son utilizados comúnmente si la fuente de datos no es una línea de texto plano. Los filtros son acciones que se utilizan para procesar en los eventos y permiten modificarlos o eliminar eventos luego de ser procesados. Finalmente, las salidas son los destinos donde los datos procesados deben ser derivados.

## Arquitectura

En Logstash y con una infraestructura distribuida, cada servidor web debe ser configurado para ejecutar Lumberjack (es opcional pero altamente recomendado para economizar recursos). Lumberjack hace un reenvío de los logs a un servidor corriendo Logstash con una entrada de Lumberjack. Como Lumberjack requiere SSL, los logs van a ser encriptados del servidor web al servidor de logs central.

## Disponibilidad

Un servidor central de logs tiene la debilidad de ser único ante una falla. Es por eso que debe pensarse en una opción que contemple la disponibilidad del sistema.

Logstash puede ser configurado para utilizar múltiples servidores pero solo enviará los logs a uno de ellos hasta que ese servidor falle. Si sucede esto, todos los logs previamente recolectados no serán accesibles hasta que ese host sea nuevamente habilitado. Básicamente, Logstash soporta un servidor ejecutándose como máster y servidores en espera (shippers).

