Centralización de registros y administración mediante Sofia2-dataflow

Objetivo

El objetivo de este post es familiarizar al lector con el envío de  registros de varios servidores a uno sólo, de manera que estarán centralizados y con información adicional de  su procedencia.

Para lograrlo, vamos a proceder a realizar una guía para la instalación y configuración básica del daemon syslog-ng de código abierto. Posteriormente vamos a tratar la información recogida por el servidor receptor de registros para almacenarla en MongoDB a través de Sofia2Dataflow.

Requisitos previos

Vamos a partir del hecho de que se dispone de dos o más servidores (uno o más transmisores de registros y un receptor) con el sistema operativo Ubuntu en cualquiera de sus versiones.

Instalación 

Para instalar syslog-ng en nuestros servidores basta con ejecutar el siguiente comando:

sudo apt-get install syslog-ng syslog-ng-core

Configuración syslog-ng en servidores de envío de registros

Una vez instalado, debemos editar el fichero de configuración para que el programa se adapte a nuestro objetivo concreto: enviar los registros que producen varios servidores a uno solo. Este fichero lo podemos encontrar por defecto en la ruta /etc/syslog-ng/syslog-ng.conf y contiene multitud de información acerca de la lógica de configuración del daemon. A continuación vamos a proceder a modificar y configurar este fichero para los distintos servidores.

Debemos de configurar cada uno de los servidores transmisores de la misma manera para que la configuración del servidor receptor de registros sea  más sencilla y clara.

Con esto en mente, modificamos el archivo syslog-ng.conf siguiendo los siguientes pasos:

  • Crear un origen para la recogida de información

En este caso, se van a recoger los registros del sistema y los que están almacenados en un fichero de texto, por lo que incorporamos el siguiente código:

source s_src {
system();
internal();
file ("/datos/Sofia2/registroActividad.log"  follow-freq(1)  flags(no-parse));
};
  • Crear un destino

Para enviar la información a un servidor central,  debemos de conocer su IP, el puerto y configurar el protocolo de transporte. En este caso, vamos a enviar los registros por el puerto 5140 con TCP/UDP. Para ello creamos el siguiente código:

destination d_network {
network("" port(5140) transport("udp"));
network(("" port(5140) transport("tcp"));
};
  • Unir el origen y el destino para su ejecución

Mediante las siguientes líneas de código, syslog-ng se encargará de realizar el tráfico de datos configurado anteriormente:

log {
source(s_src);
destination(d_network);
};

Configuración servidor receptor

Debemos configurarlo consecuentemente con lo establecido en los servidores transmisores, por ello, el origen será el tráfico recibido en el puerto 5140 tanto TCP como UDP y el destino será, por ejemplo, un fichero:

source s_net {
network (ip("10.32.0.10") port(5140) transport("udp"));
network (ip("10.32.0.10") port(5140) transport("tcp"));
};
source s_local {
system();
internal(); };

destination d_local {
file ("/var/log/messages_${HOST}");
};

log {
source (s_net);
source (s_local);
destination (d_local);
};

Aplicar los cambios en el daemon syslog-ng

Para que el daemon cargue los cambios que hemos introducido, debemos ejecutar el siguiente comando:

sudo service syslog-ng restart

En el caso en el que haya errores de compilación, se avisarán por pantalla ya que el despliegue del daemon fallará.

Verificación de configuración

Ahora vamos a explicar cómo verificar si se ha configurado correctamente cada servidor. Por simplicidad, se va a realizar la prueba con un servidor transmisor y otro receptor.

En el servidor receptor vamos a desactivar el daemon syslog-ng y vamos a ejecutarlo de tal manera que podamos ver los registros recibidos:

sudo service syslog-ng stop
sudo syslog-ng –Fevd

En el servidor servidor nos aseguramos de que syslog-ng esté activo y si no lo está, lo activamos:

sudo service syslog-ng status
sudo service syslog-ng start

Ahora vamos a proceder al envío de información desde el servidor transmisor hasta el receptor mediante el comando:

loggen -r 1 -i -s 127  5140

Tras ejecutarlo, la consola nos informará acerca del envío de esta información y, al mismo tiempo, en el receptor debemos de estar viendo cada uno de los registros de prueba que está enviando el transmisor.

Integración con Sofia2-dataflow

Sofia2-dataflow se encarga de la recepción de los registros, su administración y su guardado. Si, por ejemplo, deseamos que todos los registros queden almacenados en MongoDB, simplemente creamos un Stream de cualquiera de las dos formas mostradas a continuación:

syslogmongo

Como resultado, en MongoDB tendremos la siguiente información:

consultamongodb

 

Centralización de registros y administración mediante Sofia2-dataflow

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s