GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo:Administrar registros del sistema con Journalctl

Introducción

En algunas de las distribuciones de Linux más nuevas, "init.d" o "rsyslogd" se ha reemplazado por un programa llamado JournalCTL. Anteriormente, los registros generalmente se encontraban en una ubicación particular para cada archivo de registro por separado, en lugar de ser fáciles de ubicar, administrar y manipular. Systemd facilitó el acceso a estos archivos de registro al centralizarlos, registrando todos los procesos del kernel y del usuario en un "diario". Journalctl es la versión más reciente de esto, lo que hace que sea aún más fácil administrar estos archivos.

En esta guía, explicaremos los conceptos básicos de journalctl, así como una breve descripción general de los usos sugeridos para el programa.

Requisitos

Debe tener una distribución de Linux con journalctl como programa de administración de registros del sistema, por ejemplo, CentOS 7.  Si no tiene un servidor, considere un servidor privado virtual SSD súper rápido de Atlantic.Net.

Cómo administrar los registros del sistema con Journalctl

Configuración de la hora del sistema

Antes de comenzar con cualquier otra cosa, se recomienda encarecidamente configurar la hora del sistema. Dado que systemd registra como un diario binario, puede registrar sus registros en UTC o en la hora local (del servidor). De forma predeterminada, systemd mostrará los resultados en la hora local. Para evitar confusiones más adelante, comprobaremos que la hora esté configurada correctamente. Systemd tiene un programa integrado llamado "timedatectl" que es para este propósito.

Primero, verifique que su zona horaria esté disponible en las opciones de zona:

timedatectl list-timezones

Esto muestra todas las zonas horarias disponibles en su servidor. Después de ubicar el que coincida con su ubicación (o la ubicación de su servidor), configúrelo:

sudo timedatectl set-timezone (zone)

Luego verificaremos para asegurarnos de que esto haya tenido efecto correctamente:

timedatectl status

La primera línea mostrará la hora correcta.

Control de acceso

usermod -a -G adm username

Reemplace "nombre de usuario" con el nombre del usuario. Este usuario recibirá el mismo acceso journalctl que el usuario root. Sin embargo, este control solo funciona cuando el almacenamiento persistente está habilitado.

Visualización básica de registros

Hay algunos comandos que se pueden emitir en este punto. El comando básico mostrará una salida de todas las entradas generales, mostrando primero las entradas más antiguas:

journalctl

Aunque esto le dará todos los archivos de registro, esto le dará, bueno, todos los archivos de registro. Esto significa que tendrá cientos o miles, o más, de líneas de registro mostradas si tiene la oportunidad. Esto es similar a lo que vería si buscara en "/var/log/messages/" en versiones anteriores.

Sesión de arranque actual

También tenemos un comando que mostrará los registros que solo ocurrieron en el arranque actual.

journalctl -b

Esto significa que no se mostrará ninguna información de sesiones de arranque anteriores.

Sesiones de arranque anteriores

Si necesita revisar los registros de sesiones de arranque anteriores, también hay una opción para eso. Algunas versiones permiten el registro de sesiones de arranque anteriores de forma predeterminada. Para asegurarse de que el suyo esté configurado para registrarlos, le sugerimos habilitar esta función. Esto se puede hacer creando el directorio

sudo mkdir -p /var/log/journal

o editando el archivo de configuración de la revista directamente

sudo nano /etc/systemd/journald.conf

En el archivo, en [Diario], configure la opción "Almacenamiento =" en "persistente" para que el registro persistente esté habilitado. Guarde y salga de este archivo y la configuración surtirá efecto en el futuro.
Una vez que se haya guardado, para ver las opciones disponibles para revisar los archivos de arranque,

journalctl --list-boots

Verá una línea para cada sesión de arranque disponible. El ID de desplazamiento es la primera columna, mientras que el ID de arranque es la segunda columna. Puede utilizar el ID de compensación o el ID de inicio para emitir el comando:

journalctl -b (offset/boot ID)

Marco de tiempo específico

