GNU/Linux >> Tutoriales Linux >  >> Linux

Guía para principiantes para analizar registros en Linux con el comando journalctl

systemd es el predeterminado en la mayoría de las principales distribuciones de Linux. Una de las características principales de systemd es la forma en que recopila registros y las herramientas que brinda para analizar esos registros.

En el sistema SysVinit tradicional, tiene syslog que almacena registros en archivos de texto sin formato. Leer y analizar esos archivos requiere el uso de find, grep, cut y muchos otros comandos.

systemd recopila registros de más fuentes que syslogs, mantiene los registros diarios en formato binario y le brinda una herramienta de línea de comandos para leer, analizar y manipular los registros. Esto está más simplificado que los syslogs.

¿Qué es journald? ¿Qué es journalctl?

journald es el demonio de systemd que recopila los registros de varias fuentes de registro como syslog.

journalctl es la herramienta de línea de comandos que le permite interactuar con los registros del diario.

Con journalctl, puede leer registros, monitorear los registros en tiempo real, filtrar los registros según el tiempo, el servicio, la gravedad y otros parámetros.

En este tutorial, le mostraré cómo usar journalctl para leer, monitorear y analizar los registros en Linux.

Compruebe si los registros de diario están habilitados en su sistema

Algunas distribuciones de Linux, especialmente las de escritorio, no habilitan los registros diarios de forma predeterminada.

La ubicación predeterminada de los registros journald es /var/log/journal directorio. Debe asegurarse de que este directorio existe. Si no, créalo tú mismo.

A continuación, en el archivo /etc/systemd/journald.conf, asegúrese de que el valor Storage está configurado en auto o persistent .

El archivo journald.conf muestra los valores predeterminados. Entonces, incluso si hay un # delante de las entradas, significa que esas son las configuraciones predeterminadas que se usan. Si desea cambiar algo, elimine el # de esa línea.

Usando comandos journalctl

Déjame mostrarte algunos de los ejemplos más básicos pero útiles del comando journalctl.

Lea y busque registros con journalctl

Si solo escribe journalctl en la terminal, mostrará los registros del diario en orden cronológico.

journalctl

journalctl usa less debajo para mostrarle los registros. Lo que significa que puede usar las mismas teclas para moverse por los registros que con el comando menos.

Si no recuerda eso, aquí hay un recordatorio rápido:

Si no desea que los registros se muestren en un modo de visualización menos parecido, puede usar el --no-pager bandera. Esto mostrará registros completos directamente en la pantalla.

journalctl --no-pager

Esto no es muy útil e inundará su pantalla si tiene una gran cantidad de registros.

Mostrar registros en orden cronológico inverso

Como notó, los registros se muestran en orden cronológico. Esto significa que los registros almacenados más antiguos se muestran primero.

Si desea ver primero los registros recientes, puede mostrar los registros diarios en orden inverso con la opción -r :

journalctl -r

Todavía usa un comando menos como vista. Entonces, presiona q para salir del modo de visualización de registros.

Mostrar solo N líneas recientes de registros de diario

En lugar de mostrar todos los registros, puede optar por mostrar solo una cierta cantidad de líneas del registro usando -n opción.

Por ejemplo, el siguiente comando mostrará las 25 líneas más recientes de los registros:

journalctl -n 25

Mostrar registros de diarios en tiempo real

Ver registros recientes es una cosa, si desea ver los registros en tiempo real, puede usar -f opción del comando journalctl:

journalctl -f

Al igual que la opción -f del comando tail, esto mostrará los registros en tiempo real en el modo de seguimiento.

Utilice el comando Ctrl+C para salir de la vista en tiempo real.

Mostrar registros en hora UTC

De forma predeterminada, los registros diarios se muestran en la hora local de su sistema. Si la hora de su sistema está configurada en una hora diferente a UTC y desea ver los registros en UTC, puede hacerlo usando --utc bandera.

journalctl --utc

Mostrar solo los mensajes del kernel con -k

El diario systemd acumula registros de diferentes fuentes. Si solo desea ver los registros del kernel de Linux, puede usar la opción -k .

journalctl -k

Sugerencia:use sudo para ver todos los registros de diario

