← back to Watches
docker-compose.monitoring.yml
130 lines
version: '3.8'
services:
# ============================================================================
# PROMETHEUS - Metrics Collection
# ============================================================================
prometheus:
image: prom/prometheus:latest
container_name: omega-prometheus
restart: unless-stopped
ports:
- "7510:9090"
volumes:
- ./monitoring/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
- ./monitoring/prometheus/alerts.yml:/etc/prometheus/alerts.yml
- prometheus-data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--storage.tsdb.retention.time=30d'
- '--web.console.libraries=/usr/share/prometheus/console_libraries'
- '--web.console.templates=/usr/share/prometheus/consoles'
- '--web.enable-lifecycle'
networks:
- monitoring
# ============================================================================
# GRAFANA - Visualization Dashboard
# ============================================================================
grafana:
image: grafana/grafana:latest
container_name: omega-grafana
restart: unless-stopped
ports:
- "7511:3000"
volumes:
- ./monitoring/grafana/provisioning:/etc/grafana/provisioning
- ./monitoring/grafana/dashboards:/var/lib/grafana/dashboards
- grafana-data:/var/lib/grafana
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=omega-watches-admin
- GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource
- GF_SERVER_ROOT_URL=http://45.61.58.125:7511
- GF_ANALYTICS_REPORTING_ENABLED=false
networks:
- monitoring
depends_on:
- prometheus
# ============================================================================
# NODE EXPORTER - System Metrics
# ============================================================================
node-exporter:
image: prom/node-exporter:latest
container_name: omega-node-exporter
restart: unless-stopped
ports:
- "7512:9100"
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
command:
- '--path.procfs=/host/proc'
- '--path.sysfs=/host/sys'
- '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
networks:
- monitoring
# ============================================================================
# ALERTMANAGER - Alert Management
# ============================================================================
alertmanager:
image: prom/alertmanager:latest
container_name: omega-alertmanager
restart: unless-stopped
ports:
- "7513:9093"
volumes:
- ./monitoring/alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml
- alertmanager-data:/alertmanager
command:
- '--config.file=/etc/alertmanager/alertmanager.yml'
- '--storage.path=/alertmanager'
networks:
- monitoring
# ============================================================================
# REDIS - Caching Layer
# ============================================================================
redis:
image: redis:7-alpine
container_name: omega-redis
restart: unless-stopped
ports:
- "7514:6379"
volumes:
- redis-data:/data
command: redis-server --appendonly yes --requirepass omega-redis-pass
networks:
- monitoring
# ============================================================================
# REDIS EXPORTER - Redis Metrics
# ============================================================================
redis-exporter:
image: oliver006/redis_exporter:latest
container_name: omega-redis-exporter
restart: unless-stopped
ports:
- "7515:9121"
environment:
- REDIS_ADDR=redis:6379
- REDIS_PASSWORD=omega-redis-pass
networks:
- monitoring
depends_on:
- redis
networks:
monitoring:
driver: bridge
volumes:
prometheus-data:
grafana-data:
alertmanager-data:
redis-data: