Files
suite_logs/docker-compose.yml
T
egutierrez 9966851e75 Add initial project structure and configuration for monitoring suite
- Create .gitignore to exclude Python-generated files and virtual environments
- Add .python-version for Python version management
- Initialize README.md with project description and usage instructions
- Implement alloy.river configuration for Grafana Alloy observability
- Set up grafana.ini for Grafana configuration
- Configure dashboards.yml for automatic dashboard loading in Grafana
- Define datasources.yml for connecting Grafana to Prometheus, Loki, and Tempo
- Establish loki.yaml configuration for Loki logging
- Set up prometheus.yml for Prometheus metrics collection
- Configure tempo.yaml for Tempo tracing
- Create docker-compose.yml for orchestrating services
- Develop init.sh script for initializing project directories and services
- Implement main.py as the entry point for the application
- Define pyproject.toml for project metadata and dependencies
- Update uv.lock for dependency management
2025-10-06 00:52:31 +02:00

119 lines
3.4 KiB
YAML

services:
# Prometheus para métricas
prometheus:
image: prom/prometheus:latest
container_name: prometheus
ports:
- "9090:9090"
volumes:
- ./config/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
- ./data/prometheus:/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: unless-stopped
# Loki para logs
loki:
image: grafana/loki:latest
container_name: loki
ports:
- "3100:3100"
volumes:
- ./config/loki/loki.yaml:/etc/loki/local-config.yaml
- ./data/loki:/loki
command: -config.file=/etc/loki/local-config.yaml
networks:
- monitoring
restart: unless-stopped
# Tempo para trazas - Solo almacenamiento (Alloy maneja la recolección)
tempo:
image: grafana/tempo:latest
container_name: tempo
ports:
- "3200:3200" # Solo puerto de consulta, sin endpoints de recepción
volumes:
- ./config/tempo/tempo.yaml:/etc/tempo/tempo.yaml
- ./data/tempo:/tmp/tempo
command:
- -config.file=/etc/tempo/tempo.yaml
networks:
- monitoring
restart: unless-stopped
# Grafana Alloy para colección de datos - ÚNICA PUERTA DE ENTRADA
alloy:
image: grafana/alloy:latest
container_name: alloy
ports:
- "12345:12345" # Puerto para la UI de Alloy
# Puertos para métricas
- "9999:9999" # HTTP receiver para métricas externas
# Puertos para logs
- "3101:3101" # HTTP receiver para logs externos
- "1514:1514" # Syslog TCP receiver
# Puertos para trazas - OpenTelemetry
- "4317:4317" # OTLP gRPC (ya expuesto en tempo, redirigido aquí)
- "4318:4318" # OTLP HTTP (ya expuesto en tempo, redirigido aquí)
# Puertos para trazas - Jaeger compatibility
- "14250:14250" # Jaeger gRPC
- "14268:14268" # Jaeger HTTP
- "6831:6831/udp" # Jaeger compact thrift
# Puertos para trazas - Zipkin compatibility
- "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
command:
- run
- --server.http.listen-addr=0.0.0.0:12345
- /etc/alloy/config.river
environment:
- ALLOY_HOSTNAME=alloy
networks:
- monitoring
restart: unless-stopped
depends_on:
- prometheus
- loki
- tempo
# Grafana para visualización
grafana:
image: grafana/grafana:latest
container_name: grafana
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_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
- ./data/grafana:/var/lib/grafana
user: "472:472"
networks:
- monitoring
restart: unless-stopped
depends_on:
- prometheus
- loki
- tempo
networks:
monitoring:
driver: bridge