Loggin en systemd y uso de journalctl

Con la idea de remplazar viejos subsistemas de GNU/Linux, systemd incluye un servicio de logging llamado systemd-journald. Este duplica la funcionalidad de syslog, aunque también tiene la capacidad de convivir con él. Al contrario que syslog, que normalmente graba sus log en texto plano, systemd-journald almacena los mensajes en formato binario. Todos los atributos de los mensajes son indexados de forma automática lo que facilita y acelera su búsqueda.

Systemd colecta e indexa mensajes de diferentes fuentes:

  • Mensajes de registro del kernel, a través de kmsg
  • Mensajes de registro del sistema simples, a través de la llamada libc syslog para mensajes acordes a convecciones syslog
  • Los mensajes de registro del sistema estructurados a través de la API de diario nativa
  • De la salida estándar y error estándar de unidades de servicio
  • Registros de auditoría, originados desde el subsistema de auditoría del kernel auditd

Configuración de systemd-journald

La configuración por defecto la encontramos en el fichero /etc/systemd/journald.conf. No debemos modificar directamente este fichero, en su lugar podemos adaptar la configuración agregando un fichero con los ajustes en el directorio /etc/systemd/journald.conf.d. Cualquier fichero que pongamos en esta ruta con la extensión .conf se incorporara a la configuración.

En el fichero encontramos unos parámetros comentados con las opciones así como su valor por defecto. Si queremos cambiar alguna opción creamos la carpeta journald.conf.d:

sudo mkdir /etc/systemd/journald.conf.d

y añadimos un fichero con las opciones que nos interesen, por ejemplo para poner el número máximo de ficheros individuales a mantener en 200, creamos un fichero, por ejemplo systemmaxfiles.conf con estos datos:

[Journal]
SystemMaxFiles=200
END

y lo añadimos a la carpeta /etc/systemd/journald.conf.d

sudo cp systemmaxfiles.conf /etc/systemd/journald.conf.d

El sistema por defecto tiene el parámetro Storage=auto, esto significa que guardará los log en la carpeta /var/log/journal (la carpeta tiene que estar creada previamente, en Ubuntu 18.04LTS lo esta por defecto).

Existen también la opción de transmitir los datos de log por la red a un systemd-journal remoto. Para ello contamos con las unidades: systemd-journal-gatewayd.service, systemd-journal-gatewayd.socket, systemd-journal-remote.service, systemd-journal-remote.socket, systemd-journal-upload.service.

Herramienta journalctl

Para poder trabajar con todos estos logs que el sistema systemd colecta, tenemos una herramienta llamada journalctl. Muestro algunos ejemplos de su uso:

Comando Descripción
journalctl Nos muestra todos los log
journalctl -u ssh Nos muestra ltodos los log del daemon ssh
journalctl -b 0 -u ssh El número después del parámetro -b indica: 1 significa el primer arranque encontrado en el diario en orden cronológico, 2 el segundo y así sucesivamente; mientras que 0 es el último arranque, -1 el arranque antes del último, y así sucesivamente
journalctl --since=yesterday --until=now Muestra los log desde la medianoche de ayer hasta hoy
journalctl -n 100 Muestra los últimos 100 logs
journalctl -f Nos permite seguir los logs en tiempo real según se van registrando
journalctl -k Muestra los mensajes generados por el kernel
journalctl _PID=7103 Muestra los mensajes que provienen de un proceso concreto identificado por su PID
journalctl -p 3 Filtramos por prioridad de mensaje. Tenemos 7 niveles: emerg (0), alert (1), crit (2), err (3), warning (4), notice (5), info (6), y  debug (7)
journalctl --disk-usage Nos muestra el tamaño de los ficheros de logs
journalctl --list-boots Muestra una lista secuencial de los arranques del sistema desde 0 que es el actual indicando las fechas y horas del primer y último log de cada día
journalctl --disk-usage Muestra el espacio usado por el journal
journalctl --vacuum-time=2d Borramos todas las entradas de más de dos días

Estas son las opciones que más uso, aunque hay muchas más que podemos consultar en el manual de journalctl

 

Modificado por última vez enMartes, 28 Julio 2020 20:14
(0 votos)
Etiquetado como :

Deja un comentario

Asegúrese de introducir toda la información requerida, indicada por un asterisco (*). No se permite código HTML.