Table of Contents
Administrar mensajes de registro en Systemd con Journalctl [Guía completa]
Systemd. es un administrador de sistemas y servicios de vanguardia para sistemas Linux: un reemplazo del demonio init destinado a iniciar procesos en paralelo al arrancar el sistema. Ahora es compatible con varias distribuciones principales actuales, incluidas Fedora, Debian, Ubuntu, OpenSuSE, Arch, RHEL, CentOS, etc.
Anteriormente, explicamos la historia detrás de ‘init’ y ‘systemd’ ; donde discutimos qué son los dos demonios, por qué ‘ init. técnicamente necesitaba ser reemplazado por ‘ systemd. así como las características principales de systemd.
Una de las principales ventajas de systemd sobre otros sistemas de inicio comunes es la compatibilidad con la gestión centralizada del sistema y el registro de procesos mediante un diario. En este artículo, aprenderemos cómo administrar y ver los mensajes de registro en systemd usando el comando journalctl. en Linux.
Importante. Antes de avanzar más en esta guía, es posible que desee aprender cómo administrar los servicios y unidades ‘Systemd’ usando el comando ‘Systemctl’, y también crear y ejecutar nuevas unidades de servicio en systemd usando scripts de shell en Linux. Sin embargo, si está de acuerdo con todo lo anterior, continúe leyendo.
Configuración de Journald para recopilar mensajes de registro en Systemd
journald. es un demonio que recopila y escribe entradas de diario de todo el sistema; estos son esencialmente mensajes de arranque, mensajes del kernel y de syslog o varias aplicaciones y almacena todos los mensajes en una ubicación central: archivo de diario.
freestar.config.enabled_slots.push
Puede controlar el comportamiento de journald. a través de su archivo de configuración predeterminado: /etc/systemd/journald.conf. que se genera en tiempo de compilación . Este archivo contiene opciones cuyos valores puede cambiar para adaptarse a los requisitos de su entorno local.
A continuación se muestra un ejemplo de cómo se ve el archivo, visto con el comando cat.
$ cat/etc/systemd/journald.conf Archivo de configuración de Journald # Consulte journald.conf (5) para obtener más detalles. [Diario] # Storage = auto # Compress = yes # Seal = yes # SplitMode = uid # SyncIntervalSec = 5m # RateLimitInterval = 30s # RateLimitBurst = 1000 # SystemMaxUse = # SystemKeepFree = # SystemMaxFileSize = # SystemMaxFiles = 100 # RuntimeMaxUse =Free RuntimeKeep =Free # RuntimeMaxFileSize = # RuntimeMaxFiles = 100 # MaxRetentionSec = # MaxFileSec = 1month # ForwardToSyslog = sí # ForwardToKMsg = no # ForwardToConsole = no # ForwardToWall = sí # TTYPath =/dev/console # debutante MaxLevelStore = MaxLevelConsole = info # MaxLevelWall = emerg
Tenga en cuenta que varias instalaciones de paquetes y extractos de configuración de uso en /usr/lib/systemd/*.conf.d/ y las configuraciones de tiempo de ejecución se pueden encontrar en /run/systemd/journald.conf.d/*. conf. que no necesariamente puede usar.
Habilite el almacenamiento de datos de diario en disco
Varias distribuciones de Linux, incluido Ubuntu y sus derivados, como Linux Mint no habilita el almacenamiento persistente de mensajes de arranque en el disco de forma predeterminada.
Es posible habilitar esto configurando la opción “ Almacenamiento. en “ persistente. como se muestra a continuación. Esto creará el directorio /var/log/journal. y todos los archivos de diario se almacenarán en él.
$ sudo vi/etc/systemd/journald.conf O $ sudo nano/etc/systemd/journald.conf [Journal] Storage = persistent
Para configuraciones adicionales, encuentre el significado de todas las opciones que se supone deben configurarse en la sección “[Journal]”. escribiendo.
$ man journald.conf Configuración de la hora correcta del sistema usando el comando Timedatectl
Para una administración confiable de registros bajo systemd usando el servicio journald, asegúrese de que la configuración de la hora, incluida la zona horaria, sea correcta en el sistema.
En orden para ver la configuración actual de fecha y hora en su sistema, escriba.
$ timedatectl OR $ timedatectl status Hora local: Thu 2017-06-15 13:29:09 EAT Hora universal: Thu 2017-06-15 10: 29:09 UTC Hora RTC: Jue. 2017-06-15 10:29:09 Zona horaria: África/Kampala (EAT, +0300) Hora de red activada: sí NTP sincronizado: sí RTC en TZ local: no
Para configurar la hora correctaz uno y posiblemente la hora del sistema, utilice los siguientes comandos.
$ sudo timedatectl set-timezone Africa/Kampala $ sudo timedatectl set-time “13:50:00” Visualización de mensajes de registro mediante el comando Journalctl
journalctl. es una utilidad que se utiliza para ver el contenido del diario systemd (que está escrito por el servicio journald).
Para mostrar todos los registros recopilados sin ningún tipo de filtrado, escriba.
$ journalctl Ver mensajes de registro: los registros comienzan el miércoles 14/06/2017 21:56:43 EAT, finalizan el jueves 15/06/2017 12:28:19 EAT 14 junio 21:56:43 tecmint systemd-journald [336]: Diario de tiempo de ejecución (/run/log/journal 14 de junio 21:56:43 kernel de tecmint: Inicializando cgroup subsys cpuset 14 de junio 21:56:43 kernel de tecmint: Inicializando cgroup subsys cpu 14 de junio 21:56:43 kernel de tecmint: inicializando cgroup subsys cpuacct 14 de junio 21:56:43 kernel de tecmint: versión de Linux 4.4.0-21-generic ([email protected]) 14 de junio 21:56:43 kernel de tecmint: línea de comando: BOOT_IMAGE =/boot/vmlinuz-4.4.0-21-14 de junio 21:56:43 kernel de tecmint: cpus compatible con KERNEL: 14 de junio 21:56:43 kernel de tecmint: Intel GenuineIntel 14 de junio 21:56:43 kernel de tecmint: AMD AuthenticAMD 14 de junio 21: 56:43 kernel de tecmint: Centaur CentaurHauls 14 de junio 21:56:43 kernel de tecmint: x86/fpu: xstate_offset [2]: 576, xstate_sizes [2] 14 de junio 21:56:43 kernel de tecmint: x86/fpu: función compatible con XSAVE 0x01: ‘x87 flo 14 de junio 21:56:43 kernel de tecmint: x86/fpu: compatible Función XSAVE 0x02: ‘SSE reg Jun 14 21:56:43 Tecmint kernel: x86/fpu: Compatible con la función XSAVE 0x04:’ AVX reg Jun 14 21:56:43 Tecmint kernel: x86/fpu: Funciones xstate habilitadas 0x7, contexto si 14 de junio 21:56:43 kernel tecmint: x86/fpu: uso de conmutadores de contexto FPU ‘ansiosos’. 14 de junio 21:56:43 kernel de tecmint: e820: mapa de RAM físico proporcionado por BIOS: 14 de junio 21:56:43 kernel de tecmint: BIOS-e820: [mem 0x0000000000000000-0x00000000000 14 de junio 21:56:43 kernel de tecmint: BIOS-e820: [mem 0x0000000000090000-0x00000000000 14 de junio 21:56:43 kernel de tecmint: BIOS-e820: [mem 0x0000000000100000-0x000000001ff 14 de junio 21:56:43 kernel de tecmint: BIOS-e820: [mem 0x0000000020000000-0x00000000201 14 de junio 21:56 : 43 kernel tecmint: BIOS-e820: [mem 0x0000000020200000-0x00000000400 Ver mensajes de registro basados en arranques
Puede mostrar una lista de números de arranque (en relación con el arranque actual), sus ID y las marcas de tiempo del primer y último mensaje correspondiente al arranque con la opción–list-boots.
$ journalctl–list-boots-1 9fb590b48e1242f58c2579defdbbddc9 Thu 2017-06-15 16:43:36 EAT — Thu 2017-06-15 1 0 464ae35c6e264a4ca087949936be434a Thu 2017-06-15 16:47:36 EAT — Thu 2017-06-15 1
Para ver las entradas del diario del inicio actual (número 0), use el modificador-b como este (sa me como el resultado de muestra anterior).
$ journalctl-b
y para ver un diario del arranque anterior, use el puntero relativo-1 con la opción-b como se muestra a continuación.
$ journalctl-b-1
Alternativamente, use el ID de inicio de esta manera.
$ journalctl-b 9fb590b48e1242f58c2579defdbbddc9 Filtrado de mensajes de registro según la hora
Para usar la hora en formato de hora universal coordinada (UTC), agregue–utc opciones de la siguiente manera.
$ journalctl–utc
Para ver todas las entradas desde una fecha y hora en particular, por ejemplo 15 de junio de 2017 a las 8:15 a. M., Escriba este comando.
$ journalctl–since “2017-06-15 08:15:00” $ journalctl–since today $ journalctl–since ayer Visualización del registro reciente Mensajes
Para ver los mensajes de registro recientes (10 por defecto), use la marca-n como se muestra a continuación.
$ journalctl-n $ journalctl-n 20 Visualización de mensajes de registro generados por el kernel
Para ver solo el kernel mensajes, similar a la salida del comando dmesg, puede usar el indicador-k.
$ journalctl-k $ journalctl-k-b $ journalctl-k-b 9fb590b48e1242f58c2579defdbbddc9 Visualización de mensajes de registro generados por unidades
Para ver todas las entradas de diario para una unidad en particular, use el modificador-u de la siguiente manera.
$ journalctl-u apache2.service
Para poner a cero hasta el inicio actual, escriba este comando.
$ journalctl-b-u apache2.service
Para mostrar los registros del arranque anterior, use esto.
$ journalctl-b-1-u apache2.service
A continuación se muestran algunos otros comandos útiles:
$ journalctl-u apache2.service $ journalctl-u apache2. service–desde hoy $ journalctl-u apache2.service-u nagios.service–desde ayer Visualización de mensajes de registro generados por procesos
Para ver los registros generados por un proceso específico, especifique su PID así.
$ journalctl _PID = 19487 $ journalctl _PID = 19487–desde hoy $ journalctl _PID = 19487–desde ayer Visualización de mensajes de registro generados por ID de usuario o grupo
Para ver registros generados por un usuario o grupo específico, especifique su usuario o grupo ID como este.
$ journalctl _UID = 1000 $ journalctl _UID = 1000–desde hoy $ journalctl _UID = 1000-b-1–desde hoy Visualización de registros generados por un archivo
Para mostrar todos los registros generados por un archivo (posiblemente un ejecutable), como el ejecutable D-Bus o bash, simplemente escriba.
$ journalctl/usr/bin/dbus-daemon $ journalctl/usr/bin/bash Visualización de mensajes de registro por prioridad
También puede filtrar la salida según las prioridades de los mensajes o los rangos de prioridad utilizando el indicador-p. Los valores posibles son: 0-emerg, 1-alert, 2-crit, 3-err, 4-warning, 5-notice, 6-info, 7-debug):
$ journalctl-p err
Para especificar un rango, use el siguiente formato (emergente a advertencia).
$ journalctl-p 1..4 OR $ journalctl-p emerg..warning Ver mensajes de registro en tiempo real
Prácticamente puede ver los registros a medida que se escriben con la opción-f (similar a tail-f. funcionalidad).
$ journalctl-f Manejo del formato de visualización del diario
Si desea controlar el formato de salida de las entradas del diario, agregue el indicador-o y use estas opciones: cat, export, json, json-pretty, json-sse, short, short-iso, short-monotonic, short-preciso y detallado (verifique el significado de las opciones en la página de manual:
El La opción cat. muestra el mensaje real de cada entrada de diario sin metadatos (marca de tiempo, etc.).
$ journalctl-b-u apache2.service-o cat Gestión de diarios en un sistema
Para comprobar el archivo de diario para la coherencia interna, use la opción–verify. Si todo está bien, la salida debe indicar un PASS.
$ journalctl–verify PASS:/run/log/journal/2a5d5f96ef9147c0b35535562b32d0ff/system.journal 491f68: Datos no utilizados (entry_offset == 0) PASS:/run/log/journal/2a5d5f96ef9147c0b35535562b32d0ff/[email protected] 9866c3d4d.journal PASS:/run/log/journal/2a5d5f96ef9147c0b3553556/log/journal/2a5d5f96ef9147c0b35535562b32d0ff/[email protected] 1becab02f.journal PASS:/run/log/journal/2a5d5f96ef9147c0b35535562b32d0ff/[email protected] 01cfcedff. archivos con las opciones de uso de disco. Muestra la suma del uso de disco de todos los archivos de diario archivados y activos:
$ journalctl–disk-use
Para eliminar archivos de diario antiguos (archivados), ejecute los siguientes comandos:
$ sudo journalctl–vacuum-size = 50M # eliminar archivos hasta que el espacio en disco que usan caiga por debajo del tamaño especificado $ sudo journalctl–vacuum-time = 1years # eliminar archivos para que todos los archivos de diario no contengan datos anteriores al período de tiempo especificado $ sudo journalctl–vacuum-files = 4 #delete files para que no quede más de la cantidad especificada de archivos de diario separados en la ubicación de almacenamiento Rotación de archivos de diario
Por último, pero no menos importante, puede indicar a journald que rote los archivos de diario con–rotate opción. Tenga en cuenta que esta directiva no regresa hasta que finaliza la operación de rotación:
$ sudo journalctl–rotate
Para obtener una guía de uso detallada y opciones, vea la página de manual de journalctl de la siguiente manera.
$ man journalctl
Consulte algunos artículos útiles.
- Gestión de procesos y servicios de inicio del sistema (SysVinit, Systemd y Upstart)
- Petiti: una herramienta de análisis de registros de código abierto para administradores de sistemas Linux
- Cómo configurar y administrar la rotación de registros usando Logrotate en Linux
- lnav-Ver y analizar registros de Apache desde una terminal de Linux
Eso es todo por ahora. Utilice los comentarios que se encuentran a continuación para hacer preguntas o agregar ideas sobre este tema.