LINUX

Cómo usar el comando systemd journalctl para administrar registros

A pesar de la publicidad negativa, systemd ha aportado una gran funcionalidad nueva al sistema operativo Linux. La tala es uno de ellos. En los viejos tiempos antes de systemd, verificar los registros y solucionar problemas a veces era algo muy desagradable porque los registros de diferentes programas estaban dispersos en diferentes archivos y tenía que verificar las marcas de tiempo en todos y cada uno de ellos. Por supuesto, también había un archivo syslog, pero a veces no era tan detallado como era necesario. El systemd nos trae el demonio de diario llamado journald que permite la administración centralizada de registros. Estos registros se pueden filtrar y manipular mediante la utilidad llamada journalctl. En este artículo, analizaremos el uso básico de las utilidades.

Que es journald

Journald es un servicio que recopila y almacena registros de muchas fuentes y crea archivos de registro estructurados indexados que son fáciles de interpretar. Algunas de las fuentes que usa journald

  • Mensajes de registro del kernel, a través de kmsg
  • Mensajes de registro del sistema simples, a través de la libc syslog llamada
  • Mensajes de registro del sistema estructurados a través de la API de Journal nativa
  • Salida estándar y error estándar de los servicios del sistema

La idea es tener todos los mensajes de registro centralizados, sin importar de qué aplicación provengan.

Establecer la hora

Para que los registros sean útiles, debe tener la hora correcta del sistema. Los registros pueden tener la hora UTC o la hora local. Generalmente se guardan ambas marcas de tiempo. Así que configuremos la zona horaria primero

sudo timedatectl set-timezone Europe/Belgrade

Este comando establece la hora en la zona horaria de Europa Central, pero si se encuentra en cualquier otro lugar del mundo, solo debe ingresar al continente y presionar el tabulador para ver las ciudades que podría elegir. No importa si no es tu ciudad, yo tampoco vivo en Belgrado, es la gran ciudad más cercana. A continuación, veamos el estado de la zona horaria.

miki@ThinkPad-X220T:~$ timedatectl status
Local time: Mon 2016-11-14 18:40:46 CET
Universal time: Mon 2016-11-14 17:40:46 UTC
RTC time: Mon 2016-11-14 17:40:46
Time zone: Europe/Belgrade (CET, +0100)
Network time on: yes
NTP synchronized: yes
RTC in local TZ: no

1) Ver registros

Ahora que tenemos la hora correcta, continuemos viendo los registros. El comando básico para ver registros es

journalctl

Obtendrá una salida similar a esta:

-- Logs begin at Sun 2016-11-13 17:38:07 CET, end at Mon 2016-11-14 18:42:51 CET

Nov 13 17:38:07 ThinkPad-X220T systemd-journald[344]: Runtime journal (/run/log/
Nov 13 17:38:07 ThinkPad-X220T kernel: microcode: microcode updated early to rev

Esa es la primera línea y seguida de muchas líneas. Vemos que los registros comienzan desde el último inicio del sistema. La última vez que reinicié la computadora ayer. De forma predeterminada, journald no guarda los registros en los reinicios, porque eso haría que los archivos de registro se volvieran más grandes con el tiempo. El registro parece similar a syslog, pero tiene muchas más fuentes. Dijimos que tanto UTC como las marcas de tiempo de su zona horaria local se guardan, por lo que también puede ver los mismos registros con marcas de tiempo UTC.

journalctl --utc

Sí, sé que los registros son enormes. ¡Dijimos que los registros volverán a ser geniales! Pero son demasiado buenos, por lo que el journald tiene una característica interesante para filtrar registros.

Si desea ver los registros desde algún momento hasta ahora, debe usar el comando formateado de esta manera:

miki@ThinkPad-X220T:~$ journalctl --since "2016-11-14 19:15:00"
-- Logs begin at Sun 2016-11-13 17:38:07 CET, end at Mon 2016-11-14 20:07:51 CET
Nov 14 19:17:01 ThinkPad-X220T CRON[6044]: pam_unix(cron:session): session opene
Nov 14 19:17:01 ThinkPad-X220T CRON[6049]: (root) CMD ( cd / && run-parts --re
Nov 14 19:17:01 ThinkPad-X220T CRON[6044]: pam_unix(cron:session): session close
Nov 14 19:22:51 ThinkPad-X220T nm-applet[4929]: ModemManager is not available fo

...

2) Filtrar registros por tiempo

Esto todavía es demasiado grande, por lo que podemos hacerlos más pequeños si agregamos un operando más después de –desde, y será –hasta

miki@ThinkPad-X220T:~$ journalctl --since "2016-11-14 19:00:00" --until "2016-11-14 19:05:00"
-- Logs begin at Sun 2016-11-13 17:38:07 CET, end at Mon 2016-11-14 20:21:23 CET
Nov 14 19:01:16 ThinkPad-X220T nm-applet[4929]: ModemManager is not available fo
Nov 14 19:02:51 ThinkPad-X220T nm-applet[4929]: ModemManager is not available fo

En esos cinco minutos, solo hubo dos masajes de troncos.

Desde y hasta que las banderas aceptan las marcas de tiempo en formato AAAA-MM-DD HH: MM: SS pero esa no es la única forma. Si, por ejemplo, un usuario se queja de que su servidor no funciona en los últimos 5 minutos, puede examinar registros como este:

journalctl --since "5 minutes ago"
-- Logs begin at Sun 2016-11-13 17:38:07 CET, end at Mon 2016-11-14 20:22:21 CET
Nov 14 20:21:21 ThinkPad-X220T gnome-terminal-[7867]: Allocating size to GtkBox
Nov 14 20:21:21 ThinkPad-X220T gnome-terminal-[7867]: Allocating size to GtkBox
Nov 14 20:21:23 ThinkPad-X220T gnome-terminal-[7867]: Allocating size to GtkBox
Nov 14 20:22:20 ThinkPad-X220T apport-gtk[5977]: gdk_pixbuf_composite: assertion
Nov 14 20:22:21 ThinkPad-X220T systemd[3634]: Started Notification regarding a c

También comprende palabras como ayer u hoy, por lo que puede buscar registros desde ayer o hoy.

3) Configurar el registro entre reinicios

