rsyslog: el demonio de logs del sistema

Introducción

rsyslog es el demonio estándar de syslog en la mayoría de distribuciones Linux (Debian, Ubuntu, RHEL, CentOS...). Se encarga de recoger mensajes de logs del kernel y los servicios, clasificarlos por facility y prioridad, y escribirlos en los archivos correspondientes de /var/log/. Aunque journald es el sistema de logs de systemd, rsyslog y journald coexisten: journald captura todo y rsyslog puede leer del journal para escribir en ficheros de texto tradicionales.

Facilities — origen del mensaje

Cada mensaje de syslog tiene una facility que indica qué subsistema lo generó:


kern        # mensajes del kernel
user        # procesos de usuario genéricos
mail        # subsistema de correo
daemon      # demonios del sistema (sin facility propia)
auth        # autenticación y seguridad (login, sudo, SSH)
syslog      # mensajes internos del propio syslog
lpr         # subsistema de impresión
news        # subsistema de noticias (NNTP)
uucp        # subsistema UUCP
cron        # cron y at
local0..local7  # uso libre para aplicaciones propias
          

Prioridades (niveles de severidad)

De mayor a menor gravedad:


emerg   (0)  # el sistema es inutilizable
alert   (1)  # acción inmediata necesaria
crit    (2)  # condición crítica
err     (3)  # error
warning (4)  # advertencia
notice  (5)  # evento normal pero significativo
info    (6)  # mensaje informativo
debug   (7)  # información de depuración
          

Al especificar una prioridad en una regla, se aplica a esa prioridad y todas las superiores (más graves). Por ejemplo, warning captura warning, err, crit, alert y emerg.

Configuración: /etc/rsyslog.conf

La sintaxis básica de una regla es facility.priority   acción:


# Formato: facility.priority   /ruta/fichero

# Todos los mensajes de auth y authpriv al fichero de autenticación
auth,authpriv.*          /var/log/auth.log

# Mensajes de kernel al log del kernel
kern.*                   /var/log/kern.log

# Todos los mensajes de cron
cron.*                   /var/log/cron.log

# Todos los mensajes excepto los de auth (el - evita sync en cada escritura)
*.*;auth,authpriv.none   -/var/log/syslog

# Solo errores de correo
mail.err                 /var/log/mail.err

# Mensajes críticos a todos los terminales activos
*.emerg                  :omusrmsg:*

# Ignorar (descartar) mensajes de una facility
local1.*                 ~
          

Comodines en la selección:


*.*          # todas las facilities, todas las prioridades
kern.*       # todas las prioridades del kernel
*.err        # prioridad err y superior, todas las facilities
mail.none    # ningún mensaje de mail (usado para exclusiones)
          

Configuraciones adicionales en /etc/rsyslog.d/

Los paquetes pueden añadir sus propias reglas en /etc/rsyslog.d/*.conf, que se incluyen automáticamente gracias a esta línea en rsyslog.conf:


$IncludeConfig /etc/rsyslog.d/*.conf
          

Para añadir una regla personalizada (por ejemplo, redirigir los mensajes de tu aplicación a un fichero propio), crea un fichero en ese directorio:


# /etc/rsyslog.d/mi-app.conf
local0.*    /var/log/mi-app.log
          

Gestión del servicio rsyslog


# Ver el estado
systemctl status rsyslog

# Reiniciar tras cambios en la configuración
systemctl restart rsyslog

# Verificar la sintaxis de la configuración
rsyslogd -N1

# Ver qué versión está instalada
rsyslogd -v
          

Para el examen LPIC-1 (objetivo 108.2): conocer facilities, prioridades, la sintaxis facility.priority acción y los ficheros de log principales en /var/log/.

El comando logger: escribir en el syslog

Índice de la sección

Índice del curso