Log Remoto con RSyslog + LogAnalizer + Mysql

Debian LogoHola a todos, hacía tiempo que no escribía un manual y bueno hoy necesitaba montar un sistema remoto de log para saber que le ocurre a un router y una vez logrado pues me he animado a escribir el manual de instalación.

Como siempre el sistema que he utilizado es Debian. Utilizaremos para recibir el log remoto la aplicación que viene por defecto en Debian llamada Rsyslog a la cual le añadiremos la funcionalidad para guardar los logs en una base de datos de MySQL

Todo esta configuración la apoyaremos con la instalación de LogAnalizer, aplicativo PHP que nos dará la ventaja de poder consultar nuestros logs y realizar búsquedas sobre las base de datos. También nos dará la posibilidad de generar estadísticas.

Sin más pasemos a ver como configurar el servicio:

ACLARACIONES INICIALES:

Para el código que veréis en el howto utilizo lo siguiente: código que tecleo ( NEGRITA CURSIVA ).

Para el código que muestra la pantalla ( CURSIVA ).

Este manual compilara asterisk, dahdi, dahdi tools y todos los paquetes necesarios para la reación de la centralita. Dahdi incopora un montón de drivers para con­troladoras.

OJO a los Saltos de Linea y a los dobles guiones

Muchos de vosotros ya tendréis instalado el sistema operativo y podéis saltaros estas lineas.

INST­ALACIÓN DEL SISTEMA OPERATIVO:

La instalación del sistema operativo será la estándar, a día de hoy utilizaremos Debian Squeeze.

INSTALACIÓN Y CONFIRUACIÓN DE PAQUETES VARIOS:

De primeras y­ en casi todos los servidores que instalo suelo instalar una serie de paquetes, asi que hagamoslo:

improvisa:~# apt-get install gpm ssh vi­m ntpdate tcpdump iptraf

Una vez instaldos estos paquetes entraremos por ssh a la centralita Asterisk 1.4 llamada Improvisa y reconfiguraremos los locales de Debian Lenny:

improvisa:~# dpkg-reconfigure locales

Seleccionaremos es_ES.UTF-8 UTF-8 y es_ES@euro ISO-8859-15 y como predeterminado es_ES@euro.

Saldremos de la sesión ssh y volveremos a entrar.

Si utilizais a Vim como editor de texto tendremos que editar el archivo de configuraciíon de VIM, si utilizais editor otro pues hacedlo al gusto.

improvisa:~# vi /etc/vim/vimrc

Descomentaremos las lineas:

syntax on
set background=dark

y debajo de esta añadiremos la linea:

set noai

Guardaremos y cerraremos.

INSTALACIÓN Y CONFIGURACIÓN DE APACHE Y MYSQL:

Para instalar Mysql, Apache 2,  PHP5 y algunas librerias necesarias ejecutaremos el siguiente comando:

improvisa:~# apt-get install mysql-server apache2 php5 php5-mysql php5-gd

La instalación nos preguntará por los password del root de MySQL, los pondremos y memorizaremos ya que los necesitaremos en la instalción de rsyslog-mysql

Una vez instalado todo reiniciaremos el servicio Apache2 para que coja la librería gd, que nos creará las imágenes de gráficos estadísticos en LogAnalizer:

improvisa:~# /etc/init.d/apache2 restart
Restarting web server: apache2 … waiting .

INSTALACIÓN Y CONFIGURACIÓN DE RSYSLOG:

Para instalar Rsyslog y el módulo para escribir en mysql:

improvisa:~# apt-get install rsyslog rsyslog-mysql

La configuración nos preguntará si queremos crear la base de datos para que RSyslog guarde los registros. Le diremos que si y le daremos el password del root de MySQL. Creará la base de datos, el usuario que podrá escribir en la base de datos y las tablas, yo dejo todo por defecto.

Comprobaremos que ha creado la base de datos :

improvisa:~# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 84
Server version: 5.1.63-0+squeeze1 (Debian)

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

mysql> use Syslog;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+————————+
| Tables_in_Syslog |
+————————+
| SystemEvents |
| SystemEventsProperties |
+————————+
2 rows in set (0.00 sec)

mysql> exit

Para dejar funcional a RSyslog una vez instalado el módulo para MySQL, debemos dejar escuchando en los puertos 514/UDP y 514/TCP para ello editaremos el archivo de configuración:

improvisa:~# vi /etc/rsyslog.conf 

Y buscaremos estas lineas:

# provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514

# provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514

Las descomentaremos para que habilite la recepción:

# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514

Comprobaremos que la instalación del módulo para MySQL ha sido instalado correctamente mirando si está en su directorio correspondiente su archivo de configuración:

improvisa:~# cat /etc/rsyslog.d/mysql.conf 

### Configuration file for rsyslog-mysql
### Changes are preserved

$ModLoad ommysql
*.* :ommysql:localhost,Syslog,rsyslog,tu_password

Perfecto ya tenemos instalado RSyslog con soporte para  MySQL, sólo nos queda reiniciar el servicio:

improvisa:~# /etc/init.d/rsyslog restart
Stopping enhanced syslogd: rsyslogd.
Starting enhanced syslogd: rsyslogd.

 

INSTALACIÓN DE LOGANALIZER:

