ÓRDENES PARA MANIPULAR LOGS EN GNU/LINUX.
¿Cómo funciona el sistema de logs? El sistema de logs arranca con el script /etc/init.d/sysklogd, y tiene
dos demonios:
syslogd: gestiona los logs del sistema. Distribuye los mensajes a archivos, tuberías, destinos
remotos, terminales o usuarios, usando las indicaciones especificadas en su archivo de configuración
/etc/syslog.conf, donde se indica qué se loguea y a dónde se envían estos logs.
klogd: se encarga de los logs del kernel. Lo normal es que klogd envíe sus mensajes a syslogd pero
no siempre es así, sobre todo en los eventos de alta prioridad, que salen directamente por pantalla.
Los logs se guardan en archivos ubicados en el directorio /var/log, aunque muchos programas manejan
sus propios logs y los guardan en /var/log/<programa>. Además, es posible especificar múltiples destinos
para un mismo mensaje. Algunos de los logs más importantes son:
/var/log/messages: aquí encontramos los logs que llegan con prioridad info (información), notice
(notificación) o warn (aviso).
/var/log/kern.log: aquí se almacenan los logs del kernel, generados por klogd.
/var/log/auth.log: en este log se registran las entradas al sistema, las veces que hacemos su, etc. Los
intentos fallidos se registran en líneas con información del tipo “invalid password” o “authentication
failure”.
/var/log/dmesg: en este archivo se almacena la información que genera el kernel durante el arranque
del sistema. Podemos ver su contenido con el comando dmesg:
$ dmesg
Los archivos de log crecen y con el tiempo se pueden volver muy extensos, pero podemos rotar los
archivos programando una tarea, por ejemplo, en /etc/cron.daily (tareas que se ejecutan cada día) está el
script /etc/cron.daily/logrotate, (cuyo archivo de configuración es /etc/logrotate.conf), que se encarga de
comprimirlos y aplicar una rotación de archivos, añadiéndoles la extensión .1.gz, .2.gz, etc., volviendo a
crear uno vacío (cuanto mayor sea el número más antiguo será el log). Normalmente el sistema está
configurado automáticamente para trabajar de esta manera, permitiéndonos así reducir el tamaño de los
ficheros.
También podemos personalizar los logs. Por ejemplo, el servicio FTP guarda los logs en el archivo
/var/log/messages. Podríamos modificar el archivo /etc/syslog-ng.conf, de forma que los mensajes sean
guardados en un archivo distinto.
¿Podemos monitorizar la inserción de mensajes? Sí, tenemos un comando, tail, que nos permite,
utilizando el parámetro –f, ver, de forma actualizada, las últimas entradas de cualquier archivo; en
particular cualquier archivo del directorio log que queramos controlar.
Por ejemplo: tail –f /var/log/messages. En la siguiente imagen vemos su resultado: vemos la fecha actual,
con su hora actual, el nombre de la máquina, el servicio que deja el mensaje y el mensaje que deja. En
este ejemplo se ha realizado una conexión remota a un servidor GNU/Linux.
Para realizar modificaciones del syslog, debemos tocar el archivo /etc/syslog.conf (comprobar según
distribución GNU/Linux).
Si queremos utilizar los logs del sistema para que se guarden mensajes generados por nuestros scripts o
programas, podemos utilizar el comando logger. A continuación, se indica un ejemplo:
#logger -t mi_programa -f /var/log/messages "Mensaje ejemplo"