Systemd protege sobre qué tipo de registros mostrar a qué usuario.

Puede mostrar algunos registros pero no todos los registros si es un usuario habitual:

[email protected]:~$ journalctl -u ssh
Hint: You are currently not seeing messages from other users and the system.
      Users in groups 'adm', 'systemd-journal' can see all messages.
      Pass -q to turn off this notice.
-- Logs begin at Mon 2020-06-22 12:05:47 UTC, end at Tue 2020-07-14 11:59:29 UTC. --
-- No entries --

Si desea acceder a todos los registros, debe usar sudo si es un usuario de sudo:

sudo journalctl -u ssh

Mostrar mensajes de una sesión de arranque en particular

Esta es una característica excelente de jounrald. El comando journalctl le permite acceder a los registros que pertenecen a una sesión de arranque específica usando la opción -b .

Puede enumerar todas las sesiones de arranque con --list-boots bandera.

journalctl --list-boots

El resultado mostrará las sesiones de arranque con la hora de arranque y un número entero asignado a las sesiones de arranque:

  -5 513008ead8464c23aab732a2feed5277 Sun 2020-07-12 20:43:38 IST—Sun 2020-07-12 22:40:02 IST
  -4 caff16e3f46a4479b5287fb9e294f610 Mon 2020-07-13 07:36:04 IST—Mon 2020-07-13 19:13:44 IST
  -3 5665f41cc50a4dec9955efacc2596d68 Mon 2020-07-13 20:30:55 IST—Mon 2020-07-13 22:20:34 IST
  -2 c7d17407b0bd476a930af503f64b6006 Tue 2020-07-14 07:58:41 IST—Tue 2020-07-14 18:50:04 IST
  -1 7ab5e04518ec455abe0e2c86fdaa46fa Tue 2020-07-14 21:19:27 IST—Tue 2020-07-14 22:42:11 IST
   0 91856e86d4ee4e828717913deb288568 Wed 2020-07-15 08:11:51 IST—Wed 2020-07-15 17:14:10 IST

La sesión de arranque 0 son las sesiones de arranque actuales. Boot session -1 es la última sesión iniciada y así sucesivamente.

journalctl -b -2

¡Imagine intentar hacer esto en el antiguo sistema syslog!

No solo puede obtener los registros de arranque como los que ve en /var/log/boot.log . Sin embargo, los registros de inicio siempre están al principio de los registros si está en la vista de sesión de inicio.

Filtrar registros de diario para un servicio systemd específico

El filtrado es un punto fuerte de los registros diarios. Puede filtrar registros según los servicios de systemd.

journalctl -u service_name

Por ejemplo, si desea ver los registros generados por SSH, puede usarlo así:

journalctl -u ssh

Por supuesto, necesitará saber el nombre del servicio systemd.

Filtrar registros para un determinado intervalo de tiempo

Este es otro ejemplo de la capacidad de filtrado de cadenas de los registros diarios. Puede filtrar los registros durante un cierto período de tiempo y hay varias formas de hacerlo.

Puede usar lenguaje natural para filtrar los registros. Se reconocen términos como ayer, hoy y mañana.

journalctl --since=yesterday --until=now

También puede especificar la fecha o la combinación de fecha y hora:

journalctl --since "2020-07-10"

También puede especificar un período de tiempo con las fechas y la hora:

journalctl --since "2020-07-10 15:10:00" --until "2020-07-12"

El tiempo comienza a las 00:00:00 y determina el día y la fecha.

También puede usar tiempo relativo como -1h20min para especificar 1 hora y 20 minutos en el pasado.

Filtrar registros basados ​​en UID, GID y PID

Si está depurando un problema, es posible que desee verificar los registros de un determinado proceso utilizando su PID.

Los registros diarios también se pueden filtrar por ID de usuario (UID), ID de grupo (GID) e ID de proceso (PID). A continuación se muestra un ejemplo:

journalctl _PID=1234

Sugerencia:combine más de una opción para una visualización de registros más personalizada

Puede combinar varias opciones para ver los registros deseados.

Por ejemplo, si desea ver solo los registros SSH de ayer en las marcas de tiempo UTC, puede usar:

