Archivo

Entradas Etiquetadas ‘syslog’

Rsyslog5enRH5

Lunes, 14 de Marzo de 2011

Instalar Rsyslog 5.6.x en Red Hat 5

Red Hat 5 a partir de la versión 5.2 incluye el software rsyslog. Rsyslog es un sustituto del syslog tradicional de los sistemas Unix que incorpora funcionalidad nueva (envio de logs mediante TCP, a una BBDD,…). Sin embargo, la versión que se incluye con la distribución (3.22.x) es bastante antigua y tiene limitaciones.

En mi caso concreto me encontré con un error en el módulo imfile (módulo de rsyslogpara la lectura de fichros de logs). Este error ocasionaba que bajo determinadas circunstancias, en ficheros grandes, rsyslog perdiera el punto donde se encontraba leyendo el fichero y volviera a empezar desde el principio, con la consiguiente duplicación de mensajes.

Por este motivo decidí proceder a la instalación de una versión más reciente de rsyslog (la rama estable a fecha de este documento 5.6.x). Dado que esto lo debía hacer en varios servidores, en lugar de compilar en software en cada uno de ellos, me decidí por la opción de generar un RPM binario para luego instalar el software en los diferentes servidores.

Generar un RPM binario con la nueva versión de RSYSLOG para RH5

En primer lugar nos descargamos el SourceRPM del paquete rsyslog del RawHide de Fedora (a fecha de este documento este source era para la versión 5.6.2 de rsyslog). También nos descargamos el código fuente de Rsyslog.

En principio a partir de un Source RPM es fácil generar los RPMS binarios, pero en este caso a partir de Fedora 11 se ha cambiado el algoritmo resumen a la hora de generar los RPMs por lo que no podemos usar directamente ese Source RPM, tenemos que volver a generarlo.

Para volver a generar el Source RPM en primer lugar extraemos los ficheros del mismo:

# rpm2cpio rsyslog-5.6.2-2.fc15.src.rpm | cpio -idmv
cpio: rsyslog-5.6.2.tar.gz not created: newer or same age version exists
rsyslog-5.6.2.tar.gz
rsyslog.conf
rsyslog.init
rsyslog.log
rsyslog.spec
rsyslog.sysconfig
4451 blocks

Además de regenerar el source RPM vamos a actualizar la versión del paquete RPM. Para eso copiamos los ficheros rsyslog.conf, rsyslog.init, rsyslog.log y rsyslog.sysconfig extraidos anteriormente a la carpeta ~/SOURCES del rpmbuild (ver creación de un RPM binario). También copiamos a esta carpeta el fichero con el código fuente de RSYSLOG que nos hemos descargado (rsyslog-5.6.4.tar.gz).

Modificamos el fichero ~/SOURCES/rsyslog.log y lo dejamos como sigue (si no hacemos esto, al instalar el RPM se producirá un conflicto en el fichero /etc/logrotate.d/syslog con el paquete sysklogd de la distribución de Red Hat y eso nos complicará – aunque no de forma insalvable – la instalación de la nueva versión de rsyslog):

/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron {
 sharedscripts
 postrotate
 /bin/kill -HUP catvarrunsyslogd.πd2>devνll 2> /dev/null || true
 /bin/kill -HUP catvarrunrsyslogd.πd2>devνll 2> /dev/null || true
 endscript
}

A continuación editamos el fichero rsyslog.spec y cambiamos las líneas 8 y 9:

Version: 5.6.2
Release: 2%{?dist}

por

Version: 5.6.4
Release: 1%{?dist}

Para generar el RPM binario necesitamos instalar una serie de dependencias. Para ello instalamos los siguientes paquetes:

# yum install mysql-devel postgresql-devel krb5-devel librelp-devel gnutls-devel net-snmp-devel

El paquete librelp-devel lo encontraremos en el repositorio EPEL.

Ahora procedemos a reconstruir el source RPM con:

# rpmbuild -bs rsyslog.spec

Una vez regenerado el source RPM procedemos a compilarlo para generar los binarios (vamos a necesitar el gcc). Lo hacemos con:

# rpmbuild --rebuild ~/SRPMS/rsyslog-5.6.4-1.src.rpm

Si todo va bien se nos habrán creado los RPMs binarios en ~/RPMS. Estos binarios son dependientes de la arquitectura por lo que habrá que generarlos en un servidor de 32 bits para las maquinas de 32 bits y en un servidor de 64 bits para las maquinas de 64 bits.

Estos RPMs ya están listos para ser instalados. Para facilitar este proceso se han movido al repositorio EHURepo.

Linux , , , ,

logger: comando para enviar mensajes al syslog

Martes, 26 de Enero de 2010

En determinadas ocasiones puede sernos útil escribir algún mensaje en el syslog del servidor, ya que esta herramienta es más habitual que sea monitorizada a diferencia de escribir el mensaje en un fichero de log normal. Para hacer esto desde un script disponemos del comando logger.

# logger -i -p $level $mensaje

La opción -i hace que se guarde el PID del proceso que ha enviado el mensaje.

Con la opción -p indicamos el nivel del mensaje. Hay varios valores (consultar el man del comando), pero unos valores habituales son “warning” y “err”.

Linux ,