Rsyslog

En la instalación del servidor remoto de log’s se han usado las siguientes herramientas.

CentOS 5.2

Rsyslog

Mysql

PHP

Apache

Phplogcon

Instalación

Desde la consola introducimos lo siguiente:

# yum –y install rsyslog rsyslog-mysql mysql-server php httpd php-mysql

Se instalarán automáticamente los paquetes arriba mencionados (menos el phplogcon) y además todas sus dependencias.

Configuración

Añadimos al sistema el usuario syslog que lo usaremos en la base de datos.

# useradd syslog

Empezamos por arrancar y configurar el mysql.

# chkconfig mysqld on

# service mysqld start

Añadimos una clave para el root del mysql.

# mysqladmin –u root password nueva-clave

rsyslog-mysql trae preparada una base de datos llamada syslog para crearla en mysql y meter ahí los datos que obtenemos. Para crearla hacemos lo siguiente:

# cd /usr/share/doc/rsyslog-mysql-2.0.0
# mysql –p < createDB.sql

Una vez creada la base de datos nos logeamos como root en mysql y le damos permiso al usuario syslog para que pueda escribir en la base de datos.

# mysql –u root –p
mysql> grant all on Syslog.* to syslog@localhost identified by ‘syslogpwd’;
mysql> flush privileges;
mysql> exit

Ahora tenemos que modificar los dos ficheros de configuración del rsyslog.

/etc/rsyslog.conf → ejemplo para este fichero:

# Log all kernel messages to the console.
# Módulos para la comunicación con la base de datos en mysql
$ModLoad ommysql.so
$ModLoad imudp.so
$UDPServerRun 514
*.* :ommysql:127.0.0.1,Syslog,syslog,syslogpwd
# Logging much else clutters up the screen.
#kern.* /dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# The authpriv file has restricted access.
authpriv.* /var/log/secure
# Log all the mail messages in one place.
mail.* -/var/log/maillog
# Log cron stuff
cron.* /var/log/cron
# Everybody gets emergency messages
*.emerg *
# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler
# Save boot messages also to boot.log
local7.* /var/log/boot.log

/etc/sysconfig/rsyslog à ejemplo para este fichero:

# Options to syslogd
# -m 0 disables 'MARK' messages.
# -rPortNumber Enables logging from remote machines. The listener will
listen
to the specified port.
# -x disables DNS lookups on messages recieved with -r
# See syslogd(8) for more details
SYSLOGD_OPTIONS="-r -t514 -m 0"
# Options to klogd
# -2 prints all kernel oops messages twice; once for klogd to decode, and
# once for processing with 'ksymoops'
# -x disables all klogd processing of oops messages entirely
# See klogd(8) for more details
KLOGD_OPTIONS="-x"

El CentOS trae por defecto el syslog instalado para generar los log’s, así que antes de arrancar el rsyslog tenemos que parar y deshabilitar el syslog para que no de problemas.

# service syslog stop
# chkconfig syslog off

# service rsyslog start
# chkconfig rsyslog on

También arracamos el apache.

# service httpd start
# chkconfig httpd on

Ya tenemos el rsyslog funcionando y grabando los log’s en el mysql.

Lo siguiente será instalar el phplogcon, un frontal web que nos permitirá tener acceso de una forma cómoda a esos log’s. Vamos a instalar la version 2.4.0 ques es la última estable a fecha de hoy ( enero 2009)

Lo descargamos en el directorio tmp.

# cd /tmp
# wget http://www.phplogcon.org/Downloads-req-getit-lid-36.phtml

Lo descomprimimos:

# tar xvzf phplogcon-2.4.0.tar.gz

Creamos una carpeta dentro de var/www para alojarlo y lo copiamos alli:

# mkdir /var/www/phplogcon
# cp -R /tmp/phplogcon-2.4.0/* /var/www/phplogcon

Nos situamos ahora en la carpeta /var/www/phplogcon/contrib y copiamos el configure.sh a la carpeta /var/www/phplogcon/src y lo ejecutamos para que nos cree el config.php que nos hace falta.

# cd /var/phplogcon/contrib
# copy configure.sh /var/www/phplogcon/src
# ./configure.sh

Reiniciamos el apache.

# service httpd restart

Ahora nos vamos a un navegador e introducimos la siguiente dirección → http://nuestra_ip/phplogcon/src

Esto lanzará un asistente que nos guiará en la configuración del phplogcon.

FAQ

A vece son tantos lo eventos que la base de datos acaba llenando el disco. Para liberar espacio necesitamos borrar algunos logs para llo ejecutamos lo siguiente;