Improvisa :: Informática :: Log Remoto con RSyslog + LogAnalizer + MysqlLogAnalizer es un aplicativo PHP que nos permitirá realizar consultas mucho mejores sobre nuestros registros de log en la base de datos. La captura de la izquierda os puede aclarar como veremos los logs.

Empezaremos por descargar de la web oficial el paquete:

improvisa:/# cd /usr/src/

improvisa:/usr/src/# wget http://download.adiscon.com/loganalyzer/loganalyzer-3.5.6.tar.gz

improvisa:/usr/src/# tar -xvzf loganalyzer-3.5.6.tar.gz

improvisa:/usr/src/# cd /usr/src/loganalyzer-3.5.6/

Crearemos el directorio para Apache 2

improvisa:/usr/src/loganalyzer-3.5.6/# mkdir -p /var/www/loganalizer

improvisa:/usr/src/loganalyzer-3.5.6/# mv /usr/src/loganalyzer-3.5.6/src/* /var/www/loganalizer/

Daremos los permisos adecuados al directorio de apache según otra autonota de improvisa: https://www.improvisa.com/26-01-2012/permisos-optimos-para-archivos-de-apache-en-debian/

Establecemos grupo propietario ya que quiero respetar el del usuario.
improvisa:/var/www/chgrp www-data -R /var/www/*

Establecemos permisos a todos los ficheros, lectura y escritura a los propietarios y el grupo propietario:
improvisa:/var/www/chmod 664 -R /var/www/*

Establecemos permisos de ejecución, lectura y escritura sólo a los directorios, para los propietarios y el grupo propietario
improvisa:/var/www/find /var/www/ -type d -exec chmod 775 {} \;

Establecemos el GUID para que herede grupo propietario a todo lo creado dentro de /var/www/
improvisa:/var/www//# find /var/www/ -type d -exec chmod g+s {} \;

Debe ser en este orden ya que si ejecutamos algún chmod después del GUID este se perderá.

Ahora ya podemos entrar en la web de nuestro nuevo servidor de Apache, para ello entraremos en la dirección :

http://direccion_ip_rsyslog/loganalizer

Nos dará un error ya que no encuentra el archivo de configuración y nos mostrará un link para seguir el asistente de instalación:

Si vamos siguiendo el asistente hará los siguientes pasos:

– Comprobará que podemos escribir el archivo config.php

– Nos preguntará por el número de mensajes que querremos ver por página, yo dejo 50 mensajes que puede recargar el servidor. También nos preguntará si queremos utilizar un popup para ver los detalles del mensaje de log. En este apartado yo NO habilito la «User Databese Options» ya que no quiero habilitar la autenticación de usuarios para poder ver los logs. Esto es muy diferente a configurar la fuente de logs que vendrá en los siguiente partados de configuración.

– Creación de la primera fuente de datos, aquí es donde le diremos que mire en MySQL para recoger los datos. Acordaros que el Source Type es MySQL Native y le tendremos que dar los datos de nuestro MySQL, si se ha dejado todo por defecto los datos que genera mi instalción son los siguientes:

$CFG[‘DefaultSourceID’] = ‘Source1’;

$CFG[‘Sources’][‘Source1’][‘ID’] = ‘Source1’;
$CFG[‘Sources’][‘Source1’][‘Name’] = ‘El Nombre de tu Servidor’;
$CFG[‘Sources’][‘Source1’][‘ViewID’] = ‘SYSLOG’;
$CFG[‘Sources’][‘Source1’][‘SourceType’] = SOURCE_DB;
$CFG[‘Sources’][‘Source1’][‘DBTableType’] = ‘monitorware’;
$CFG[‘Sources’][‘Source1’][‘DBType’] = DB_MYSQL;
$CFG[‘Sources’][‘Source1’][‘DBServer’] = ‘localhost’;
$CFG[‘Sources’][‘Source1’][‘DBName’] = ‘Syslog’;
$CFG[‘Sources’][‘Source1’][‘DBUser’] = ‘rsyslog’;
$CFG[‘Sources’][‘Source1’][‘DBPassword’] = ‘El passwor de tu usario rsyslog’;
$CFG[‘Sources’][‘Source1’][‘DBTableName’] = ‘SystemEvents’;
$CFG[‘Sources’][‘Source1’][‘DBEnableRowCounting’] = true;

ULTIMAS NOTAS:

Lo único que nos quedaría sería abrir los puertos 514/TCP y 514/TCP en nuestro Firewall o Router. Por otra parte debemos configurar nuestros clientes para que escriban los datos en el servidor RSyslog. La mayoría de Routers tiene soporte de log remoto.

Con esto sería todo, espero que os valga y agradeceros los comentarios que seguro harán que esto mejore 😉

Print Friendly, PDF & Email
Comentarios
  • Julio.Marca dice:

    Agradezco el tiempo invertido, para los que somos neofitos en Linux, lo segui al pie de letra, compare con otros papers publicados en al inet, Lo unico que me quede pegado fue al final el campo abajo me lo escribio con minusculas, como soy porfiado lo hice 4 veces, luego yo creo que mas por suerte cambie el parametro SystemEvents que venia con minusculas y Guala.

    $CFG[‘Sources’][‘Source1’][‘DBTableName’] = ‘SystemEvents’;

  • Julio.Marca dice:

    Juanmi, Puedes publicar algo para realziar las busqueda en este syslog server. aun no puedo descifrar la busqueda. te agradezco de antemano.

    Atte.
    JMP

Deja un comentario