Uso de journalctl para ver y analizar registros: una guía detallada





Journalctl es una excelente herramienta para analizar registros, generalmente una de las primeras en familiarizarse con los aspirantes a administradores de Linux. Las capacidades de rotación incorporadas, las amplias capacidades de filtrado y la capacidad de ver los registros de todos los servicios de la unidad systemd con una sola herramienta son muy convenientes y facilitan enormemente el trabajo de los administradores del sistema.



Este artículo cubre las características principales de journalctl y cómo se puede utilizar. Con journalctl, puede ver los registros del sistema para resolver problemas que han surgido en una estación de trabajo o servidor utilizando una distribución de Linux con el demonio de inicialización systemd, que ya se ha convertido en un estándar de facto en los sistemas Linux modernos, por ejemplo: RHEL, CentOS, Fedora, Debian y muchos otros.



Existe la percepción de que systemd no es tan bueno: carga el sistema y todavía es un tema de controversia en la actualidad, pero no se puede negar que proporciona un excelente conjunto de herramientas para la administración y resolución de problemas del sistema. Imagine tener que lidiar con un servidor problemático que ni siquiera arranca, en cuyo caso puede arrancar desde la distribución en vivo, montar la partición del sistema y mirar los registros de systemd para ver cuál es el problema.



Systemd



Systemd tiene tres componentes principales:



  • systemd - administrador de sistemas y servicios
  • systemctl: utilidad para ver y administrar el estado de los servicios
  • systemd-analyse: proporciona estadísticas sobre el proceso de arranque del sistema, verifica la corrección de los archivos de la unidad y también tiene capacidades de depuración de systemd




Diario



Journald es el demonio de registro de systemd. Systemd está diseñado para administrar de forma centralizada los registros del sistema desde procesos, aplicaciones, etc. Todos estos eventos son manejados por el demonio journald, recopila registros de todo el sistema y los guarda en archivos binarios.



Las ventajas del registro centralizado de eventos en formato binario son muchas, por ejemplo, los registros del sistema se pueden traducir a varios formatos, como texto sin formato, o en JSON, si es necesario. También es bastante fácil rastrear el registro hasta un solo evento usando filtros de fecha y hora.



Los archivos de registro registrados en diario pueden recopilar miles de eventos y se actualizan con cada nuevo evento, por lo que si su sistema Linux se está ejecutando durante el tiempo suficiente, el tamaño de los archivos de registro puede alcanzar varios gigabytes o más. Por lo tanto, el análisis de dichos registros puede ocurrir con demoras, en este caso, al analizar los registros, puede filtrar la salida para acelerar el trabajo.



Archivo de configuración de Journald



El archivo de configuración se puede encontrar en la siguiente ruta: /etc/systemd/journald.conf, contiene varias configuraciones para journald, no recomendaría cambiar este archivo a menos que esté seguro de lo que está haciendo.



El directorio con el diario journald se encuentra en / run / log / journal (en el caso de que el almacenamiento persistente de registros no esté configurado, pero más sobre eso más adelante).

Los archivos se almacenan en formato binario, por lo que es normal verlos usando cat o nano, como están acostumbrados muchos administradores, no funcionará.



Uso de journalctl para ver y analizar registros



Comando básico para ver:



# journalctl
      
      









Imprimirá todas las entradas de todos los registros, incluidos los errores y las advertencias, desde el momento en que el sistema comenzó a arrancar. Las entradas de eventos más antiguas estarán en la parte superior, las más nuevas en la parte inferior, puede usar PageUp y PageDown para moverse por la lista, Enter para desplazarse por el registro línea por línea y Q para salir.



Por defecto, journalctl muestra la hora de los eventos de acuerdo con la zona horaria configurada en su sistema, journalctl también le permite ver los registros con la hora UTC (en este estándar de tiempo, los eventos se almacenan dentro de los archivos journald), para esto puede usar el comando:



# journalctl --utc

      
      





Filtrar eventos por importancia



El sistema registra eventos con diferentes niveles de gravedad, algunos eventos pueden ser una advertencia que se pueden ignorar, algunos pueden ser errores fatales. Si queremos ver solo errores, ignorando otros mensajes, ingresamos el comando que indica el código de

gravedad : # journalctl -p 0



Para los niveles de gravedad se acepta la siguiente notación:

  • 0: emergencia
  • 1: alertas (alertas que requieren atención inmediata)
  • 2: crítico
  • 3: errores
  • 4: advertencia
  • 5: aviso
  • 6: información (mensajes informativos)
  • 7: depurar (depurar mensajes)




Cuando proporcione un código de gravedad, journalctl imprimirá todos los mensajes con ese código de gravedad y superior. Por ejemplo, si especificamos la opción -p 2, journalctl mostrará todos los mensajes con niveles 2, 1 y 0.



Configurar el almacenamiento de registros



De forma predeterminada, journald sobrescribe sus registros en cada reinicio, y llamar a journalctl imprimirá los registros del inicio actual del sistema.

Si necesita configurar el almacenamiento permanente de registros, deberá configurarlo por separado, porque los desarrolladores abandonaron el almacenamiento permanente de todos los registros para no duplicar rsyslog.