En cambio, es posible que desee revisar los archivos de registro en un período de tiempo específico, que puede abarcar varias sesiones de inicio o limitarlo a una ventana de tiempo específica dentro de una sesión de inicio. Se pueden colocar las limitaciones –desde y –hasta que mostrarán solo los eventos anteriores y posteriores al registro específico.
Para todos los valores de tiempo, se debe usar el siguiente formato:

YYYY-MM-DD HH:MM:SS

Si desea ver los eventos que han ocurrido desde las 10:00 a. m. del 5 de julio de 2015, podemos hacerlo con el siguiente comando:

journalctl --since “2015-07-05 10:00:00”

Tenga en cuenta que estos se basarán en la hora del servidor o UTC, según lo que haya establecido en sus preferencias anteriormente en este tutorial.
Si se omite la fecha, el diario asumirá la fecha de hoy. Si se omite la hora, se asumirá la medianoche (00:00:00). Tampoco tiene que incluir el campo de segundos, en cuyo caso se asumirá "00" segundos.

También hay comandos amistosos, como

journalctl --since yesterday

y

journalctl --since 02:00 --until “3 hours ago”

Opciones de filtrado

Por unidad

La función más útil disponible es el filtrado de unidades. El filtrado -u brinda la opción de ver solo una "unidad" específica, lo que le permite ver cosas que han sucedido solo en referencia a un programa o sistema específico. Como siempre, puede agregar filtros para marcos de tiempo con esto.

journalctl -u nginx.service

o

journalctl -u nginx.service --since yesterday

Por proceso, usuario o ID de grupo

Si ya revisó suficiente información para recuperar el PID del proceso que está buscando, puede filtrarlo en su lugar. Esto se ejecuta con _PID

journalctl _PID=4345

Por ubicación

También está disponible el filtrado basado en ubicaciones de ruta. Si está seleccionando una ruta ejecutable, journalctl mostrará todas las entradas relacionadas con ese ejecutable. Si, por ejemplo, está buscando registros relacionados con bash,

journalctl /usr/bin/bash

Este método generalmente incluye información más detallada sobre procesos y procesos secundarios, cuando está disponible. Sin embargo, a veces esto no es una opción.

Mensajes del núcleo

Los mensajes del kernel generalmente se ubicarían en la salida de dmesg, sin embargo, también podemos usar journalctl para recuperarlos. Esto sería con el filtro -k o -dmesg.

journalctl -k

Esto mostrará los mensajes del núcleo que se han producido durante la sesión de arranque actual. Nuevamente, esto siempre se puede modificar con las opciones mencionadas anteriormente. Si desea revisar los mensajes del núcleo de la sesión de arranque anterior,

journalctl -k -b -1

Prioridad

La prioridad suele ser el método preferido para revisar los registros. Journalctl se puede usar para mostrar mensajes solo por encima de un cierto nivel de prioridad. Los siguientes son los niveles de prioridad:

0:emerge

1:alerta

2:crítico

3:error

4:advertencia

5:Aviso

6:información

7:depurar

Puede utilizar el nombre del nivel de prioridad o el número correspondiente. Si solo desea ver registros de prioridad de advertencia o superior, puede ejecutar el comando

journalctl -p warning -b

o

journalctl -p 4 -b

Campo especificado

Para ver la lista de revistas que ocurren dentro de un campo específico, use el modificador -F

journal -F fieldname

donde "fieldname" se reemplaza por el campo que está buscando. También tiene la opción de mostrar solo las entradas de registro que se ajustan a una condición específica

journalctl fieldname=value

Truncar o expandir la salida

Journalctl se puede modificar para reducir o expandir la visualización de datos de salida. De forma predeterminada, journalctl mostrará la entrada completa, lo que requiere que se desplace hacia la derecha con las teclas de flecha. En su lugar, podemos truncar esta salida, lo que mostrará puntos suspensivos para la información eliminada con la opción –no-full.

journalctl --no-full

Alternativamente, puede decirle a journalctl que muestre toda la información, independientemente de que considere que un carácter no se puede imprimir. Esto se hace con el modificador -a.

journalctl -a

Cambiar a salida estándar

journalctl --no-pager

Formatos de salida

Si está utilizando un editor de texto en las entradas del diario, como discutimos anteriormente, el diario se puede ver en otros formatos según sea necesario. Esto se puede hacer con el modificador -o y un especificador de formato.