sudo journalctl -u ssh --since=yesterday --utc

Otro uso común es filtrar registros según las sesiones de arranque. Si desea ver solo los registros SSH en la sesión actual, puede usar:

sudo journalctl -u ssh -b0

Las posibilidades son infinitas y puede combinar las opciones según sus necesidades.

Usando journalctl -xe para ver los últimos registros

A menudo encontrará personas que sugieren usar journalctl -xe comando.

  • -e :Saltar al final de los registros diarios
  • -x :muestra información adicional sobre las entradas de registro (si está disponible)

Algunas entradas de registro tienen información adicional que no se muestra en la vista de registro normal. Usando el -x opción puede mostrar dicha información.

Lo que ves como una sola línea como esta:

Jul 09 16:33:40 itsfoss systemd[1]: Started Run anacron jobs.

Podría mostrar más información como esta:

Jul 09 16:33:40 itsfoss systemd[1]: Started Run anacron jobs.
-- Subject: A start job for unit anacron.service has finished successfully
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
-- 
-- A start job for unit anacron.service has finished successfully.
-- 
-- The job identifier is 3702.

La información adicional ayuda a explicar el contexto de un error o evento de registro y las posibles soluciones.

Mostrar solo errores en los registros con journalctl

Para mostrar todos los errores en la sesión actual, puede usar:

journalctl -p 3 -xb
  • -p 3:filtrar registros para la prioridad 3 (que es un error)
  • -x :proporciona información adicional sobre el registro (si está disponible)
  • b:desde el último arranque (que es la sesión actual)

También puede usar otro nivel de prioridad para obtener depuración, advertencia o incluso registros de nivel crítico. Esta tabla enumera todos los niveles de prioridad.

Clave Descripción
Flecha Mover una línea
Espacio Mover una página hacia abajo
b Subir una página
g Ir a la primera línea
G Ir a la última línea
100g Ir a la línea 100
/cadena Buscar la cadena desde la posición actual
n/N Ir a la coincidencia de búsqueda siguiente o anterior
p Salir de los registros

También puede mostrar registros para un rango de gravedad. Por ejemplo, si desea ver todos los registros de advertencia, aviso e información de la sesión actual, puede usar:

journalctl -p 4..6 -b0

También podrías haber usado warning..info en el comando anterior en lugar de 4..6 .

Verificar cuánto espacio en disco están tomando los registros

Journald recopila registros de varias fuentes y almacena registros de varios niveles, incluidos los registros de depuración. Confíe en mí, si bien la retención de registros ayuda en el análisis y la auditoría, pueden ocupar una cantidad considerable de espacio en disco.

Puede verificar cuánto espacio en disco ocupan los registros diarios con este comando journalctl:

journalctl --disk-usage

Es posible que reciba una sorpresa (o un susto) cuando vea el resultado:

[email protected]:~$ journalctl --disk-usage 
Archived and active journals take up 2.8G in the file system.

2.8 GB? Eso es mucho. Es posible que desee borrar los registros del diario.

Disfrute del análisis de registros con el comando journalctl

Hay muchas más opciones y usos del comando journalctl y posiblemente no puedo cubrirlos todos. Recomiendo leer su página de manual si desea obtener más detalles al respecto.

Creo que le he dado suficiente para usar el comando journalctl para el análisis de registros regulares. Espero que les guste este tutorial detallado sobre journald.

Si tienes sugerencias o preguntas, no dudes en dejar un comentario.


Linux
  1. Una guía para principiantes sobre los permisos de Linux

  2. Comando Linux Tee con ejemplos

  3. Comando de cabeza de Linux con ejemplos

  4. Conceptos básicos de Linux:una guía para principiantes sobre la edición de texto con vim

  5. Comando JQ en Linux con ejemplos

Comando Tr en Linux con ejemplos

Comandos de Linux - Guía completa

15 comandos ps de Linux con ejemplos

Comando de CD de Linux con ejemplos

Comando de vigilancia de Linux con ejemplos

Una guía para principiantes para navegar por el sistema de archivos de Linux

    Prioridad Código
    0 emerger
    1 alerta
    2 crítico
    3 err
    4 advertencia
    5 aviso
    6 información
    7 depurar