Veamos los logs en Linux:
- Qué es el sistema de logs
- Cómo funciona el sistema de logs
- Monitorizar los logs
- Scripts que generan logs
Qué es el sistema de logs
El
sistema de logs
de Linux (log = registro), es un mecanismo estándar que se encarga de recoger los
mensajes generados por los programas, aplicaciones y demonios y enviarlos a un destino predefinido.
En cada mensaje consta la fuente (el programa que generó el mensaje), la prioridad (nivel de
importancia del mensaje), la fecha y la hora.
Hay varios niveles de prioridad de los mensajes (de menos a más prioritario: debug,
info, notice, warning, warn, err, error,
crit, alert, emerg y panic) y varios tipos de mensajes (auth,
authpriv, cron, daemon, kern, lpr, mail,
mark, news, security, syslog, user, uucp y
local0-local7).
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 log más importantes son:
- /var/log/messages: aquí encontraremos 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 los login en el 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:
- Los archivos de log crecen y con el tiempo se pueden volver muy extensos, pero no tenemos que preocuparnos
porque 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).
Monitorizar los logs
- Es muy habitual monitorizar en una consola el archivo /var/log/messages:
$ tail -f /var/log/messages
- En el entorno gráfico hay varias aplicaciones para monitorizar logs, pero la mejor
es KSystemLog (paquete ksystemlog).
Otras opciones son:
- GNOME-System-Log (paquete gnome-utils): monitor de logs de GNOME.
- Xlogmaster (paquete xlogmaster): monitor de logs del GNU.
- Xwatch (paquete xwatch): monitor de logs para las X.
- Muchas veces los logs no se miran, por lo que es buena idea configurar el sistema para enviar
todos los logs a un archivo (además del habitual) y visualizarlo en un terminal, para así
poder ver en tiempo real todo lo que pasa en nuestra máquina. Esto nos permitirá aprender
más sobre nuestro sistema y cómo funciona, y también detectar cualquier anomalía o
error que de otra manera pasarían desapercibidos. Para ello:
- creamos el archivo vacío /var/log/all.log:
- añadimos al archivo /etc/syslog.conf la línea:
- volvemos a cargar la configuración de sysklogd:
# /etc/init.d/sysklogd reload
- por último, abrimos una consola y ejecutamos el comando:
$ tail -f /var/log/all.log
Scripts que generan logs
El comando logger permite enviar eventos al demonio syslogd, por lo que se utiliza en
scripts para registrar mensajes vía sysklogd. Por ejemplo, si hacemos:
# logger -t mi_programa -f /var/log/messages "Mensaje ejemplo"
veremos que se ha añadido a /var/log/messages la línea:
May 14 23:10:13 pc450 mi_programa: Mensaje ejemplo