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.