Tabla de Contenidos

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;

#mysql -u usuario -p
#mysql> use Syslog;
#mysql> DELETE FROM SystemEvents WHERE ReceivedAt < date_add(current_date, interval -30 day)
#mysql> optimize table SystemEvents; 
#mysql> exit