Howto Install Syslog Server with RSyslog + phpLogCon + MySQL

PiPo e2H – Soluciones TIC Avanzadas Jose Luis Gomez Ferrer de Couto – vExpert'11, CCNA, VCP 4&5, CCA, EMCVSE, ACE

3ene/1065

Instalando un servidor de logs. RSyslog + phpLogCon + MySQL

Cuando el número de dispositivos en una red aumenta, así como los servicios, resulta difícil mantener los mensajes de registros que generan cada uno de ellos. Un modo de centralizar estos mensajes es montando un servidor de logs, donde cada dispositivo o servicio enviará sus mensajes a este.

Existen varios productos de pago que cumplen estas necesidades, pero en nuestro caso vamos a usar software de código abierto, en concreto una combinación de RSyslog y phpLogCon. Con RSyslog recibimos los mensajes clientes y los almacenamos en un servidor de bases de datos MySQL, para posteriormente ser consultados mediante una gestión web con phpLogCon.

La instalación la vamos a realizar en una máquina virtual Debian Lenny 5 ejecutada en VMware Player 3. Con una instalación base disponible iremos instalando los componentes necesarios hasta tener nuestra solución. Los pasos que seguiremos durante el artículo son los siguientes:

  1. Instalar herramientas de compilación.
  2. Instalar y configurar MySQL.
  3. Descargar e instalar RSyslog.
  4. Configurar RSyslog.
  5. Instalar y configurar Apache + PHP.
  6. Descargar e instalar phpLogCon.
  7. Configurar phpLogCon.

Instalar herramientas de compilación

El primer paso es instalar las herramientas de compilación necesarias, para ella ejecutamos el siguiente comando:

apt-get install build-essential

Cuando aparezcan las dependencias necesarias, pulsamos la tecla intro para comenzar la instalación.

Instalar y configurar MySQL

Una vez instaladas las herramientas de compilación, vamos a instalar un servidor MySQL, para ello ejecutamos el siguiente comando:

apt-get install mysql-server libmysqlclient15-dev

Cuando aparezcan las dependencias necesarias, pulsamos la tecla intro para comenzar la instalación.

A continuación aparece el asistente de configuración, el primer parámetro a introducir es la contraseña del usuario root de MySQL, tecleamos la contraseña y pulsamos la tecla intro.

Repetimos la contraseña y pulsamos de nuevo la tecla intro.

El siguiente paso es crear una base de datos donde RSyslog guardará la información recibida, para ello ejecutamos el comando:

mysqladmin -u root -p create rsyslog

Introducimos la contraseña del usuario root y pulsamos la tecla intro.

Ahora vamos a crear un usuario MySQL que será usado por RSyslog para almacenar la información en la base de datos anteriormente creada, para ello ejecutamos el siguiente comando:

mysql -u root -p

Una vez conectados a nuestro servidor MySQL, ejecutamos los siguientes comandos para crear el usuario y asignarlos a la base de datos anteriormente creada.

GRANT SELECT, INSERT, UPDATE, DELETE ON rsyslog.* TO '<usuario_rsyslog>'@'localhost' IDENTIFIED BY '<contraseña_usuario_rsyslog>';

Descargar e instalar RSyslog

Una vez creada la base de datos para nuestro RSyslog y asignados los permisos al usuario también creado, vamos a bajar las últimas fuentes estables de la aplicación, para ello nos dirigimos a su sitio oficial y copiaremos el enlace para posteriormente descargarlo en nuestra máquina virtual mediante el comando wget.

Una vez hemos copiado la dirección de enlace, nos ubicamos en el directorio /usr/local/src y ejecutamos los siguientes comandos:

cd /usr/local/src

wget <dirección_de_enlace>

Una vez descargado el paquete nos situamos en el directorio /tmp y ejecutamos el siguiente comando:

cd /tmp

tar xzvf /usr/local/src/rsyslog-5.2.0.tar.gz

Una vez descomprimido el paquete, nos situamos en el directorio creado y configuramos el instalador con los siguientes comandos:

cd rsyslog-5.2.0

./configure --enable-mysql

Una vez configurado el instalador ejecutamos los siguientes comandos:

make

make install

Configurar RSyslog

El siguiente paso es crear las tablas necesarias en la base de datos que creamos anteriormente, para ello tenemos que editar primero el script SQL que se encuentra en el directorio /tmp/rsyslog-5.2.0/plugins/ommysql. Realizaremos una copia del script createDB.sql, donde editaremos a que base de datos ejecutar el script. Para ello ejecutamos los siguientes comandos:

cd /tmp/rsyslog-5.2.0/pluging/ommysql

cp createDB.sql createDB.sql.orig

vi createDB.sql

