Tienda Wifi

Tienda Wifi
CiudadWireless es la tienda Wifi recomendada por elhacker.NET

Entradas Mensuales

Síguenos en:

Canal Oficial Telegram de elhacker.NET Grupo Facebook elhacker.NET Twitter elhacker.NET Canal Youtube elhacker.NET Comunidad Steam: Grupo elhacker.NET Mastodon

Entradas populares

PostHeaderIcon journalctl; analizar logs del sistema en Linux


Análisis de los logs, que todo sysadmin debe conocer, y para lograr hacer esto de forma simple te muestro el comando journalctl con varios ejemplos. Cómo usar Journalctl para ver y manipular los registros de Systemd



Cómo analizar los logs del sistema en Linux con journalctl

La llegada de systemd a la mayoría de distribuciones de GNU/Linux, como sistema de inicio reemplazando a init, ha supuesto una nueva manera de ver de los mensajes del sistema, como pueden ser los del kernel y los diferentes servicios o procesos.

Journalctl es ahora la herramienta más utilizada para acceder a los registros del sistema y en esta entrada vamos a ver como podemos echarles un vistazo sin morir en el intento, o lo que es lo mismo, aplicando unos cuantos filtros que nos permitirán separar el polvo de la paja.

Algunas de las ventajas más convincentes de systemd son las que se relacionan con el proceso y registro del sistema. Al usar otros sistemas, los registros suelen estar dispersos por todo el sistema, son manejados por diferentes demonios y herramientas, y puede ser bastante difícil de interpretar cuando abarcan varias aplicaciones. Systemd intenta resolver estos problemas al proporcionar una solución de administración centralizada para registrar todos los procesos del kernel y del usuario. El sistema que recopila y administra estos registros se conoce como diario.



El diario se implementa con el demonio journald, que gestiona todos los mensajes producidos por el kernel, initrd, servicios, etc. En esta guía, veremos cómo usar la utilidad journalctl, que puede usarse para acceder y manipular los datos que se encuentran dentro del diario.

La forma básica de acceder a los registros del sistema es:

journalctl

que viene a equivaler al viejo «cat /var/log/messages» y nos permite acceder a todos los logs sin filtrar (en cualquier momento podemos salir de esa pantalla utilizando la tecla «q»)

Configurar la hora del sistema

Una de las ventajas de usar un diario binario para el registro es la posibilidad de ver los registros en hora UTC o local libremente. systemd mostrará los resultados en hora local de manera predeterminada.

Debido a esto, antes de comenzar con el diario, nos aseguraremos de que la zona horaria esté configurada correctamente. El paquete de systemd realmente viene con una herramienta llamada timedatectl que puede ayudar con esto.

Primero, consulte qué zonas horarias están disponibles con la opción list-timezones:

timedatectl list-timezones

Esto mostrará la lista de zonas horarias disponibles en su sistema. Cuando encuentre la que coincida con la ubicación de su servidor, puede configurarla usando la opción set-timezone:

sudo timedatectl set-timezone zone

Para asegurarse de que su máquina esté usando la hora correcta actual, utilice el comando timedatectl solo o con la opción status. En la pantalla, se mostrará lo mismo:

timedatectl status
      Local time: Thu 2015-02-05 14:08:06 EST
  Universal time: Thu 2015-02-05 19:08:06 UTC
        RTC time: Thu 2015-02-05 19:08:06
       Time zone: America/New_York (EST, -0500)
     NTP enabled: no
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

La primera línea debe mostrar la hora correcta.

Ejemplos

La llegada de systemd a la mayoría de distribuciones de GNU/Linux, como sistema de inicio reemplazando a init, ha supuesto una nueva manera de ver de los mensajes del sistema, como pueden ser los del kernel y los diferentes servicios o procesos.

Saber la versión

journalctl --version

Ver logs en tiempo real

journalctl -f

En tiempo real de una servicio en concreto: 

journalctl -f  sshd.service

Ver logs del kernel

