WindowsMacSoftwareConfiguraciónSeguridadProductividadLinuxAndroidRendimientoConfiguraciónApple Todo

Cómo usar journalctl para logs en Debian

Editado 2 hace días por ExtremeHow Equipo Editorial

DebianjournalctlRegistrosInterfaz de línea de comandosAdministración de sistemasLinuxMonitoreoCódigo abiertoSolución de problemasSoftware

Cómo usar journalctl para logs en Debian

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.

Introducción a JournalCTL y SystemD

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.

Uso básico de journalctl

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.

Ver los logs más recientes

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

Seguir los logs en tiempo real

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.

Filtrando el log

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.

Filtrar por tiempo

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.

Filtrando por unidad

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.

Filtrar por prioridad

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".

Combinación de filtros

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.

Log persistente

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.

Limpiar y gestionar logs de Journal

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:

Comprobar el uso de disco del log de journal

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.

Eliminar logs antiguos

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.

Exportar y guardar logs

A veces puede que necesites compartir o inspeccionar logs fuera del entorno de journal. Puedes exportar logs en varios formatos con journalctl:

Exportar a archivos de texto

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.

Exportar a JSON

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.

Crear un respaldo binario del journal

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.

Conclusión

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


Comentarios