¡Esta es una revisión vieja del documento!
Tabla de Contenidos
108.2 System logging
Pertenece a Topic 108: Essential System Services
- Weight: 4
- Description: Candidates should be able to configure rsyslog. This objective also includes configuring the logging daemon to send log output to a central log server or accept log output as a central log server. Use of the systemd journal subsystem is covered. Also, awareness of syslog and syslog-ng as alternative logging systems is included.
- Key Knowledge Areas:
- Basic configuration of rsyslog.
- Understanding of standard facilities, priorities and actions.
- Query the systemd journal.
- Filter systemd journal data by criteria such as date, service or priority.
- Configure persistent systemd journal storage and journal size.
- Delete old systemd journal data.
- Retrieve systemd journal data from a rescue system or file system copy.
- Understand interaction of rsyslog with systemd-journald.
- Configuration of logrotate.
- Awareness of syslog and syslog-ng.
- The following is a partial list of the used files, terms and utilities:
/etc/rsyslog.conf/var/log/loggerlogrotate/etc/logrotate.conf/etc/logrotate.d/journalctlsystemd-cat/etc/systemd/journald.conf/var/log/journal/
System Log Files
Linux mantiene cada día una gran variedad de registros de logs sobre el estado del sistema. Para ello, hay un daemon corriendo que es el rsyslogd que hace que todo el sistema de registros funcione bien.
Rsyslog se encarga de recoger los avisos de los diferentes servicios y redirigirlos a los archivos o dispositivos correspondientes.
La configuración de dicho daemon se realiza en /etc/rsyslog.conf
Cada entrada del fichero consiste en diferentes reglas que incluyen un selector y una acción.
Cada selector es una combinación de una facility (servicio) y una prioridad, separados por un punto
Ejemplos:
# Los archivos de prioridad "info" y superiores se deben guardar en /var/log/mail.info: mail.info /var/log/mail.info # Guarda todos los mensajes de nivel "debug" en el fichero /var/log/debug: *.=debug /var/log/debug
| Facility | Uso |
|---|---|
| auth / security | Sistema de autenticación, incluyendo login, su y getty |
| authpriv | Programas de autorización privados |
| cron | cron y at |
| daemon | Demonios del sistema |
| ftp | Demonio de ftp |
| kern | Mensajes generados por el kernel |
| local0-7 | Reservado para uso local |
| lpr | Sistema de impresión |
| Sistema de mail | |
| mark | Mensajes internos de syslogd (no usable por aplicaciones) |
| news | Sistema de news en la red |
| syslog | Mensajes del demonio de syslog |
| user | Aplicaciones de usuario |
| uucp | Sistema UUCP |
| * | Todas las facilities menos mark |
| Prioridad | Uso |
|---|---|
| debug (7) | Mensajes generados en la depuración de un programa |
| info (6) | Mensajes informativos |
| notice (5) | Mensajes no críticos que requieren investigación adicional |
| warning (4) | Mensajes de aviso |
| err (3) | Otros errores |
| crit (2) | Condiciones críticas como errores hardware |
| alert (1) | Condiciones que se deberían resolver rápidamente |
| emerg (0) | Condiciones de pánico muy importantes |
| none | Bloquea un facility |
| Acción | Uso |
|---|---|
| fichero | Ruta absoluta al fichero donde se guardan los mensajes |
| /dev/ttX | Escribe los mensajes en el terminal |
| @host o @ip | Host remoto donde su syslogd recoge los mensajes |
| :omusrmsg:user1 & user2 | Escribe los mensajes a los usuarios si están conectados |
| :omusrmsg:* |
| Símbolo | Uso |
|---|---|
, | Define varias facilities para una misma prioridad |
; | Permite definir varios selectores para una misma accion |
= | Especifica sólo una prioridad y no las superiores |
! | Ignorar esa prioridad |
* | Todas las facilities o prioridades |
Ejemplos del fichero /etc/rsyslog.conf:
auth,authpriv.* /var/log/auth.log
Tanto auth como authpriv, en todos los niveles de prioridad irán al fichero /var/log/auth.log
mail.info /var/log/mail.info mail.warn /var/log/mail.warn mail.err /var/log/mail.err
Los mensajes de información relacionados con el correo irán a /var/log/mail.info, los de aviso a /var/log/mail.warn y los de error a /var/log/mail.err
logger
El comando logger nos permite enviar mensajes al sistema de log del sistema.
logger [opciones] [-p prioridad] [mensaje]
Envía un mensaje con nivel “err” al sistema de mail:
logger -p mail.err "Prueba de mail.err"
Podemos verificarlo mirando en /var/log/syslog o /var/log/mail.err.
Registra el mensaje del fichero /etc/motd en “auth.notice”, poniéndole una etiqueta TEST:
logger -p auth.notice -t TEST -f /etc/motd
Una posible salida del comando anterior es que en /var/log/syslog se vería:
Apr 22, 12:10.10 Debian11 TEST ...
Systemd journal
El proceso que gestiona las notificaciones de sistema en systemd es systemd-journal y tiene una herramienta para gestionarlo que es journalctl.
Esta herramienta genera sus logs de forma independiente a rsyslog y por defecto no los guarda en ficheros sino que se consultan en tiempo de ejecución, aunque podemos forzar su volcado a ficheros.
Con esta herramienta podemos consultar todos los registros o hacer consultas específicas.
Al ejecutarlo, entramos en su interfaz propio y nos permite navegar por los logs desde el principio, como si fuera un less.
journalctl: inicia la herramientajournalctl -e: nos manda directamente al final del logjournalctl -x: añade explicaciones a cada líneajournalctl --list-boots: muestra los inicios o reiniciosjournalctl --since "2017-08-16 18:46:30" --until "2017-08-16 18:55:00": filtrar los datos por fechajournalctl -u <NOMBRE_SERVICIO>: filtramos las entradas por servicio (journalctl -u sshd.service)journalctl -t <FACILITY>: filtramos por una facility (cron, mail, lpr…)journalctl -f: añade las nuevas entradas (comotail -f)journalctl -p err: filtramos las entradas por prioridad “err”.journalctl --disk-usage: muestra es espacio ocupado por logsjournalctl -k: muestra solo mensajes del kernel (como con el comandodmesg)journalctl -g “<PATRON>”: busca según un patrón (soporta regex)
Cuando vemos el estado de un servicio con systemctl status, las últimas líneas corresponden a mensajes del journal de Systemd relacionado con dicho servicio.
Combinaciones:
journalctl --sice '5 min ago' -u sshd.service
Logrotate
Este servicio se encarga de gestionar como se generan y se almacenan los logs del sistema para evitar que crezcan desmesuradamente. logrotate los divide, comprime y guarda copias.
El archivo de configuración principal es /etc/logrotate.conf aunque cada servicio suele tener su propia configuración en /etc/logrotate.d/
El funcionamiento es por medio de un script, alojado en /etc/cron.daily/logrotate por lo que la ejecución del script depende de cron.
Parámetros de configuración importantes de logrotate:
rotate [num]: número de copias rotadas que se conservancompress: comprimir copias antiguasdelaycompress: deja la mas reciente sin comprimirhourly/weekly/monthly/yearly: periodicidad de la rotaciónmaxsize/minsize [tam]: tamaño que pueden alcanzar antes de rotarminage/maxage [num]: rota los logs con ese numero de diasmissingok: permite que el log no exista para crearlomail [direccion]: notifica por mail cuando se rota el logpostrotate: indica qué acción se ejecutará cuando se haga la rotación del log.
