En este post, vamos a implementar en nuestro escenario un sistema de recolección de log mediante journald. Para ello debes, implementar un sistema de recolección de log mediante el paquete systemd-journal-remote, o similares.

Máquina Distribución IP
ALFA Debian 11 172.22.201.46
BETA Debian 11 172.16.0.200
CHARLIE Debian 11 192.168.0.2
DELTA Debian 11 192.168.0.6

.

Preparación del escenario

Lo primero que deberemos hacer es instalar en cada una de las máquinas de nuestro escenario, incluyendo los contenedores de LXC, el paquete systemd-journal-remote:

  • ALFA, CHARLIE y DELTA
apt install systemd-journal-remote
  • BRAVO
dnf install systemd-journal-remote

Configuración de journald EN ALFA

En esta máquina, vamos a configurar el servicio systemd-journal-remote para que recoga los logs de las demás máquinas. Al no hacer uso del https, vamos a desactivarlo en el fichero /lib/systemd/system/systemd-journal-remote.service:

sudo grep --color -E -- '--listen-http' /lib/systemd/system/systemd-journal-remote.service
sudo sed -i 's/--listen-https=-3/--listen-http=-3/g' /lib/systemd/system/systemd-journal-remote.service
sudo grep --color -E -- '--listen-http' /lib/systemd/system/systemd-journal-remote.service

Reiniciamos el demonio:

systemctl daemon-reload

Activamos el servicio:

systemctl enable systemd-journal-remote.service
systemctl enable systemd-journal-remote.socket

Una vez comprobado que nuestro servicio está activo:

systemctl status systemd-journal-remote.service
systemctl status systemd-journal-remote.socket

Solo nos resta por cerciorarnos que el directorio /var/log/journal/remote exista y tenga los permisos adecuados. De no ser así, lo creamos y le damos los permisos adecuados:

mkdir /var/log/journal/remote
chown systemd-journal-remote:systemd-journal-remote /var/log/journal/remote

Como podemos ver, en mi caso, el directorio existe y con los permisos que le pertenece.

Configuración de los servidores Bravo, Charlie y Delta

Tras la configuración anterior, el siguiente paso es configurar los clientes para que envíen sus logs a la máquina ALFA. Por ello, vamos a crear un usuario en bravo, charlie y delta que se llame systemd, perteneciente al grupo systemd-journal-upload y al que le desactivaremos el login.

Algo a tener en cuenta será que el usuario systemd tendrá el directorio home en /run/systemd, por lo que deberemos crearlo y darle los permisos adecuados:

#BRAVO
sudo adduser --system --home-dir /run/systemd --no-create-home --user-group systemd-journal-upload

#CHARLIE y DELTA
sudo adduser --system --home /run/systemd --no-create-home --disabled-login --group systemd-journal-upload

Una vez configurado el usuario en cada una de los clientes, vamos a configurar el fichero /etc/systemd/journal-upload.conf para que estos mismos clientes envíen sus logs a la máquina ALFA:

URL=http://alfa.mariajesus.gonzalonazareno.org:19532

Activamos el servicio systemd-journal-upload en cada uno de los clientes:

#BRAVO, CHARLIE Y DELTA
sudo systemctl restart systemd-journal-upload.service

Para finalizar, podemos comprobar que en el directorio /var/log/journal/remote de la máquina ALFA, se han creado los ficheros generados por los logs de los clientes:

Haciendo uso del comando journalctl, podemos ver los logs de cada cliente:

#BRAVO
sudo journalctl --file /var/log/journal/remote/remote-172.16.0.200.journal
#CHARLIE
sudo journalctl --file /var/log/journal/remote/remote-192.168.0.2.journal
#DELTA
sudo journalctl --file /var/log/journal/remote/remote-192.168.0.3.journal