{{tag> rsyslog}} ====== 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