Cuando gestionamos sistemas operativos Linux existen cientos de procesos que debemos revisar de forma constante para mantener los mejores niveles de servicio en el servidor o equipos cliente. En ambientes Linux encontramos Systemd el cual es un sistema innovador que nos permite recopilar información sobre los procesos en paralelo durante el arranque del sistema operativo.
Systemd está presente en la mayoría de distros Linux como Fedora, Debian, Ubuntu, OpenSuSE, Arch, RHEL, CentOS y otras más. Con Systemd tenemos la opción de administrar de forma centralizada todos los servicios y procesos del sistema. Para este análisis usaremos CentOS 7.
1. Configuración de Journald para recopilar registros de Systemd
Básicamente journald se encarga de recopilar y escribir diariamente las entradas del sistema operativo tales como mensajes de inicio, mensajes del kernel, mensajes de syslog, registros de aplicaciones, entre otras. Toda la información de Journald se aloja en la ruta /etc/systemd/journald.conf y los valores allí registrados cumplen con los requisitos locales del sistema.
Una forma simple de visualizar el contenido de dicha ruta es ejecutando la siguiente línea con el parámetro cat:
cat /etc/systemd/journald.conf
2. Habilitar Journal en el almacenamiento del disco
La mayoría de distribuciones de Linux no permiten que dentro de su sistema de arranque sean alojados mensajes persistentes con el objetivo de recopilar la información de dicho arranque.
Para habilitar este registro será necesario acceder a la ruta /var/log/journal y allí editar la línea Storage. Para acceder allí usaremos editores como nano o vi de la siguiente forma:
sudo vi /etc/systemd/journald.conf sudo nano /etc/systemd/journald.confAl acceder a dicho archivo veremos lo siguiente:
Allí modificaremos la línea Storage del valor auto al valor persistent:
Para obtener información detallada sobre cada uno de los elementos de Journal podemos ejecutar la siguiente línea:
man journald.conf
3. Configuración de la fecha y hora usando Timedatectl
Este aspecto es importante ya que al tener una configuración correcta de la fecha y hora los registros serán mucho más confiables y precisos.
Para visualizar la fecha y hora actual ejecutaremos alguna de las siguientes líneas:
timedatectl timedatectl statusEl resultado será el siguiente:
En caso de configurar una zona horaria diferente ejecutaremos la siguiente sintaxis:
sudo timedatectl set-timezone (Ciudad/País) sudo timedatectl set-time “HH:MM:SS”
4. Ver mensajes de los logs usando Journalctl
El comando journalctl es una utilidad incluida en Linux que nos permite ver el contenido de systemd. Para desplegar todos los registros sin realizar filtrado ejecutaremos la siguiente línea:
journalctlEl resultado será el siguiente:
Ahora los siguientes son los filtros que podremos usar con Journalctl:
Para esto usaremos el parámetro --list-boots:
journalctl --list-boots
Si deseamos ver los registros desde el boot actual usaremos la siguiente línea:
journalctl -bPara ver registros previos usaremos la siguiente línea:
journalctl -b -1
journalctl –utc
Adicionalmente podemos agregar filtros de la siguiente manera:
journalctl --since "2017-07-02 08:30:00" (Despliega los resultados desde la fecha indicada) journalctl --since today (Despliega los resultados del día actual) journalctl --since yesterday (Despliega los resultados desde el día anterior)
- Ver eventos por Unidades:
journalctl -u (servicio)
- Ver eventos por procesos:
journalctl _PID=(# PID) , journalctl _PID=(PID) --since today , journalctl _PID=(PID) --since yesterday
- Ver eventos por usuario o ID de grupo:
journalctl _UID=1000
- Ver eventos generados por un archivo en particular:
journalctl /usr/bin/bash
- Ver eventos por prioridad: journalctl -p (Código o termino), las opciones disponibles son:
0 – emerg, 1 – alert, 2 – crit, 3 – err, 4 – warning, 5 – notice, 6 – info, 7 – debug
De esta forma Journalctl ofrece múltiples soluciones prácticas para llevar a cabo esta tarea.