Cómo montar un servidor Syslog Centralizado con Docker en tu Raspberry Pi

¿Tienes en casa un router, un switch, un NAS o varios contenedores Docker y estás cansado de entrar uno a uno para ver qué falla cuando hay un problema? La solución definitiva es centralizar los logs.

En este tutorial te voy a enseñar cómo transformar tu Raspberry Pi en un servidor Syslog universal usando Docker. En menos de 5 minutos, tendrás un sistema capaz de recibir, organizar por IP y almacenar en tiempo real todos los eventos de tu red local. ¡Vamos a lío!

¿Por qué usar Syslog y Docker?

  • Persistencia: Si un contenedor o un router se reinicia o se corrompe, sus logs de error ya están a salvo en tu almacenamiento local.

  • Organización: Adiós al caos. El servidor creará automáticamente carpetas separadas para cada dirección IP que envíe datos.

  • Ligereza: Usaremos una infraestructura basada en Alpine Linux, lo que significa que el consumo de RAM y CPU en tu Raspberry Pi será prácticamente inexistente.

Paso 1: Preparar el archivo de configuración (rsyslog.conf)

Rsyslog necesita saber qué «puertas» abrir y cómo organizar la información que le llega. Para ello, crea una carpeta en tu Raspberry Pi (por ejemplo, en ./syslog) y dentro crea un archivo llamado rsyslog.conf con el siguiente contenido:

Fragmento de código
 
# Cargar módulos para escuchar por UDP y TCP en el puerto estándar
module(load="imudp")
input(type="imudp" port="514")

module(load="imtcp")
input(type="imtcp" port="514")

# Regla mágica: Organizar los logs en carpetas según la IP del dispositivo
$template RemoteLogs,"/var/log/%FROMHOST-IP%/%PROGRAMNAME%.log"
*.* ?RemoteLogs
& ~

Nota técnica: Hemos configurado la plantilla usando %FROMHOST-IP%. Esto es clave en redes domésticas, ya que si tus dispositivos no tienen un DNS local configurado, los identificará limpiamente por su dirección IP (ej. 192.168.1.1).

Paso 2: El despliegue con Docker Compose

Para asegurar la máxima compatibilidad con la arquitectura ARM de la Raspberry Pi, lo más limpio y eficiente es construir una imagen personalizada «on-the-fly» basada en Alpine.

En la misma carpeta, crea tu archivo docker-compose.yml:

YAML
 
services:
  syslog:
    build: 
      context: .
      dockerfile: inline
    inline: |
      FROM alpine:latest
      RUN apk add --no-cache rsyslog
      EXPOSE 514/udp 514/tcp
      ENTRYPOINT ["rsyslogd", "-n"]
    container_name: rsyslog-server
    ports:
      - "514:514/tcp"
      - "514:514/udp"
    volumes:
      - ./rsyslog.conf:/etc/rsyslog.conf
      - ./syslog_externos:/var/log
    restart: unless-stopped

Lanzar el servidor

Una vez creados los dos archivos, abre la terminal en esa ruta y ejecuta:

Bash
 
docker compose up -d

Docker compilará la imagen en un par de segundos y levantará el servicio. Puedes verificar que está corriendo y esperando datos con el comando docker logs -f rsyslog-server.

Paso 3: Configurar tus dispositivos externos (Ejemplo: Router o AP)

Con el servidor escuchando en la IP de tu Raspberry Pi (por ejemplo, 192.168.1.243), es hora de enviarle datos.

Ve al panel de administración de tu router, punto de acceso o NAS, busca la sección de «Logs del sistema externos» o «Remote Syslog» y configúralo de la siguiente manera:

  • Servidor de logs / IP: 192.168.1.243 (La IP de tu RPi).

  • Puerto: 514

  • Protocolo: UDP (Es el estándar recomendado para no penalizar el rendimiento del cliente).

  • Nivel de registro: Si estás buscando un fallo concreto, selecciona 7 - Debug. Para el día a día, con 5 - Notice o 6 - Informational bastará.

Paso 4: Verificar que todo funciona

Si vuelves a la terminal de tu Raspberry Pi y revisas el contenido de la carpeta que mapeamos en el volumen, ocurrirá la magia:

Bash
 
ls -R ./syslog_externos

Verás cómo rsyslog ha creado de forma automática una estructura limpia de directorios. Por ejemplo:

  • ./syslog_externos/192.168.1.1/ (Los logs de tu router).

  • ./syslog_externos/192.168.1.243/ (Los logs locales o de tus contenedores).

Para ver los mensajes que entran en tiempo real, simplemente lanza un:

Bash
 
tail -f ./syslog_externos/192.168.1.1/syslog.log

Conclusión y buenas prácticas

¡Ya lo tienes! Un centro de control de logs robusto, escalable y bajo tu propio tejado.

Un último consejo: Si vas a mantener el nivel de registro en Debug, ten en cuenta que los archivos de texto crecerán rápidamente. Es muy recomendable que configures logrotate en el sistema de tu Raspberry Pi o limites el tamaño de los volúmenes para evitar sorpresas de almacenamiento lleno en el futuro.

¿Tienes alguna duda con la configuración de algún dispositivo concreto? ¡Te leo en los comentarios!


Categories:

,

Comments

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies