version: '2.3' networks: monitor: driver: bridge volumes: prometheus_data: {} grafana_data: {} services: prometheus: image: prom/prometheus:v2.17.1 container_name: prometheus hostname: prometheus restart: always volumes: - ./prometheus:/etc/prometheus - prometheus_data:/prometheus - ./prometheus.yml:/etc/prometheus/prometheus.yml - ./server_down.yml:/etc/prometheus/node_down.yml ports: - "9090:9090" networks: - monitor alertmanager: image: prom/alertmanager container_name: alertmanager hostname: alertmanager restart: always volumes: - ./alertmanager.yml:/etc/alertmanager/alertmanager.yml ports: - "9093:9093" networks: - monitor pushgateway: image: prom/pushgateway container_name: pushgateway restart: unless-stopped expose: - 9091 ports: - "9091:9091" networks: - monitor labels: org.label-schema.group: "monitoring" nodeexporter: image: prom/node-exporter:v0.18.1 container_name: nodeexporter volumes: - /proc:/host/proc:ro - /sys:/host/sys:ro - /:/rootfs:ro command: - '--path.procfs=/host/proc' - '--path.rootfs=/rootfs' - '--path.sysfs=/host/sys' - '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)' restart: unless-stopped expose: - 9100 networks: - monitor labels: org.label-schema.group: "monitoring" grafana: image: grafana/grafana:6.7.2 container_name: grafana volumes: - grafana_data:/var/lib/grafana - ./grafana/provisioning:/etc/grafana/provisioning environment: - GF_SECURITY_ADMIN_USER=${ADMIN_USER} - GF_SECURITY_ADMIN_PASSWORD=${ADMIN_PASSWORD} - GF_USERS_ALLOW_SIGN_UP=false restart: unless-stopped expose: - 3000 hostname: grafana ports: - "3000:3000" networks: - monitor