Comentar la línea la primera línea introduciendo #.

En la segunda línea cambiar la base de datos Syslog por rsyslog.

mysql -u root -p < createDB.sql

Una vez creada la base de datos totalmente, vamos a parametrizar el fichero de configuración de RSyslog, que se encuentra en /etc/rsyslog.conf. Para ello realizaremos una copia de seguridad del fichero rsyslog.conf, para posteriormente configurar el módulo MySQL y añadir el parámetro para almacenar los registros en la base de datos. Para ello ejecutamos los siguientes comandos:

cd /etc

cp rsyslog.conf rsyslog.conf.orig

vi rsyslog.conf

En el apartado ## MODULES ## agregamos las líneas

# provee conexion a MySQL

$ModLoad ommysql

Al final del fichero agregamos las líneas

# almacena TODOS los logs en MySQL

*.* :o mmysql:<IP_servidor>,<base_de_datos>,<usuario_mysql>,<contraseña_usuario_mysql>

Por último cambiamos el orden de arranque de los servicios, ya que si arranca antes RSyslog que MySQL dará errores de conexión a la base de datos, para ello hacemos que arranque antes los servicios MySQL cambiando los valores en el directorio /etc/rc2.d con los siguientes comandos:

cd /etc/rc2.d

ls -l

Observamos el orden de arranque de los servicios, serán los que modifiquemos.

Cambiaremos RSyslog para que arranque en el número 20, para ello ejecutamos el siguiente comando:

mv S10rsyslog S20rsyslog

Para un correcto funcionamiento de la nueva instalación de RSyslog, usaremos el script ya existente en Debian Lenny, ya que esta distribución ya lo trae en el sistema base instalado. Para ello haremos una copia de seguridad del script y lo configuraremos con los parámetros necesarios. Los comandos que vamos a ejecutar para realizar esta operación son los siguientes:

cd /etc/init.d

cp rsyslog rsyslog.orig

vi rsyslog

En el apartado PATH añadimos los directorios /usr/local/sbin y /usr/local/bin

En el apartado RSYSLOGD_BIN cambiamos el ejecutable /usr/sbin/rsyslogd por /usr/local/sbin/rsyslogd

Por último modificamos el fichero de configuración rsyslog creado por Debian durante la instalación, para activar el modo de compatibilidad con la nueva versión instalada y el modo de almacenar los ficheros de logs. Para ello ejecutamos los siguientes comandos:

cp /etc/default/rsyslog /etc/default/rsyslog.orig

vi /etc/default/rsyslog

Cambiamos el modo de compatibilidad de c3 a c4.

Por último sólo falta reiniciar el servicio, para ello ejecutamos el siguiente comando:

/etc/init.d/rsyslog restart

Instalar y configurar Apache + PHP

Una vez instalado y funcionando nuestro Rsyslog, es necesario instalar un servidor web como Apache con soporte PHP para poder ejecutar el software phpLogCon, para ello ejecutamos los siguientes comandos:

apt-get install apache2 php5 php5-mysql php5-gd

Descargar e instalar phpLogCon

Una vez instalado y funcionando nuestro RSyslog, vamos a instalar phpLogCon, para poder consultar nuestros logs desde una página web. Para ello nos dirigimos al sitio oficial y vamos a copiar el enlace de descarga para después descargarlo con wget.

Una vez copiado el enlace de descarga, nos ubicamos en el directorio /usr/local/src para descargarlo, ejecutando los siguientes comandos:

cd /usr/local/src

wget <dirección_de_enlace>

Una vez haya finalizado la descarga nos ubicamos en el directorio /tmp y allí descomprimimos el paquete ejecutando los siguientes comandos:

cd /tmp

tar xzvf  /usr/local/src/phplogcon-2.6.5.tar.gz

Una vez hemos descomprimido el paquete, vamos a copiar el contenido del directorio /tmp/phplogcon-2.6.5/src al directorio que crearemos en /var/www con el nombre phplogcon. Para ello ejecutamos los siguientes comandos:

mkdir /var/www/phplogcon

