Cómo instalar Syslog/Rsyslog en Docker - Servidor de logs centralizado en Docker en Raspberry Pi

Syslog | Rsyslog | Raspberry Pi | Docker

Syslog/Rsyslog: Servidor de logs centralizado en Docker en Raspberry Pi

Recopila logs de múltiples dispositivos en un único servidor. Routers, servidores, contenedores. Protocolo syslog estándar. UDP/TCP en puerto 514. Ligero. Perfecto para Raspberry Pi.

¿Qué es Syslog/Rsyslog?


Syslog es un protocolo estándar para recopilar y gestionar logs (registros) del sistema desde múltiples dispositivos en un servidor central. Rsyslog es la implementación moderna de syslog. Imagina: tienes routers, servidores, computadoras, NAS, y contenedores Docker dispersos en tu red. Sin syslog, debes SSH en cada máquina para revisar logs. Con syslog centralizado, todos los logs llegan a un único servidor (tu Raspberry Pi).

¿Por qué en Raspberry Pi? Rsyslog es ultra-ligero. Consume mínimos recursos. Tu Raspberry Pi puede actuar como colector central de logs para toda tu red sin problema. Es perfecto para homelabs, pequeñas empresas, o cualquier ambiente con múltiples máquinas.

Características: Protocolo UDP/TCP en puerto 514. Organiza logs por IP del dispositivo. Soporte para diferentes dispositivos sin cambiar configuración. Plantillas rsyslog customizables. Filtrado por severity level. Rotación de logs automática. Gratuito, open source.

Caso de uso perfecto: Tu homlab tiene 10+ contenedores Docker, un router, un NAS. Todos generan logs. Centraliza todo en rsyslog en tu Raspberry Pi. Una fuente única de verdad para troubleshooting.

Características principales

Servidor central

Recopila logs de múltiples dispositivos en un único lugar.

UDP/TCP

Protocolo syslog estándar en puerto 514. Amplio soporte.

Organización por IP

Logs organizados automáticamente por IP del dispositivo origen.

Filtrado por severity

Separa logs críticos de información. Prioriza lo importante.

Plantillas customizables

Rsyslog permite lógica compleja para procesar/enrutar logs.

Rotación automática

Archiva logs antiguos. Evita llenar el disco.

ARM compatible

Funciona en Raspberry Pi. Imagen Docker Alpine optimizada.

Lightweight

Consume mínimos recursos. Perfecto para Raspberry Pi.

Requisitos del sistema

  • Raspberry Pi (cualquier modelo: Pi 3, 4, 5, Zero, etc)
  • Docker instalado en Raspberry Pi
  • 256 MB - 512 MB RAM (muy ligero)
  • 1-5 GB espacio disco (depende de volumen logs)
  • Puerto 514 (UDP/TCP)
  • Docker Compose (opcional pero recomendado)
Arquitectura ARM: La imagen se construye en Alpine para máxima compatibilidad con ARM de Raspberry Pi.

Instalación en Raspberry Pi

Paso 1: Crear estructura de carpetas

mkdir -p ~/syslog cd ~/syslog mkdir -p rsyslog-logs config

Paso 2: Crear archivo rsyslog.conf

cat > config/rsyslog.conf << 'EOF' # Cargar módulos para escuchar por UDP y TCP module(load="imudp") input(type="imudp" port="514") module(load="imtcp") input(type="imtcp" port="514") # Plantilla: organizar logs por IP del dispositivo $template RemoteLogs,"/var/log/%FROMHOST-IP%/%PROGRAMNAME%.log" # Aplicar plantilla a todos los logs *.* ?RemoteLogs & ~ EOF

Paso 3: Crear Dockerfile para ARM

cat > Dockerfile << 'EOF' FROM alpine:latest RUN apk add --no-cache rsyslog EXPOSE 514/udp EXPOSE 514/tcp COPY config/rsyslog.conf /etc/rsyslog.conf ENTRYPOINT ["rsyslogd", "-n"] EOF

Paso 4: Crear docker-compose.yml

cat > docker-compose.yml << 'EOF' version: '3.8' services: syslog: build: context: . dockerfile: Dockerfile container_name: rsyslog-server restart: unless-stopped ports: - "514:514/tcp" - "514:514/udp" volumes: - ./rsyslog-logs:/var/log - ./config/rsyslog.conf:/etc/rsyslog.conf:ro environment: - TZ=Europe/Madrid EOF

Paso 5: Iniciar servidor syslog

docker compose up -d # Verificar que está corriendo docker ps # Deberías ver rsyslog-server # Ver logs del servidor docker logs rsyslog-server

Configurar dispositivos clientes para enviar logs

Opción 1: Contenedor Docker

En tu docker-compose.yml de otros contenedores:

services: mi-app: image: mi-imagen:latest logging: driver: syslog options: syslog-address: udp://IP_RASPBERRY_PI:514 tag: {{.Name}}

Opción 2: Linux/Raspberry Pi (en otro Pi)

Edita /etc/rsyslog.conf:

# Agregar al final del archivo *.* @@IP_RASPBERRY_PI:514 # @@ = TCP (más confiable) # @ = UDP (más rápido, menos confiable)

Luego reinicia rsyslog:

sudo systemctl restart rsyslog

Opción 3: Router/Dispositivo de red

Depende del dispositivo. Generalmente en Settings → System Logs → Syslog Server:

# Syslog Server: 192.168.1.100 (IP de tu Raspberry Pi) # Syslog Port: 514 # Protocol: UDP o TCP

Primeros pasos y verificación

1. Verificar que el servidor escucha

netstat -ultn | grep 514 # Deberías ver 514 escuchando (LISTEN)

2. Enviar un mensaje de prueba

logger -n IP_RASPBERRY_PI -P 514 "Prueba desde este dispositivo"

3. Revisar logs recibidos

ls -la ~/syslog/rsyslog-logs/ # Deberías ver carpetas por IP de dispositivos cat ~/syslog/rsyslog-logs/192.168.1.50/sshd.log # Ver logs de un dispositivo específico

4. Monitorear logs en vivo

docker exec rsyslog-server tail -f /var/log/*/syslog.log # Ver nuevos logs a medida que llegan

5. Configurar rotación de logs

Crea archivo logrotate en Raspberry Pi:

sudo cat > /etc/logrotate.d/syslog-remote << 'EOF' /home/pi/syslog/rsyslog-logs/*/*.log { rotate 30 daily missingok notifempty compress delaycompress } EOF

Casos de uso

  • Homlab: Centraliza logs de 10+ contenedores Docker en tu Raspberry Pi.
  • Pequeña empresa: Recopila logs de servidores, routers, equipos de oficina.
  • NAS + Raspberry Pi: Envía logs del NAS a syslog central en Pi.
  • Network devices: Router, switch, AP WiFi envían logs al servidor central.
  • Troubleshooting: Centraliza logs para debugging cuando algo falla en red.
  • Auditoría: Guarda histórico de todos los eventos de todos los dispositivos.

Gestión y mantenimiento

Ver logs del servidor syslog

docker logs rsyslog-server

Reiniciar servidor

docker compose restart syslog

Actualizar configuración sin restart

# Edita config/rsyslog.conf docker exec rsyslog-server rsyslogd -f /etc/rsyslog.conf -N1 # Verifica sintaxis. Si OK: docker compose restart syslog

Backup de logs

tar czf syslog-backup-$(date +%Y%m%d).tar.gz ~/syslog/rsyslog-logs/ # Comprime y respalda todos los logs

Limpiar logs antiguos (30 días)

find ~/syslog/rsyslog-logs -type f -name "*.log" -mtime +30 -delete

Ver estadísticas de consumo

du -sh ~/syslog/rsyslog-logs/ # Tamaño total de logs find ~/syslog/rsyslog-logs -type f | wc -l # Cantidad total de archivos log

Troubleshooting común

Los logs no llegan al servidor

  1. Verifica puerto 514 está abierto: netstat -ultn | grep 514
  2. Verifica firewall en Raspberry Pi: sudo ufw allow 514
  3. Verifica cliente intenta conectar: logger -n 192.168.1.X -P 514 "test"
  4. Revisa logs del container: docker logs rsyslog-server

Disk lleno por logs

  1. Reduce tiempo de rotación en logrotate (diario → horario)
  2. Filtra logs verbosos en rsyslog.conf (ej: ignorar ciertas apps)
  3. Aumenta compresión de logs antiguos

Container no inicia

docker compose logs syslog # Ver error específico

Permisos denegados en /var/log

chmod 777 ~/syslog/rsyslog-logs

Comparativa con alternativas

vs Loki (Grafana)

Syslog gana: Más simple, estándar, bajo overhead. Loki gana: UI gráfico, integración Grafana.

vs ELK (Elasticsearch)

Syslog gana: Ultra-ligero, Raspberry Pi lo soporta. ELK gana: Más potente, búsqueda avanzada.

vs Semalog

Syslog gana: Open source, sin dependencias. Semalog gana: Más features modernas.

Mejor para: Raspberry Pi como servidor central. Simple, estándar, bajo overhead. Perfecto para homelabs.

Comentarios

Entradas populares de este blog

Cómo Instalar y configurar SERVIDOR VPN WIREGUARD en MIKROTIK 🔐 #VPN #Wireguard #Mikrotik #RouterOS

Cómo instalar y configurar DSM SYNOLOGY 7.2.2 en PC | Guía completa, instalación, RAID 1, SMB

Cómo INSTALAR y CONFIGURAR OpenVPN en MIKROTIK. Guía completa paso a paso.