Logging
Introducción
Muchos de los eventos que ocurren durante el funcionamiento de un sistema valen la pena de ser registrados. Para ellos se desarrollaron programas llamados loggers, los cuales gestionan los logs (registros de actividad).
El concepto detrás de un logger es proveer una manera unificada de manejar los archivos de registros de actividad. Este guarda mensajes que suelen tener información sobre la actividad del sistema, junto con cada mensaje se incluye la fecha y la hora del envío.
Syslog, Syslogd, Rsyslog y Klogd
Antes de empezar, vale la pena tomarse el tiempo de aclarar ciertos términos para facilitar la comprensión del resto del texto.
Syslog
El termino Syslog puede resultar un tanto ambiguo, ya que se lo suele usar para referenciar diferentes cosas. Antes que nada, syslog es un estándar, que define una arquitectura para manejar los mensajes que registran actividad dentro de un sistema. También se usa syslog para referirse al demonio syslogd, que definimos a continuación.
Syslogd
Hasta hace poco tiempo fue el programa de syslog mas común dentro de la mayoría de las distribuciones, se instala con un paquete llamado sysklogd.
Rsyslog
Últimamente es mas común ver a rsyslogd instalado como servidor de logging en las distribuciones mas populares. Si bien acepta una configuración tradicional (estilo sysklogd) , muchas de las mejoras que implementa necesitan un archivo de configuración con los métodos nuevos.
Klogd
Tanto syslogd como rsyslog generalmente funcionan en paralelo con el demonio klogd, cuya tarea es guardar un registro de la actividad del kernel.
En lo que respecta a los objetivos de la certificación LPI, solo hay que conocer en detalle el funcionamiento de syslogd. Solo es necesario tener una noción básica acerca de rsyslogd.
Configuración
Syslogd se configura a través de el archivo/etc/syslog.conf . El concepto de este archivo de configuración es muy simple y poderoso al mismo tiempo. El formato básico de las líneas que lo componen es el siguiente.
Línea de ejemplo syslog.conf
facilidad.prioridad acción
Facilidad: es una palabra que codifica el tipo de programa o herramienta que genera el mensaje a ser registrado.
Prioridad: este campo codifica la importancia del mensaje.
Acción: Representa el destino de los mensajes. Puedeser un archivo, una computadora remota u otra locación que acepte el mensaje. La facilidad y la prioridad muchas veces son referidas en conjunto como el selector.
Facilidades
auth: Autenticación.
auth-priv: Autenticación que no son creados por el sistema.
cron: Servicio Cron.
daemon: Servicios de ejecución. Este código es utilizado por los demonios que no tienen asignado un código especifico, como mail o cron.
kern: kernel
lpr: Servicio impresión.
mail: Servicio de Mail
news: Servicio News.
security (auth): Similar a auth.
syslog: syslog.
user: Usuarios.
uucp: Servicios uucp.
local0 a local7: Se pueden usar estas facilidades para programas que creen los usuarios. Es posible que las distribuciones ya estén usando alguna de estas facilidades para programas específicos, así que, es conveniente consultar la documentación de cada distribución antes utilizarlas.
Prioridades
debug: depuración
info: informativo
notice: notificaciones
warning: advertencias
err: errores
crit: críticos
alert: alertas
emerg: emergencia
Las prioridades tienen un orden ascendente de importancia. emerg indica el nivel mas alto de importancia e indica serios problemas. El nivel de debug es el que registra la mayor cantidad de información, se usa para depurar programas que no se comportan de la manera esperada.
Sintaxis
Igual o mayor prioridad
Cuando un programa envía un mensaje al logger, incluye un código de prioridad, el logger registra el mensaje a un archivo si esta configurado para registrar esa prioridad o mayor. Por cual, si se especifica un código de prioridad de alerta, el sistema registrara mensajes de alerta, pero no mensajes crit o de menor prioridad.
Igual prioridad
Si se quiere indicar una prioridad que solo se registre si coincide con esa prioridad, se utiliza el singo (=).
Menor o igual prioridad
El signo de exclamación (!) indica un valor de menor o igual propiedad.
Todas las facilidades
Un asterisco (*) se refiere a todas las facilidades.
Múltiples facilidades
Se pueden especificar varias facilidades en un solo selector separándolas por comas.
Múltiples selectores
Se pueden especificar múltiples selectores para una acción particular separando los selectores con ";"
Registro manual de datos
En la mayoría de los casos, el sistema o algún servidor generan las entradas de registros en el logger, aunque en ocasiones, un puedo llegar a querer generar una entrada manual o un script que se ocupe de ello. La herramienta para este trabajo es llamada logger.
Sintaxis
logger [isd] [-f archivo] [-p pri] [-t tag] [-u socket]
Opciones
Opción | Descripción |
---|---|
-i | Registra el PID de logger. |
-s | Manda el output a stderr. |
-d | Permite usar datagramas en lugar de un stream (flujo). |
-f | Guarda los contenidos de un archivo. |
-p | Identifica una prioridad. |
-t | Identifica el log con una etiqueta. |
-i | Especifica un socket. |
Rotación de logs
Para esto se usa un programa llamado logrotate, el cual es llamado regularmente por cron. Logrotate lee archivos desde /etc/logrotate.conf.
El programa logrotate está diseñado para facilitar la administración de sistemas que generan un gran número de archivos de registro. Permite la rotación automática, la compresión, la eliminación y el envío de registros de por correo.
Cada log puede ser gestionado diariamente, semanalmente, mensualmente o cuando se hace demasiado grande.
Normalmente, la rotación se realiza de manera diaria por medio de un trabajo de Cron.
Ejemplo de un logrotate.conf:
…
# El intervalo de rotación por defecto es una vez por semana
weekly
# Guardad 4 semanas de logs
rotate 4
# Crear un nuevo archivo de logs vacío, luego de cada rotación
create
…
Se pueden configurar especificaciones individuales para archivos, las cuales sobrescriben los valores por defecto.
…
/var/log/wtmp {
missingok
monthly
create 0664 root utmp
rotate 1
}
…
Revisando archivos de Log
El solo hecho de registrar la actividad del sistema no representa ningún beneficio, de hecho significan un coste al sistema. Para sacarle provecho a estos archivos que registran actividad, hay que saber como revisarlos. Para ello, la mejor herramienta es la experiencia, pero aquí se detallan algunos consejos para poder revisarlos.
Consejos:
- Recorrer los logs con algún programa que los muestre pagina a pagina, como less.
- Buscar palabras clave con grep.
- Mostrar las primeras o las ultimas líneas con head o tail.
- Monitoreo en tiempo real con tail –f.
- Herramientas avanzadas de monitoreo de logs, como Logcheck.