Envío por correo de los eventos más significativos con logcheck

Envío por correo de los eventos más significativos con logcheck

Con logcheck podremos resumir los eventos del sistema registrados en los logs y enviarlos a nuestro correo de forma diaria:

apt-get install logcheck logcheck-database

Editamos ‘/etc/logcheck/logcheck.logfiles’:

# Estos 2 ficheros incluyen todos los mensajes enviados a syslog ()/etc/syslog.conf)
/var/log/syslog
/var/log/auth.log
# Apache
/var/log/apache2/error.log
/var/log/apache2/localhost/error.log
# MySQL
#/var/log/mysql/mysql.log # En debian, si descomentas la linea de log de /etc/mysql/my.cnf, el log va por syslog
#/var/log/mysql/mysql-slow.log

La tarea cron que se encarga de la ejecución diaria es ‘/etc/cron.d/logcheck’.

Por otra parte, la configuración de logcheck se encuentra en ‘/etc/logcheck/logcheck.conf’:

# Controls the address mail goes to:
# *NOTE* the script does not set a default value for this variable!
# Should be set to an offsite "emailaddress@some.domain.tld"

SENDMAILTO="miusuario"

# Send the results as attachment or not.
# 0=not as attachment; 1=as attachment
# Default ist 0
MAILASATTACH=1

Una vez configurado, podemos probar su funcionamiento ejecutando:

sudo -u logcheck logcheck

Logcheck incorpora por defecto toda una serie de reglas para la selección o el descarte de las lineas del log a enviar en el resumen. Es posible que nos interese refinar estas reglas, haciendo que sean descartadas cadenas que no nos aporten nada. Por ejemplo, veamos como ignorar las lineas generadas por el firewall o nagios (ver secciones correspondientes), dado que esa información ya la analizamos con otras herramientas.

Creamos ‘/etc/logcheck/ignore.d.server/000-custom’ y añadimos:

^w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel: [FW:[ ._[:alnum:]-]+]
^w{3} [ :0-9]{11} [._[:alnum:]-]+ nagios2: CURRENT SERVICE STATE:
^w{3} [ :0-9]{11} [._[:alnum:]-]+ nagios2: CURRENT HOST STATE:
^w{3} [ :0-9]{11} [._[:alnum:]-]+ nagios2: Warning: A system time change of [0-9]+ seconds (backwards in time) has been detected. Compensating...

Si queremos incluir más reglas, podemos validarlas contra el log que nos interese:

sed -e 's/[[:space:]]*$//' /var/log/ulog/syslogemu.log | egrep '^w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel: [FW:[ ._[:alnum:]-]+]'
sed -e 's/[[:space:]]*$//' /var/log/syslog | egrep '^w{3} [ :0-9]{11} [._[:alnum:]-]+ nagios2: CURRENT SERVICE STATE:'
sed -e 's/[[:space:]]*$//' /var/log/syslog | egrep '^w{3} [ :0-9]{11} [._[:alnum:]-]+ nagios2: CURRENT HOST STATE:'
sed -e 's/[[:space:]]*$//' /var/log/syslog | egrep '^w{3} [ :0-9]{11} [._[:alnum:]-]+ nagios2: Warning: A system time change of [0-9]+ seconds (backwards in time) has been detected. Compensating...'


Con logcheck podremos resumir los eventos del sistema registrados en los logs y enviarlos a nuestro correo de forma diaria:

apt-get install logcheck logcheck-database

Editamos ‘/etc/logcheck/logcheck.logfiles’:

# Estos 2 ficheros incluyen todos los mensajes enviados a syslog ()/etc/syslog.conf)
/var/log/syslog
/var/log/auth.log
# Apache
/var/log/apache2/error.log
/var/log/apache2/localhost/error.log
# MySQL
#/var/log/mysql/mysql.log # En debian, si descomentas la linea de log de /etc/mysql/my.cnf, el log va por syslog
#/var/log/mysql/mysql-slow.log

La tarea cron que se encarga de la ejecución diaria es ‘/etc/cron.d/logcheck’.

Por otra parte, la configuración de logcheck se encuentra en ‘/etc/logcheck/logcheck.conf’:

# Controls the address mail goes to:
# *NOTE* the script does not set a default value for this variable!
# Should be set to an offsite "emailaddress@some.domain.tld"

SENDMAILTO="miusuario"

# Send the results as attachment or not.
# 0=not as attachment; 1=as attachment
# Default ist 0
MAILASATTACH=1

Una vez configurado, podemos probar su funcionamiento ejecutando:

sudo -u logcheck logcheck

Logcheck incorpora por defecto toda una serie de reglas para la selección o el descarte de las lineas del log a enviar en el resumen. Es posible que nos interese refinar estas reglas, haciendo que sean descartadas cadenas que no nos aporten nada. Por ejemplo, veamos como ignorar las lineas generadas por el firewall o nagios (ver secciones correspondientes), dado que esa información ya la analizamos con otras herramientas.

Creamos ‘/etc/logcheck/ignore.d.server/000-custom’ y añadimos:

^w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel: [FW:[ ._[:alnum:]-]+]
^w{3} [ :0-9]{11} [._[:alnum:]-]+ nagios2: CURRENT SERVICE STATE:
^w{3} [ :0-9]{11} [._[:alnum:]-]+ nagios2: CURRENT HOST STATE:
^w{3} [ :0-9]{11} [._[:alnum:]-]+ nagios2: Warning: A system time change of [0-9]+ seconds (backwards in time) has been detected. Compensating...

Si queremos incluir más reglas, podemos validarlas contra el log que nos interese:

sed -e 's/[[:space:]]*$//' /var/log/ulog/syslogemu.log | egrep '^w{3} [ :0-9]{11} [._[:alnum:]-]+ kernel: [FW:[ ._[:alnum:]-]+]'
sed -e 's/[[:space:]]*$//' /var/log/syslog | egrep '^w{3} [ :0-9]{11} [._[:alnum:]-]+ nagios2: CURRENT SERVICE STATE:'
sed -e 's/[[:space:]]*$//' /var/log/syslog | egrep '^w{3} [ :0-9]{11} [._[:alnum:]-]+ nagios2: CURRENT HOST STATE:'
sed -e 's/[[:space:]]*$//' /var/log/syslog | egrep '^w{3} [ :0-9]{11} [._[:alnum:]-]+ nagios2: Warning: A system time change of [0-9]+ seconds (backwards in time) has been detected. Compensating...'

Comentarios