cp -R /tmp/phplogcon-2.6.5/src/* /var/www/phplogcon

Configurar phpLogCon

Ahora vamos a crear un sitio en nuestro Apache para poder ejecutar phpLogCon, para ello ejecutamos el siguiente comando:

echo 'Alias /phplogcon "/var/www/phplogcon"' > /etc/apache2/sites-enabled/001-phplogcon

/etc/init.d/apache2 force-reload

Para poder ejecutar el asistente web de configuración, es necesario crear el fichero config.php. En el directorio /tmp/phplogcon-2.6.5/contrib disponemos de un script para su creación, para ello ejecutamos los siguientes comandos:

cd /var/www/phplogcon

chmod +x /tmp/phplogcon-2.6.5/contrib/configure.sh

/tmp/phplogcon-2.6.5/contrib/configure.sh

A continuación vamos a ejecutar el asistente web para finalizar la instalación, para ello mediante nuestro explorador web introducimos la dirección http://<IP_servidor>/phplogcon. Para comenzar la instalación hacemos clic con el ratón en la palabra here.

Para continuar y hacer un test de los requisitos previos hacemos clic con el ratón en el botón Next.

En el siguiente paso hace un test de permisos sobre el fichero config.php, para continuar hacemos clic con el ratón en el botón Next.

En el siguiente apartado nos permite configurar algunos parámetros básicos, como el número de mensajes por página, el límite de caracteres a mostrar en un mensaje, mostrar la descripción en una ventana emergente, etc. Una de las opciones es crear una base de datos para usuario, de este modo limitamos el acceso a nuestro visor web. En nuestro caso no vamos a marcar dicha opción, si alguien desea hacerlo puede usar la misma base de datos rsyslog y el usuario que creamos anteriormente. Dejamos como aparece todo de forma predeterminada y hacemos clic con el ratón en el botón Next.

A continuación vamos a configurar cual es nuestra fuente syslog, en nuestro caso un servidor MySQL, por lo que tenemos que elegir en el apartado Source Type la opción MySQL Native. Le asignaremos a dicha fuente el nombre e2h PiPo e introducimos los datos de la base de datos, como el nombre, usuario y contraseña. Dejamos también la opción Enable Row Counting, ya que en bases de datos con gran tamaño se ve un importante descenso de rendimiento. Es muy importante que el nombre de la tabla esté escrita exactamente como aparece, con mayúsculas y minúsculas, ya que es sensible a los caracteres, la tabla es SystemEvents. Una vez introducidos todos los datos hacemos clic en el botón Next.

Para finalizar hacemos clic con el ratón en el botón Finish y ya tendremos nuestro servidor totalmente instalado y en producción.

Por último y para dejar seguro nuestro phpLogCon, tenemos que dejar los permisos del fichero config.php con los mínimos posibles para el funcionamiento. Para ello ejecutamos el siguiente comando:

chmod 644 /var/www/phplogcon/config.php

También sería importante que el fichero rsyslog.conf sólo pudiera ser leído por el usuario root, ya que aparece la contraseña de conexión a MySQL, para ello ejecutamos el siguiente comando:

chmod 600 /etc/rsyslog.conf

Share

¿Te gustó este artículo?

¡Suscríbete a nuestro feed RSS!

Archivado en: Syslog Deja un comentario
Comentarios (65) Trackbacks (1)
  1. Hola Claudio:

    Como te comentaba has de hacerlo a través de un nuevo tema en los foros.

    Un saludo.

  2. Buenas días que archivo modifico en los clientes para direccionar los logs, gracias

  3. Hola alexander,

    Por favor las consultas a través de los foros en http://blog.e2h.net/foros

    Un saludo.

  4. hermano! excelente tutorial, muy claro en el proceso de instalación, es dificil conseguir algo con este nivel de detalle. Mil Gracias.

  5. Hola Alexander:

    Muchas gracias por el comentario, espero seguir viéndote por aquí.

    Un saludo.

  6. Excelente descripción de los pasos a seguir, solo tengo una duda hermano, hice la instalación en Ubuntu 10.04 y no muestra los logs, un compañero realizo lo mismo paso en Debian y funciono, la pregunta es la siguiente hago la instalación de la aplicación con Debian o me debería funcionar igual Ubuntu 10.04 ? coloque el siguiente comando en consola para los puertos y me arrojo el siguiente resultado netstat -an

    udp 0 0 0.0.0.0:514 0.0.0.0:*

    si me puedes ayudar te lo agradecería.

  7. Hola bloodnose24:

    Muchas gracias. Por favor las consultas a través de los foros en http://blog.e2h.net/foros

    Un saludo.

  8. Buenas josé.

    Tengo una máquina con SO Ubuntu 10.04 hice la instalación sin ninguna máquina virtual, utilice los siguientes paquetes para la instalación:

    rsyslog-5.8.3.tar.gz,
    loganalyzer-3.2.1

    mas lo de mysql y apache, realice los cambios explicados en el tutorial de igual manera, coloco los cambios que realice

    Para el archivo /etc/default/rsyslog ( solo cambie el valor de 3 a 4 en la variables RSYSLOGD_OPTIONS )

    # Options for rsyslogd
    # -m 0 disables ‘MARK’ messages (deprecated, only used in compat mode < 3)
    # -r enables logging from remote machines (deprecated, only used in compat mode ../init.d/sslh*
    lrwxrwxrwx 1 root root 22 2011-08-04 15:11 S20apf-firewall -> ../init.d/apf-firewall*
    lrwxrwxrwx 1 root root 20 2010-10-26 14:55 S20fancontrol -> ../init.d/fancontrol*
    lrwxrwxrwx 1 root root 20 2010-10-26 14:55 S20kerneloops -> ../init.d/kerneloops*
    lrwxrwxrwx 1 root root 27 2010-10-26 14:55 S20speech-dispatcher -> ../init.d/speech-dispatcher*
    lrwxrwxrwx 1 root root 17 2010-10-27 15:22 S20vboxdrv -> ../init.d/vboxdrv*
    lrwxrwxrwx 1 root root 25 2010-10-27 15:23 S20vboxweb-service -> ../init.d/vboxweb-service*
    lrwxrwxrwx 1 root root 17 2010-10-27 08:24 S20winbind -> ../init.d/winbind*
    lrwxrwxrwx 1 root root 19 2010-10-26 14:55 S25bluetooth -> ../init.d/bluetooth*
    lrwxrwxrwx 1 root root 14 2010-10-26 14:54 S50cups -> ../init.d/cups*
    lrwxrwxrwx 1 root root 20 2010-10-26 14:55 S50pulseaudio -> ../init.d/pulseaudio*
    lrwxrwxrwx 1 root root 15 2010-10-26 14:55 S50rsync -> ../init.d/rsync*
    lrwxrwxrwx 1 root root 15 2010-10-26 14:55 S50saned -> ../init.d/saned*
    lrwxrwxrwx 1 root root 19 2010-10-26 14:55 S70dns-clean -> ../init.d/dns-clean*
    lrwxrwxrwx 1 root root 18 2010-10-26 14:55 S70pppd-dns -> ../init.d/pppd-dns*
    lrwxrwxrwx 1 root root 24 2010-10-26 14:55 S90binfmt-support -> ../init.d/binfmt-support*
    lrwxrwxrwx 1 root root 17 2011-04-01 11:08 S91apache2 -> ../init.d/apache2*
    lrwxrwxrwx 1 root root 20 2010-10-27 11:16 S95remote-tty -> ../init.d/remote-tty
    lrwxrwxrwx 1 root root 22 2010-10-26 14:55 S99acpi-support -> ../init.d/acpi-support*
    lrwxrwxrwx 1 root root 21 2010-10-26 15:11 S99grub-common -> ../init.d/grub-common*
    lrwxrwxrwx 1 root root 18 2010-10-26 14:38 S99ondemand -> ../init.d/ondemand*
    lrwxrwxrwx 1 root root 18 2010-10-26 14:38 S99rc.local -> ../init.d/rc.local*

    He visto que otros usuarios han tenido el mismo problema y han realizado algunos cambios y funciona la aplicación, trate de hacer lo mismo que ellos a ver si me resultaba pero no he tenido exito te coloco nuevamente el resultado de netstat -anp

    udp 0 0 0.0.0.0:514 0.0.0.0:* 4749/rsyslogd
    udp6 0 0 :::514 :::* 4749/rsyslogd

    Agradecería tu ayuda. Gracias.

  9. Hola bloodnose24:

    Como te comentaba, por favor las consultas en los foros.

    Un saludo.

  10. excelente Jose Luis por el tutorial,,,,,,,,estaba tratando de implementar precisamente un server syslog. Lo estoy implementando en debian squeeze virtualizado mediante Vmware Workstation, asi q este tutorial me cae de perlas. quisiera plasmarte una duda con respecto a este tema. En q tema del foro te debo dejar la inquietud??..

    gracias por su time,

    jhon

  11. Hola jhon:

    Ya dejé respuesta en la consulta del foro. Gracias por el comentario.

    Un saludo.

  12. Buenas tardes, Jose luis tengo una pregunta! Hay menera de incrementar el tamaño de caracteres en el dato messaje en los de talles de un evento? El texto es muy largo se corta el mensaje.

  13. Hola Víctor,

    Por favor las preguntas a través de los foros en http://blog.e2h.net/foros

    Un saludo.

  14. Hola Jose Luis

    Por favor me puede ayuda con el siguiente error que me sale en el loganalizer

    Ya instale la ultima version de rsyslog y loganalizer pero me sale el siguiente error :No syslog records found – Error Details:
    Leyendo tu foros ejecute el comando netstat -anp | grep 514 para verificar el puerto de rsyslog
    pero no sale nada. por favor me indica como solucionar la falla…

  15. Hola Roberto,

    Por favor, las consultas a través de los foros en http://blog.e2h.net/foros

    Un saludo.


Leave a comment

(required)


*