Editado 2 hace días por ExtremeHow Equipo Editorial
DebianjournalctlRegistrosInterfaz de línea de comandosAdministración de sistemasLinuxMonitoreoCódigo abiertoSolución de problemasSoftware
Traducción actualizada 2 hace días
Debian es conocido por su estabilidad y vasto repositorio de paquetes de software. Uno de los aspectos clave para mantener un sistema estable y seguro es monitorear regularmente los logs del sistema. Los logs ayudan a los administradores de sistemas a entender lo que está sucediendo dentro del sistema. Pueden proporcionar información invaluable para solucionar problemas o entender el rendimiento del sistema.
El método tradicional de gestión de logs en sistemas Linux es mediante archivos de texto ubicados en el directorio /var/log
. Estos logs son gestionados por varios servicios como syslog
o más específicamente rsyslog
en muchos sistemas Debian. Sin embargo, con la llegada de systemd
, un nuevo sistema de logging llamado journald
empezó a usarse, y ofrece algunas mejoras y características notables en comparación con los métodos de logging tradicionales.
En este documento, discutiremos en detalle cómo puedes usar el comando journalctl
para ver y gestionar los logs de systemd
en Debian. Vamos a explorar este poderoso comando y aprender cómo puede ayudarte a gestionar efectivamente tus logs del sistema.
Antes de discutir el uso de journalctl
, es importante tener un conocimiento básico de systemd
y journald
. systemd
es un gestor de sistema y servicios para el sistema operativo Linux. Fue diseñado para proporcionar una mejor gestión de servicios y rendimiento al arrancar. journald
es el componente de logging de systemd
, que es responsable de recolectar y almacenar logs.
A diferencia de los métodos tradicionales de logging que almacenan logs como archivos de texto plano, journald
almacena los logs en formato binario, lo que puede proporcionar varios beneficios, incluyendo rendimiento mejorado, capacidades de indexación y filtrado.
El comando journalctl
se usa para consultar estos datos de logs binarios, con una amplia gama de opciones de filtrado para hacerlo lo más versátil posible.
La forma más simple de usar journalctl
es ejecutarlo sin argumentos ni opciones. Esto mostrará todas las entradas de log disponibles, comenzando con las más antiguas.
$ journalctl
El log se mostrará con una marca de tiempo y un mensaje para cada entrada. Sin embargo, dado el volumen potencialmente grande de entradas, usar una opción para ver el log diario no suele ser práctico, especialmente en sistemas que han estado en funcionamiento durante mucho tiempo.
A menudo, estarás interesado en ver solo los logs más recientes en lugar de escudriñar entradas más antiguas. Usando la bandera -n
seguida de un número, puedes especificar cuántas líneas recientes deseas ver:
$ journalctl -n 50
Este comando obtiene las últimas 50 entradas de log. El comportamiento predeterminado sin especificar un número es mostrar las últimas diez líneas:
$ journalctl -n
Otra característica útil es la capacidad de seguir los logs en tiempo real a medida que se generan, similar al comando tail -f
para logs tradicionales. Esto se puede lograr con la bandera -f
:
$ journalctl -f
Este comando mostrará nuevas entradas de log a medida que aparecen, lo cual es especialmente útil para monitorear la salida de logs durante sesiones de solución de problemas.
Uno de los aspectos poderosos de journalctl
es su capacidad para filtrar logs usando una variedad de criterios. Esto es importante cuando necesitas identificar ciertos eventos o tipos de entradas de log.
Puedes filtrar fácilmente los logs por un rango de tiempo específico usando las opciones --since
y --until
. Ambas opciones aceptan varios formatos de tiempo, incluidos tiempos relativos:
$ journalctl --since "2023-03-01 00:00:00" --until "2023-03-01 23:59:59"
También puedes usar tiempo relativo:
$ journalctl --since "1 hour ago"
Aquí, se muestran los logs de la última hora.
Ya que journald
está profundamente integrado con systemd
, que gestiona servicios como "unidades", puedes filtrar los logs para una unidad de servicio específica. Usa la bandera -u
seguida por el nombre
de la unidad:
$ journalctl -u apache2.service
Esto mostrará solo logs relacionados con el servicio Apache Web Server, lo cual es útil para diagnosticar problemas específicos del servicio.
Los logs de systemd tienen diferentes prioridades. Si solo estás interesado en los mensajes de log más serios, puedes filtrar los logs según estas prioridades:
$ journalctl -p err
Este comando solo mostrará entradas de log con un nivel de prioridad de "error" o superior, lo que puede incluir mensajes "críticos", "advertencia" y "emergencia".
Puedes combinar diferentes filtros para limitar los logs aún más precisamente. Por ejemplo, si deseas obtener mensajes de error para el servicio Apache2 durante la última hora:
$ journalctl -u apache2.service -p err --since "1 hour ago"
Esta flexibilidad te permite concentrarte rápidamente en los logs de interés.
Por defecto, journald
puede no almacenar logs persistentes entre reinicios en algunos sistemas. Esto se puede confirmar viendo los logs después de un reinicio. Si deseas habilitar el logging persistente, asegúrate de que el directorio /var/log/journal
exista. Si no está ahí, créalo:
$ sudo mkdir -p /var/log/journal $ sudo systemctl restart systemd-journald
Esto configurará journald
para almacenar logs de forma persistente a través de reinicios en formato de journal binario.
Con el tiempo, los logs de journal pueden acumularse y ocupar un espacio significativo en disco. Puedes gestionar el uso de espacio en disco con el comando journalctl
:
Puedes ver cuánto espacio ocupan los logs de journal usando la opción --disk-usage
:
$ journalctl --disk-usage
Este comando mostrará el espacio total utilizado por el log de journal.
Puedes eliminar logs antiguos usando las opciones --vacuum-time
, --vacuum-size
, o --vacuum-files
. Por ejemplo, si deseas eliminar logs de más de dos semanas, usa el siguiente comando:
$ sudo journalctl --vacuum-time=2weeks
Para retener solo una cierta cantidad de megabytes de logs (por ejemplo, 500MB), usa:
$ sudo journalctl --vacuum-size=500M
El método anterior permite que el log de journal use hasta el espacio especificado en disco.
A veces puede que necesites compartir o inspeccionar logs fuera del entorno de journal. Puedes exportar logs en varios formatos con journalctl
:
Puedes redirigir la salida del log de journal a archivos de texto plano para compartir fácilmente o archivarlos:
$ journalctl > /path/to/your/output.txt
Este comando copiará el log completo a un archivo de texto. Puedes aplicar filtros según sea necesario para limitar la salida.
Para generar logs en formato JSON, que pueden ser analizados programáticamente por varias herramientas, usa la opción -o json
:
$ journalctl -o json-pretty > /path/to/your/output.json
Este comando generará una representación JSON de los logs, facilitando el análisis programático de los datos del log.
Si deseas un respaldo binario que incluya todos los metadatos adicionales, puedes usar la opción --output-export
:
$ journalctl --output-export > /path/to/backup.journal
Esto te permite preservar toda la información específica del journal en un formato que puede ser fácilmente reimportado en systemd-journal
usando journalctl --merge
con el archivo de respaldo.
El comando journalctl
es una herramienta poderosa en los sistemas Debian donde systemd
se utiliza para gestionar logs a través de journald
. Ofrece capacidades robustas para ver, filtrar y gestionar logs del sistema, proporcionando una ventaja significativa sobre los métodos de logging tradicionales en términos de flexibilidad y eficiencia.
A través de comandos simples, journalctl
te permite ver logs cronológicamente, seguirlos en tiempo real, filtrarlos por varias condiciones y gestionar los datos del log almacenados en tu sistema. Para administradores de sistemas y usuarios, entender cómo aprovechar journalctl
puede llevar a una mejor monitorización de eventos del sistema y a una solución de problemas más rápida, contribuyendo en última instancia a mantener un entorno operativo sin problemas.
Si encuentras algo incorrecto en el contenido del artículo, puedes