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:
- Instalar herramientas de compilación.
- Instalar y configurar MySQL.
- Descargar e instalar RSyslog.
- Configurar RSyslog.
- Instalar y configurar Apache + PHP.
- Descargar e instalar phpLogCon.
- 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
*.*
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














































28 junio, 2011 - 23:14
Hola Claudio:
Como te comentaba has de hacerlo a través de un nuevo tema en los foros.
Un saludo.
14 julio, 2011 - 17:41
Buenas días que archivo modifico en los clientes para direccionar los logs, gracias
14 julio, 2011 - 21:08
Hola alexander,
Por favor las consultas a través de los foros en http://blog.e2h.net/foros
Un saludo.
1 agosto, 2011 - 21:23
hermano! excelente tutorial, muy claro en el proceso de instalación, es dificil conseguir algo con este nivel de detalle. Mil Gracias.
2 agosto, 2011 - 09:58
Hola Alexander:
Muchas gracias por el comentario, espero seguir viéndote por aquí.
Un saludo.
5 agosto, 2011 - 16:44
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.
5 agosto, 2011 - 21:03
Hola bloodnose24:
Muchas gracias. Por favor las consultas a través de los foros en http://blog.e2h.net/foros
Un saludo.
5 agosto, 2011 - 21:08
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.
5 agosto, 2011 - 21:09
Hola bloodnose24:
Como te comentaba, por favor las consultas en los foros.
Un saludo.
12 septiembre, 2011 - 05:40
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
12 septiembre, 2011 - 08:57
Hola jhon:
Ya dejé respuesta en la consulta del foro. Gracias por el comentario.
Un saludo.
16 enero, 2012 - 23:44
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.
23 enero, 2012 - 12:52
Hola Víctor,
Por favor las preguntas a través de los foros en http://blog.e2h.net/foros
Un saludo.
12 marzo, 2012 - 19:51
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…
12 marzo, 2012 - 23:00
Hola Roberto,
Por favor, las consultas a través de los foros en http://blog.e2h.net/foros
Un saludo.