From 20e856592917ffd926fac0cbdfbf7917878db172 Mon Sep 17 00:00:00 2001 From: sepehr Date: Fri, 15 May 2026 15:39:26 +0200 Subject: [PATCH] fix: merge monitoring into main docker-compose.yml All services (app + Prometheus + Grafana + node-exporter + cAdvisor) are now in a single docker-compose.yml. One `docker compose up -d` starts everything. No more separate monitoring file needed. Co-Authored-By: Claude Opus 4.7 --- .gitea/workflows/deploy.yml | 4 -- docker-compose.yml | 98 +++++++++++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+), 4 deletions(-) diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index d43375c..a9150fb 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -66,10 +66,6 @@ jobs: echo "=== Deploy summary ===" docker compose ps echo "Health: $(curl -sf http://localhost:8001/health 2>/dev/null || echo 'FAILED')" - - echo "=== Starting monitoring ===" - docker compose -f docker-compose.yml -f docker-compose.monitoring.yml up -d prometheus grafana node-exporter cadvisor || true - docker compose -f docker-compose.yml -f docker-compose.monitoring.yml ps || true ENDSSH - name: Wait for frontend diff --git a/docker-compose.yml b/docker-compose.yml index 65d2d8c..3f2c1ad 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -180,6 +180,100 @@ services: profiles: - with-ollama + # =========================================== + # Prometheus - Metrics Collection + # =========================================== + prometheus: + image: prom/prometheus:v2.52.0 + container_name: wordly-prometheus + restart: unless-stopped + volumes: + - ./docker/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro + - ./docker/prometheus/alerts.yml:/etc/prometheus/alerts.yml:ro + - prometheus_data:/prometheus + command: + - '--config.file=/etc/prometheus/prometheus.yml' + - '--storage.tsdb.path=/prometheus' + - '--storage.tsdb.retention.time=30d' + - '--storage.tsdb.retention.size=5GB' + - '--web.enable-lifecycle' + networks: + - wordly-network + healthcheck: + test: ["CMD", "wget", "-q", "--spider", "http://localhost:9090/-/healthy"] + interval: 30s + timeout: 5s + retries: 3 + + # =========================================== + # Grafana - Dashboards & Visualization + # =========================================== + grafana: + image: grafana/grafana:11.0.0 + container_name: wordly-grafana + restart: unless-stopped + environment: + - GF_SECURITY_ADMIN_USER=${GRAFANA_USER:-admin} + - GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PASSWORD:-WordlyGrafana2026!} + - GF_USERS_ALLOW_SIGN_UP=false + - GF_SERVER_ROOT_URL=https://monitoring.wordly.art + - GF_INSTALL_PLUGINS=grafana-clock-panel + volumes: + - grafana_data:/var/lib/grafana + - ./docker/grafana/provisioning:/etc/grafana/provisioning:ro + - ./docker/grafana/dashboards:/var/lib/grafana/dashboards:ro + ports: + - "3001:3000" + networks: + - wordly-network + depends_on: + prometheus: + condition: service_healthy + healthcheck: + test: ["CMD", "wget", "-q", "--spider", "http://localhost:3000/api/health"] + interval: 30s + timeout: 5s + retries: 3 + + # =========================================== + # Node Exporter - System Metrics + # =========================================== + node-exporter: + image: prom/node-exporter:v1.8.0 + container_name: wordly-node-exporter + restart: unless-stopped + pid: host + volumes: + - /proc:/host/proc:ro + - /sys:/host/sys:ro + - /:/rootfs:ro + command: + - '--path.procfs=/host/proc' + - '--path.sysfs=/host/sys' + - '--path.rootfs=/rootfs' + - '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|etc|var/lib/docker)($$|/)' + networks: + - wordly-network + + # =========================================== + # cAdvisor - Container Metrics + # =========================================== + cadvisor: + image: gcr.io/cadvisor/cadvisor:v0.49.1 + container_name: wordly-cadvisor + restart: unless-stopped + volumes: + - /:/rootfs:ro + - /var/run:/var/run:ro + - /sys:/sys:ro + - /var/lib/docker/:/var/lib/docker:ro + - /dev/disk:/dev/disk:ro + privileged: true + devices: + - /dev/kmsg + networks: + - wordly-network + # =========================================== # Networks # =========================================== @@ -204,3 +298,7 @@ volumes: driver: local ollama_data: driver: local + prometheus_data: + driver: local + grafana_data: + driver: local