journalctl -k

Ver logs del boot actual

journalctl -b

journalctl --list-boots 

 Por ejemplo, para obtener los mensajes de hace cinco arranques, puede escribir lo siguiente:

journalctl -k -b -5 

Ver logs más recientes

journalctl -r

Ver logs de un servicio

journalctl -u sshd.service

Resulta extremadamente útil cuando se aprovecha la capacidad del diario para intercalar registros de varias unidades. Por ejemplo, si su proceso de Nginx está conectado a una unidad PHP-FPM para procesar contenido dinámico, puede combinar las entradas de ambos en orden cronológico especificando ambas unidades:

journalctl -u nginx.service -u php-fpm.service --since today 

Ver una cantidad n de registros

Para mostrar una cantidad determinada de registros, puede usar la opción -n, que funciona exactamente igual que tail -n.

Por defecto, se mostrarán las 10 entradas más recientes:

10 últimos registros
journalctl -n
50 últimos registros

journalctl -n 50


Ver el log de un PID 

El diario systemd tiene muchos campos que pueden usarse para filtrar. Algunos de estos son pasados desde el proceso que se está registrando y otros son aplicados por journald usando la información que recopila del sistema en el momento del registro.

journalctl _PID=3475

Ver el log de un usuario

journalctl _UID=1000

Ver el log de un programa

journalctl _COMM=vmtoolsd

Ver logs por fecha y hora

Ver los logs desde el día de ayer hasta hoy a las 10:00 horas.

journalctl --since 'yesterday' --until '10:00'

Ver logs de los últimos 30 minutos:

journalctl --since '30 min ago'

Ver registros desde hoy

journalctl --since today

Ver registros desde ayer a hoy

journalctl --since yesterday --until now

En un rango de fechas específico

journalctl --since='2021-04-01 00:01' --until='2021-04-07 00:01'

 Podemos ver los logs de un servicio en particular entre fechas

journalctl -u sshd.service --since='2021-04-01 00:01' --until='2021-04-07 00:01'

  • journalctl --since "1 hour ago"
  • journalctl --since "30 minutes ago"
  • journalctl --since "30 minutes ago"
  • journalctl --since "1 day ago"
  • journalctl --since "1 wheek ago"
  • journalctl --since "1 week ago"
  • journalctl --since "1 month ago"
  • journalctl --since "1 year ago"
  • journalctl --since "1 year ago"

Ver logs por prioridad que le asigna el sistema

Los mensajes se clasifican en función de la prioridad y tienen 7 niveles diferentes: en inglés
  • «emerg» (0)
  • »alert» (1)
  • «crit» (2)
  • «err» (3)
  • «warning» (4)
  • «notice» (5)
  • »info» (6)
  • «debug» (7)
journalctl -p  1

En orden de mayor a menor prioridad, estos son, en español

  • 0: emergencia
  • 1: alerta
  • 2: crítico
  • 3: error
  • 4: advertencia
  • 5: aviso
  • 6: información
  • 7: depuración

Un filtro que suele interesar a los administradores de sistemas es el de prioridad de mensaje. Aunque a menudo es útil registrar información a un nivel muy verboso, cuando realmente se asimila la información disponible, los registros de baja prioridad pueden distraer y confundir.

Puede usar journalctl para mostrar solo mensajes de una prioridad especifica o superior usando la opción -p. Esto le permite filtrar mensajes de menor prioridad.

Por ejemplo, para mostrar solo las entradas registradas en el nivel de error o superior, puede escribir lo siguiente:

journalctl -p err -b 

Ver log de los disco duro

journalctl /dev/sda

 Ver el espacio que están ocupando los diferentes logs

journalctl --disk-usage

En el caso de que ese valor fuera muy grande lo podemos limitar en el archivo /etc/systemd/journald.conf.

Enviar resultado a un archivo

journalctl -f -u sshd.service > resultado.txt

Ver los registros de inicio con identificadores numéricos

journalctl --list-boots


Formatos de resultado

Si está procesando las entradas del diario, como se mencionó anteriormente, es probable que le resulte más fácil analizar los datos si están en un formato más fácil de usar. Afortunadamente, el diario puede mostrarse en varios formatos según sea necesario. Puede hacerlo usando la opción -o con un especificador de formato.

Por ejemplo, puede mostrar las entradas del diario en JSON escribiendo lo siguiente:

journalctl -b -u nginx -o json 

Eso es útil para el análisis sintáctico con utilidades. Puede usar el formato json-pretty para obtener un mejor manejo de la estructura de datos antes de transmitirla al consumidor JSON:

journalctl -b -u nginx -o json-pretty 


Se pueden usar los siguientes formatos para la visualización:

  • cat: Muestra solo el campo de mensaje.
  • export: Formato binario adecuado para transferir o hacer copias de seguridad.
  • json: JSON estándar con una entrada por línea.
  • json-pretty: JSON formateado para una mejor legibilidad humana
  • json-sse: Resultado formateado JSON envuelto para hacer que el evento enviado por servidor sea compatible
  • short: El resultado de estilo syslog predeterminado
  • short-iso: El formato predeterminado aumentado para mostrar las marcas de tiempo del reloj de pared ISO 8601.
  • short-monotonic: El formato predeterminado con marcas de tiempo monotónicas.
  • short-precise: El formato predeterminado con precisión de microsegundos.
  • verbose: Muestra todos los campos del diario disponibles para la entrada, incluidos los que suelen estar ocultos internamente.

 

Eliminar registros antiguos

Si desea reducir su diario, puede hacerlo de dos distintas formas (disponibles en la versión 218 y posterior de systemd).

Si usa la opción --vacuum-size, puede reducir su diario indicando un tamaño. Esto eliminará las entradas antiguas hasta que el espacio total del diario ocupado en el disco sea del tamaño solicitado:

sudo journalctl --vacuum-size=1G

Otra forma de reducir el diario es proporcionar un tiempo límite con la opción --vacuum-time. Cualquier entrada que sobrepase ese límite de tiempo será eliminada. Esto le permite mantener las entradas que se han creado después de un tiempo específico.

Por ejemplo, para guardar las entradas del último año, puede escribir lo siguiente:

sudo journalctl --vacuum-time=1years


Limitar tamaño

Puede configurar su servidor para que ponga límites sobre cantidad de espacio que puede ocupar el diario. Puede hacer esto editando el archivo /etc/systemd/journald.conf

Puede usar los siguientes elementos para limitar la expansión del diario:

  • SystemMaxUse=: especifica el espacio máximo de disco que puede usar el diario en el almacenamiento persistente.
  • SystemKeepFree=: especifica la cantidad de espacio que el diario debe dejar libre al añadir entradas del diario al almacenamiento persistente.
  • SystemMaxFileSize=: controla el tamaño que pueden alcanzar los archivos individuales del diario en el almacenamiento persistente antes de rotar.
  • RuntimeMaxUse=: especifica el espacio máximo de disco que puede usarse en el almacenamiento volátil (dentro del sistema de archivos /run).
  • RuntimeKeepFree=: especifica la cantidad de espacio que debe reservarse para otros usos al escribir datos en el almacenamiento volátil (dentro del sistema de archivos /run).
  • RuntimeMaxFileSize=: especifica la cantidad de espacio que puede ocupar un archivo de diario individual en el almacenamiento volátil (dentro del sistema de archivos /run) antes de rotar.

Al establecer estos valores, puede controlar la forma en que journald utiliza y preserva el espacio en su servidor. Tenga en cuenta que SystemMaxFileSize y RuntimeMaxFileSize orientarán los archivos para llegar a los límites indicados. Es importante recordar esto al interpretar el recuento de archivos después de una operación vaciado.


0 comentarios :

Publicar un comentario

Los comentarios pueden ser revisados en cualquier momento por los moderadores.

Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.

Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.