Files
suite_logs/docker-compose.yml
T
egutierrez 65673636c4 refactor: simplificar docker-compose a stack esencial
Simplificación del stack de observabilidad manteniendo solo los servicios esenciales:

Servicios activos:
- Alloy (puertos mínimos: 12345, 9999, 3101)
- Prometheus (métricas)
- Loki (logs)
- Grafana (visualización)

Servicios comentados:
- Tempo (trazas distribuidas)
- Promtail (reemplazado por Alloy)
- Node Exporter (métricas del host)
- cAdvisor (métricas de contenedores)

Cambios:
- Reducción de puertos de Alloy (eliminados puertos de trazas: OTLP, Jaeger, Zipkin)
- Actualización de dependencias de Alloy y Grafana
- Limpieza de volúmenes no utilizados (tempo_data, promtail_positions)
- Grafana ahora solo depende de Prometheus y Loki

El stack simplificado mantiene capacidad completa de métricas y logs con menor complejidad operacional.
2026-03-23 20:00:57 +01:00

167 lines
4.6 KiB
YAML

services:
# Prometheus para métricas
prometheus:
image: prom/prometheus:latest
container_name: prometheus
ports:
- "${PROMETHEUS_PORT:-9090}:9090"
volumes:
- ./config/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.enable-lifecycle'
- '--web.enable-admin-api'
- '--web.enable-remote-write-receiver'
user: "65534:65534"
networks:
- monitoring
restart: always
# Loki para logs
loki:
image: grafana/loki:latest
container_name: loki
ports:
- "${LOKI_PORT:-3100}:3100"
volumes:
- ./config/loki/loki.yaml:/etc/loki/local-config.yaml
- loki_data:/loki
command: -config.file=/etc/loki/local-config.yaml
networks:
- monitoring
restart: always
# # Tempo para trazas - Solo almacenamiento (Alloy maneja la recolección)
# tempo:
# image: grafana/tempo:latest
# container_name: tempo
# ports:
# - "${TEMPO_PORT:-3200}:3200" # Solo puerto de consulta, sin endpoints de recepción
# volumes:
# - ./config/tempo/tempo.yaml:/etc/tempo/tempo.yaml
# - tempo_data:/var/tempo
# command:
# - -config.file=/etc/tempo/tempo.yaml
# networks:
# - monitoring
# restart: always
# Grafana Alloy para colección de métricas y logs
alloy:
image: grafana/alloy:latest
container_name: alloy
ports:
- "${ALLOY_UI_PORT:-12345}:12345" # Puerto para la UI de Alloy
- "${ALLOY_METRICS_PORT:-9999}:9999" # HTTP receiver para métricas externas
- "${ALLOY_LOGS_HTTP_PORT:-3101}:3101" # HTTP receiver para logs externos
volumes:
- ./config/alloy/alloy.river:/etc/alloy/config.river
- /var/run/docker.sock:/var/run/docker.sock:ro
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
- alloy_data:/var/lib/alloy
command:
- run
- --server.http.listen-addr=0.0.0.0:12345
- /etc/alloy/config.river
environment:
- ALLOY_HOSTNAME=${ALLOY_HOSTNAME:-alloy}
networks:
- monitoring
restart: always
extra_hosts:
- "host.docker.internal:host-gateway"
depends_on:
- prometheus
- loki
# Grafana para visualización
grafana:
image: grafana/grafana:latest
container_name: grafana
ports:
- "${GRAFANA_PORT:-3500}:3000"
environment:
- GF_SECURITY_ADMIN_USER=${GRAFANA_ADMIN_USER:-admin}
- GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_ADMIN_PASSWORD:-admin123}
- GF_PATHS_DATA=/var/lib/grafana
- GF_PATHS_LOGS=/var/log/grafana
- GF_PATHS_PLUGINS=/var/lib/grafana/plugins
- GF_PATHS_PROVISIONING=/etc/grafana/provisioning
volumes:
- ./config/grafana/provisioning:/etc/grafana/provisioning
- ./config/grafana/dashboards:/var/lib/grafana/dashboards
- grafana_data:/var/lib/grafana
user: "472:472"
networks:
- monitoring
restart: always
depends_on:
- prometheus
- loki
# # Node Exporter para métricas del host
# node-exporter:
# image: prom/node-exporter:latest
# container_name: node-exporter
# ports:
# - "${NODE_EXPORTER_PORT:-9100}:9100"
# command:
# - '--path.rootfs=/host'
# volumes:
# - /proc:/host/proc:ro
# - /sys:/host/sys:ro
# - /:/host:ro
# networks:
# - monitoring
# restart: always
# # cAdvisor para métricas detalladas de Docker
# cadvisor:
# image: gcr.io/cadvisor/cadvisor:latest
# container_name: cadvisor
# privileged: true
# ports:
# - "${CADVISOR_PORT:-8081}:8080"
# volumes:
# - /:/rootfs:ro
# - /var/run/docker.sock:/var/run/docker.sock:ro
# - /sys:/sys:ro
# - /var/lib/docker/:/var/lib/docker:ro
# - /dev/disk/:/dev/disk:ro
# networks:
# - monitoring
# restart: always
# # Promtail para exportar logs de todos los contenedores hacia Alloy
# promtail:
# image: grafana/promtail:latest
# container_name: promtail
# command: -config.file=/etc/promtail/promtail-config.yml
# volumes:
# - ./config/promtail/promtail-config.yml:/etc/promtail/promtail-config.yml:ro
# - promtail_positions:/var/lib/promtail
# - /var/run/docker.sock:/var/run/docker.sock:ro
# - /var/lib/docker/containers:/var/lib/docker/containers:ro
# networks:
# - monitoring
# restart: always
# depends_on:
# - alloy
networks:
monitoring:
driver: bridge
volumes:
prometheus_data:
loki_data:
alloy_data:
grafana_data:
# tempo_data:
# promtail_positions: