--- # ------------------------------------------------------------------------------ # FILE: boilerplates/monitoring/compose.yaml # DESCRIPTION: Combined Prometheus + Grafana + Alertmanager + Node Exporter # stack for cinderella-castle (10.1.71.31) # # Generated from: # boilerplates/prometheus/compose.yaml (prom/prometheus:v3.9.1) # boilerplates/grafana/compose.yaml (grafana/grafana-oss:12.3.3) # # Prometheus TSDB on dedicated second disk mounted at /var/lib/prometheus. # Grafana data on named Docker volume. # ------------------------------------------------------------------------------ services: prometheus: image: docker.io/prom/prometheus:v3.9.1 container_name: prometheus restart: unless-stopped user: "65534:65534" command: - --config.file=/etc/prometheus/prometheus.yaml - --storage.tsdb.path=/prometheus - --storage.tsdb.retention.time=${PROMETHEUS_RETENTION_TIME:-15d} - --storage.tsdb.retention.size=${PROMETHEUS_RETENTION_SIZE:-58GB} - --web.enable-lifecycle ports: - "127.0.0.1:9090:9090" volumes: - /opt/docker/monitoring/prometheus/prometheus.yaml:/etc/prometheus/prometheus.yaml:ro - /var/lib/prometheus:/prometheus networks: - monitoring healthcheck: test: ["CMD", "wget", "--spider", "-q", "http://localhost:9090/-/healthy"] interval: 30s timeout: 5s retries: 3 start_period: 10s grafana: image: docker.io/grafana/grafana-oss:12.3.3 container_name: grafana restart: unless-stopped environment: - GF_SECURITY_ADMIN_USER=${GRAFANA_ADMIN_USER:-admin} - GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_ADMIN_PASSWORD} - GF_SERVER_ROOT_URL=https://grafana.local.mk-labs.cloud ports: - "3000:3000" volumes: - grafana_data:/var/lib/grafana - /opt/docker/monitoring/grafana/datasource.yml:/etc/grafana/provisioning/datasources/datasource.yml:ro networks: - monitoring depends_on: prometheus: condition: service_healthy healthcheck: test: ["CMD", "wget", "--spider", "-q", "http://localhost:3000/api/health"] interval: 30s timeout: 5s retries: 3 start_period: 15s alertmanager: image: docker.io/prom/alertmanager:latest container_name: alertmanager restart: unless-stopped command: - --config.file=/etc/alertmanager/alertmanager.yml - --storage.path=/alertmanager ports: - "127.0.0.1:9093:9093" volumes: - /opt/docker/monitoring/alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml:ro - alertmanager_data:/alertmanager networks: - monitoring node-exporter: image: docker.io/prom/node-exporter:latest container_name: node-exporter restart: unless-stopped pid: host command: - --path.rootfs=/host ports: - "9100:9100" volumes: - /:/host:ro,rslave networks: - monitoring networks: monitoring: driver: bridge name: monitoring volumes: grafana_data: driver: local alertmanager_data: driver: local