Por ejemplo, puede leer el diario en JSON escribiendo

journalctl -b -u nginx -o json

Puede usar lo siguiente para las opciones de visualización:

gato — Muestra el campo de mensaje en sí

exportar — Formato binario para transferir o realizar copias de seguridad

json — JSON estándar, una entrada por línea

json-bonita — Formato JSON pero es más fácil de leer

json-sso — Formato JSON envuelto para que sea compatible con agregar eventos enviados por el servidor

corto — Salida de syslog predeterminada

corto-iso — Salida predeterminada que muestra marcas de tiempo de reloj de pared ISO 8601

corto-monótono — Salida predeterminada con marca de tiempo monotónica

corto-preciso — Salida predeterminada con marca de tiempo de microsegundos

detallado — Muestra todos los campos de diario para esa entrada, incluye ocultos

Monitoreo Activo de Procesos

Journalctl imita qué administradores usan la cola para monitorear. Esto se incorporó en journalctl, lo que permite el acceso a estas funciones sin tener que canalizar herramientas adicionales.

Mostrar registros recientes

La opción -n se puede utilizar para mostrar una cantidad específica de registros. Si no se incluye un número de modificación, se mostrarán diez (10) resultados de forma predeterminada.

journalctl -n

En su lugar, puede especificar cuántas entradas le gustaría ver

journalctl -n 20

Registros de seguimiento

El modificador -f se puede usar para seguir los registros a medida que se escriben.

journalctl -f

Mantenimiento del diario

Hay algunos comandos que se pueden usar para limpiar algunos registros antiguos por el bien del espacio de su disco duro.

En primer lugar, puede averiguar cuánto espacio ocupan las revistas utilizando el modificador –disk-usage.

journalctl --disk-usage

Hay dos maneras diferentes de limpiar esto. La primera es reducir el tamaño del diario en función del tamaño. Esto elimina las entradas de la más antigua a la más reciente hasta alcanzar el espacio de disco deseado.

sudo journalctl --vacuum-size-2G

La forma alternativa de reducir el tamaño del diario es hasta una fecha determinada. La opción –vacuum-time elimina cualquier entrada hasta una fecha determinada.

Para conservar solo las entradas del año pasado, puede escribir

sudo journalctl --vacuum-time-1years

Limitar el tamaño del diario

Tiene la capacidad de poner límites a la cantidad de espacio que pueden ocupar los diarios.

nano /etc/systemd/journald.conf

Estos cambios se pueden realizar con cualquiera de las siguientes modificaciones de campo

Uso máximo del sistema= Espacio máximo en disco

SystemKeepFree= Cantidad de espacio que debe mantenerse disponible

Tamaño máximo del archivo del sistema= Cuánto pueden llegar a ser los archivos diarios individuales antes de rotarlos

Uso máximo de tiempo de ejecución= Espacio máximo en disco que se puede usar dentro del almacenamiento volátil  (/ejecutar sistema de archivos)

Tiempo de ejecuciónKeepFree= La cantidad de espacio que debe mantenerse disponible para otros en almacenamiento volátil (/ejecutar sistema de archivos)

Tiempo de ejecuciónMaxFilesize= Qué tan grande puede llegar a ser un archivo diario individual en un almacenamiento volátil (dentro del sistema de archivos /run) antes de ser rotado

Gracias por seguir este tutorial. Vuelva a consultar aquí para obtener más actualizaciones y considerar un servidor de alojamiento VPS líder en el mercado de Atlantic.Net.


Linux
  1. Cómo usar Ansible para configurar el monitoreo del sistema con Prometheus

  2. ¿Cómo borrar Journalctl?

  3. Cómo usar journalctl para analizar registros en Linux

  4. Cómo monitorear los registros de autenticación del sistema en Ubuntu

  5. Cómo obtener estadísticas del sistema con node.js

Cómo verificar/reparar el sistema de archivos de Linux en el arranque

Cómo exportar los registros de sus servidores con Rsyslog en Centos 8

Registros del sistema

Lea y analice los registros de su sistema Linux con Journalctl

Administrar registros con Logrotate en Ubuntu

Journalctl:Cómo leer y editar registros de Systemd