Cuando el parámetro Storage = se establece en auto) en el archivo de configuración /etc/systemd/journald.conf y el directorio / var / log / journal / no existe, el registro se escribirá en / run / log / journal sin guardar entre reinicios si / var / log / journal / existe, los registros se guardarán en él, de forma permanente, pero si se elimina el directorio, systemd no lo volverá a crear automáticamente y en su lugar volverá a iniciar sesión en / run / systemd / journal sin guardar. En este caso, el directorio se puede volver a crear agregando Storage = persistent a journald.conf y reiniciando systemd-journald.service (o reiniciando).



Cree un directorio para almacenar registros, configure los atributos necesarios y reinicie el servicio:



# mkdir /var/log/journal
# systemd-tmpfiles --create --prefix /var/log/journal
# systemctl restart systemd-journald
      
      





Ver registros de descarga



Si journald se configuró para almacenar los registros de manera persistente, podemos ver los registros de cada descarga individual, el siguiente comando enumerará los registros:



# journalctl --list-boots
      
      









El primer número muestra el número de registro que se puede utilizar para ver el registro de una sesión en particular. El segundo ID de inicio también se puede utilizar para ver un registro separado.



Las próximas dos fechas, el período de tiempo durante el cual se escribieron los registros, esto es conveniente si desea encontrar registros durante un período determinado.



Por ejemplo, para ver el registro desde el inicio actual del sistema, puede usar el comando:



# journalctl -b 0
      
      





Y para ver el log de la descarga anterior:



# journalctl -b -1
      
      





Ver el registro durante un período de tiempo específico



Journalctl le permite utilizar palabras como "ayer" (ayer), "hoy" (hoy), "mañana" (mañana) o "ahora" (ahora).

Por lo tanto, podemos usar la opción "--since" (desde el comienzo de qué período para mostrar el registro).



Desde una fecha y hora específicas:



# journalctl --since "2020-12-18 06:00:00"
      
      





Desde una fecha específica hasta una fecha y hora específicas:



# journalctl --since "2020-12-17" --until "2020-12-18 10:00:00
      
      





Desde ayer:



# journalctl --since yesterday
      
      





Desde las 9 am hasta el momento, hace una hora:



# journalctl --since 09:00 --until "1 hour ago"
      
      





Ver mensajes del kernel



Para ver los mensajes del kernel de Linux para el arranque actual, use el comando con la opción -k:



# journalctl -k
      
      









Ver los registros de una aplicación o servicio systemd específico



Puede filtrar registros por servicio específico de systemd. Por ejemplo, para ver los registros de NetworkManager, puede usar el siguiente comando:







# journalctl -u NetworkManager.service
      
      







Si necesita encontrar el nombre del servicio, use el comando:



# systemctl list-units --type=service
      
      





También puede ver el registro de la aplicación especificando su archivo ejecutable, por ejemplo, para ver todos los mensajes de nginx para hoy, podemos usar el comando:



# journalctl /usr/sbin/nginx --since today
      
      





O especificando un PID específico:



# journalctl _PID=1

      
      





Opciones de visualización adicionales



Esté atento a los mensajes nuevos (similar a tail -f):



# journalctl -f
      
      





Abra el registro "rebobándolo" hasta la última entrada:



# journalctl -e
      
      





Si hay muchos datos en el directorio con los registros, entonces filtrar la salida de journalctl puede llevar algún tiempo, el proceso puede acelerarse significativamente usando la opción --file, especificando journalctl solo el registro que necesitamos monitorear:



journalctl --file /var/log/journal/e02689e50bc240f0bb545dd5940ac213/system.journal -f
      
      





Por defecto, journalctl corta porciones de líneas que no se ajustan al ancho de la pantalla, aunque a veces puede ser preferible el ajuste de línea. Esta característica está controlada por la variable de entorno SYSTEMD_LESS, que contiene las opciones pasadas a less (el programa de paginación predeterminado). De forma predeterminada, la variable es FRSXMK, si elimina la opción S, las líneas no se truncarán.



Por ejemplo:



SYSTEMD_LESS=FRXMK journalctl
      
      





Limitar el tamaño del registro



Si journald está configurado para guardar registros después del reinicio, entonces, de manera predeterminada, el tamaño del diario está limitado al 10% del volumen de la partición de archivos y puede ocupar un máximo de 4 GB de espacio en disco.

El tamaño máximo del registro se puede ajustar quitando los comentarios y editando la siguiente configuración en el archivo de configuración journald:



SystemMaxUse=50M
      
      





Eliminar registros



Puede eliminar los archivos de registro archivados manualmente con rm o usando journalctl.



Elimine registros, dejando solo los últimos 100 MB:



# journalctl --vacuum-size=100M
      
      





Elimine los registros, dejando solo los registros de los últimos 7 días:



# journalctl --vacuum-time=7d
      
      





Conclusión



El servicio de registro de journald es una herramienta muy poderosa y flexible, y si sabe cómo usarlo, puede hacer su vida mucho más fácil mientras busca las causas de los problemas con el sistema o sus servicios.










All Articles