181 lines
5.2 KiB
YAML
181 lines
5.2 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 datos - ÚNICA PUERTA DE ENTRADA
|
|
alloy:
|
|
image: grafana/alloy:latest
|
|
container_name: alloy
|
|
ports:
|
|
- "${ALLOY_UI_PORT:-12345}:12345" # Puerto para la UI de Alloy
|
|
# Puertos para métricas
|
|
- "${ALLOY_METRICS_PORT:-9999}:9999" # HTTP receiver para métricas externas
|
|
# Puertos para logs
|
|
- "${ALLOY_LOGS_HTTP_PORT:-3101}:3101" # HTTP receiver para logs externos
|
|
- "${ALLOY_SYSLOG_PORT:-1514}:1514" # Syslog TCP receiver
|
|
# Puertos para trazas - OpenTelemetry
|
|
- "${ALLOY_OTLP_GRPC_PORT:-4317}:4317" # OTLP gRPC
|
|
- "${ALLOY_OTLP_HTTP_PORT:-4318}:4318" # OTLP HTTP
|
|
# Puertos para trazas - Jaeger compatibility
|
|
- "${ALLOY_JAEGER_GRPC_PORT:-14250}:14250" # Jaeger gRPC
|
|
- "${ALLOY_JAEGER_HTTP_PORT:-14268}:14268" # Jaeger HTTP
|
|
- "${ALLOY_JAEGER_COMPACT_PORT:-6831}:6831/udp" # Jaeger compact thrift
|
|
# Puertos para trazas - Zipkin compatibility
|
|
- "${ALLOY_ZIPKIN_PORT:-9411}:9411" # Zipkin HTTP
|
|
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
|
|
- tempo
|
|
|
|
# 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
|
|
- tempo
|
|
|
|
# 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:
|
|
tempo_data:
|
|
alloy_data:
|
|
grafana_data:
|
|
promtail_positions:
|