Skip to content

Latest commit

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Graylog Docker Stack

Centralización de logs de nivel producción con Graylog 6 + OpenSearch + MongoDB, lista para desplegar con Docker Compose.

La pieza que le falta a cualquier stack de observabilidad: métricas (Prometheus/Zabbix) te dicen que algo anda mal; los logs te dicen por qué. Graylog los recolecta, indexa y hace buscables en segundos.

Arquitectura

Fuentes de logs ┌───────────────┐
┌─────────────────┐ │ │
│ Syslog (514/udp)│───────────────▶│ │
├─────────────────┤ │ Graylog 6 │ ┌────────────┐
│ GELF (12201) │───────────────▶│ │────▶│ OpenSearch │ (índices)
├─────────────────┤ │ web :9000 │ └────────────┘
│ Docker (gelf │───────────────▶│ │
│ driver) │ └──────┬────────┘ ┌────────────┐
└─────────────────┘ └─────────────▶│ MongoDB │ (config)
└────────────┘

Quick start

cp .env.example .env
# Generar los dos secretos obligatorios:echo"GRAYLOG_PASSWORD_SECRET=$(openssl rand -hex 32)">> .env
echo"GRAYLOG_ROOT_PASSWORD_SHA2=$(echo -n 'tu-password-admin'| sha256sum | cut -d'' -f1)">> .env
docker compose up -d
# Web: http://localhost:9000 (admin / tu-password-admin)

Inputs preconfigurados (activarlos desde System → Inputs)

InputPuertoPara qué
Syslog UDP5514routers, switches, Linux (rsyslog), equipos de red
GELF TCP12201Docker (log driver nativo), apps con librerías GELF
Raw/Plaintext TCP5555cualquier cosa que pueda mandar texto por TCP

Enviar logs desde...

Un Linux con rsyslog (una línea en /etc/rsyslog.d/90-graylog.conf):

*.* @IP_DEL_GRAYLOG:5514;RSYSLOG_SyslogProtocol23Format

Contenedores Docker (log driver GELF — los logs del container van directo):

logging:
driver: gelfoptions:
gelf-address: "udp://IP_DEL_GRAYLOG:12201"tag: "{{.Name}}"

Windows: agente NXLog o Winlogbeat → sidecar de Graylog.

Decisiones de diseño

  • OpenSearch single-node con discovery.type=single-node — un cluster ES de 3 nodos para una PyME es incendiar RAM al pedo
  • Heap acotada (ES_JAVA_OPTS=-Xms1g -Xmx1g) — OpenSearch sin límite de heap se come todo el RAM del host; ajustar según el servidor
  • Rotación de índices configurada (índice por día, retención 30 días) — sin rotación, OpenSearch llena el disco en semanas
  • Puertos mapeados no estándar (5514) — el 514 real requiere privilegios; el mapeo lo resuelve sin correr como root
  • MongoDB solo para config — los logs viven en OpenSearch; Mongo guarda usuarios, dashboards y streams

Retención y crecimiento

Estimación práctica: ~1 KB por línea de log indexada. Un servidor típico genera 50-200 MB/día → con 30 días de retención y 10 servidores: ~15-60 GB de disco. Planificar el volumen de OpenSearch acorde.

Integración con el resto de mi stack

  • Métricas: infra-monitoring-stack (Prometheus)
  • Alertas: Graylog puede disparar notificaciones por email/webhook igual que Alertmanager
  • El combo completo para un cliente: Zabbix o Prometheus (métricas) + Graylog (logs) + mi zabbix-inventory-reporter para el informe mensual

Licencia

MIT

About

Graylog 6 + OpenSearch + MongoDB con Docker Compose: centralización de logs lista para producción con inputs preconfigurados y retención.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors