9.5.1. Principio y mecanismo
El demonio rsyslogd
es responsable de recolectar los mensajes de servicio que provienen de aplicaciones y el núcleo para luego distribuirlos en archivos de registros (usualmente almacenados en el directorio /var/log/
). Obedece a su archivo de configuración: /etc/rsyslog.conf
.
Cada mensaje de registro es asociado con un subsistema de aplicaciones (llamados «facility» en la documentación):
auth
y authpriv
: para autenticación;
cron
: proviene servicios de programación de tareas, cron
y atd
;
daemon
: afecta un demonio sin clasificación especial (DNS, NTP, etc.);
ftp
: el servidor FTP;
kern
: mensaje que proviene del núcleo;
lpr
: proviene del subsistema de impresión;
mail
: proviene del subsistema de correo electrónico;
news
: mensaje del subsistema Usenet (especialmente de un servidor NNTP — protocolo de transferencia de noticias en red, «Network News Transfer Protocol» — que administra grupos de noticias);
syslog
: mensajes del servidor syslogd
en sí;
user
: mensajes de usuario (genéricos);
uucp
: mensajes del servidor UUCP (programa de copia Unix a Unix, «Unix to Unix Copy Program», un protocolo antiguo utilizado notablemente para distribuir correo electrónico);
local0
a local7
: reservados para uso local.
Cada mensaje tiene asociado también un nivel de prioridad. Aquí está la lista en orden decreciente:
emerg
: «¡Ayuda!» Hay una emergencia y el sistema probablemente está inutilizado.
alerta
: apúrese, cualquier demora puede ser peligrosa, debe reaccionar inmediatamente;
crit
: las condiciones son críticas;
err
: error;
warn
: advertencia (error potencial);
notice
: las condiciones son normales pero el mensaje es importante;
info
: mensaje informativo;
debug
: mensaje de depuración.
9.5.2. El archivo de configuración
The syntax of the /etc/rsyslog.conf
file is detailed in the rsyslog.conf(5) manual page, but there is also HTML documentation available in the rsyslog-doc package (/usr/share/doc/rsyslog-doc/html/index.html
). The overall principle is to write “selector” and “action” pairs. The selector defines all relevant messages, and the action describes how to deal with them.
9.5.2.1. Sintaxis del selector
El selector es una lista separada por punto y coma de pares subsistema.prioridad
(por ejemplo: auth.notice;mail.info
). Un asterisco puede representar todos los subsistemas o todas las prioridades (por ejemplo: *.alert
o mail.*
). Puede agrupar varios subsistemas separándolos con una coma (por ejemplo: auth,mail.info
). La prioridad indicada también incluye los mensajes de prioridad igual o mayor; por lo tanto, auth.alert
indica los mensajes del subsistema auth
de prioridad alert
o emerg
. Si se agrega un signo de exclamación (!) como prefijo, indica lo contrario; en otras palabras, prioridades estrictamente menores. Por lo tanto, auth.!notice
sólo incluye los mensajes del subsistema auth
con prioridades info
o debug
. Si se agrega un signo igual (=) como prefijo corresponde única y exactamente con la prioridad indicada (auth.=notice
sólo incluye los mensajes del subsistema auth
con prioridad notice
).
Cada elemento en la lista del selector reemplaza elementos anteriores. Así es posible restringir un conjunto o excluir ciertos elementos del mismo. Por ejemplo, kern.info;kern.!err
significa los mensajes del núcleo con prioridades entre info
y warn
. La prioridad none
indica el conjunto vacío (ninguna prioridad) y puede servir para excluir un subsistema de un conjunto de mensajes. Por lo tanto *.crit;kern.none
indica todos los mensajes con prioridad igual o mayor a crit
que no provengan del núcleo.
9.5.2.2. Sintaxis de las acciones
Las acciones posibles son:
agregar el mensaje a un archivo (ejemplo: /var/log/messages
);
enviar el mensaje a un servidor syslog
remoto (ejemplo: @log.falcot.com
);
enviar el mensaje a una tubería con nombre existente (ejemplo: |/dev/xconsole
);
enviar el mensaje a uno o más usuarios si tienen una sesión iniciada (ejemplo: root,rhertzog
);
enviar el mensaje a todos los usuarios con sesiones activas (ejemplo: *
);
escribir el mensaje en una consola de texto (ejemplo: /dev/tty8
).