Todo esto es más útil si tiene los registros persistentes durante los reinicios. Si desea que los registros permanezcan después del inicio, debe habilitarlo manualmente. Primero cree el directorio donde se registrará

sudo mkdir -p /var/log/journal

Luego edite el archivo de configuración para registrar de forma persistente.

sudo sed -i.orig 's/#Storage=auto/Storage=persistent/g' /etc/systemd/journald.conf

Después de esto, puede reiniciar su máquina y verificar si los arranques se extienden entre los reinicios con el siguiente comando:

miki@ThinkPad-X220T:~$ journalctl --list-boots
-1 7917f2c3498d4de89e94701ca8049245 Mon 2016-11-14 20:47:49 CET—Mon 2016-11-14 2
0 438c0a9258aa47fcbf88daf91106aaa3 Mon 2016-11-14 20:56:55 CET—Mon 2016-11-14 2

lista de botas
Reinicié la computadora dos veces y ambos arranques están registrados. Pensé que el arranque anterior también se guardaría, pero no fue así. Por lo tanto, solo se registrarán los reinicios que se realicen después de configurar los registros persistentes.

4) Administrar registros de diferentes botas

Si ahora desea ver los registros de este arranque solo, use el comando

journalctl -b

Puede usar el número de inicio para elegir un inicio específico

journalctl -b -1

O podrías usar la identificación de arranque

journalctl -b 7917f2c3498d4de89e94701ca8049245

El filtrado basado en el tiempo también funcionará

journalctl -b 0 --since "15 minutes ago"

5) Filtrado por servicio e id.

Supongamos que desea ver los registros de un solo programa. Miraré registros de fprintd

journalctl -u fprintd.service
-- Logs begin at Mon 2016-11-14 20:47:49 CET, end at Mon 2016-11-14 21:28:03 CET
Nov 14 20:48:32 ThinkPad-X220T systemd[1]: Starting Fingerprint Authentication D
Nov 14 20:48:32 ThinkPad-X220T systemd[1]: Started Fingerprint Authentication Da
Nov 14 20:48:32 ThinkPad-X220T fprintd[3413]: user 'miki' claiming the device: 0
Nov 14 20:48:32 ThinkPad-X220T fprintd[3413]: now monitoring fd 15
Nov 14 20:48:32 ThinkPad-X220T fprintd[3413]: device 0 claim status 0
Nov 14 20:48:33 ThinkPad-X220T fprintd[3413]: no longer monitoring fd 15
Nov 14 20:48:33 ThinkPad-X220T fprintd[3413]: released device 0
-- Reboot --

También puede filtrar registros por UID. Primero necesitas obtener el UID de tu usuario

miki@ThinkPad-X220T:~$ id -u miki
1000

Y a continuación, puede usar ese uid para filtrar registros

journalctl _UID=1000 --since "25 minutes ago"

También puede filtrar por GID

miki@ThinkPad-X220T:~$ journalctl -F _GID
30
102
130
1000
114
118
104
126
109
0

Ahora puede filtrar por cualquiera de esos GID

journalctl _GID=114

Filtrado de registros por ruta al ejecutable:

journalctl /usr/bin/sudo

Ver registros en tiempo real

journalctl -f

Si desea que sus registros se muestren en el texto del plan para copiarlos y pegarlos fácilmente, puede usar la opción «sin buscapersonas»

journalctl --no-pager

6) Visualización de mensajes del kernel y eliminación de registros antiguos

El journalctl también puede mostrar mensajes del kernel. De forma predeterminada, se mostrará desde el inicio actual

journalctl -k

Si desea mensajes del kernel del arranque anterior, use la marca -b -1.

journalctl -k -b -1

Para verificar cuánto espacio en disco usan sus registros, puede usar este comando

journalctl --disk-usage
Archived and active journals take up 24.0M on disk.

Si sus troncos han aumentado de tamaño, puede usar una aspiradora para limpiar el más viejo. Bueno, no es realmente una aspiradora, pero el comando se llama aspiradora.

sudo journalctl --vacuum-size=16M

Esto reducirá el tamaño del registro a 16 MB.

Conclusión

Hemos pasado por comandos básicos de journald que hacen que el registro sea genial nuevamente. Con suerte, esto le ayudará mucho la próxima vez que tenga que solucionar algún problema con su servidor Linux o computadora de escritorio con systemd. El systemd nos brinda excelentes herramientas y la publicidad negativa que recibió temprano fue solo una reacción violenta contra el cambio de herramientas antiguas que las personas también usaban. Ya me acostumbré a systemd y no sé cómo vivía sin él. Todo esto es por este artículo, gracias por leer y que tengas un buen día.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar