version: '3.2' volumes: prometheus_data: {} grafana_data: {} networks: front-tier: back-tier: services: prometheus: image: prom/prometheus volumes: - ./prometheus/:/etc/prometheus/ - prometheus_data:/prometheus command: - '-config.file=/etc/prometheus/prometheus.yml' - '-storage.local.path=/prometheus' - '-alertmanager.url=http://alertmanager:9093' - '-web.console.libraries=/usr/share/prometheus/console_libraries' - '-web.console.templates=/usr/share/prometheus/consoles' expose: - 9090 ports: - 9090:9090 links: - cadvisor:cadvisor - alertmanager:alertmanager depends_on: - cadvisor networks: - back-tier restart: always deploy: placement: constraints: - node.hostname == moby node-exporter: image: prom/node-exporter volumes: - type: bind source: /proc target: /host/proc - type: bind source: /sys target: /host/sys - type: bind source: / target: /rootfs command: - '--path.procfs=/host/proc' - '--path.sysfs=/host/sys' - '--collector.filesystem.ignored-mount-points="^/(sys|proc|dev|host|etc)($$|/)"' expose: - 9100 networks: - back-tier restart: always deploy: mode: global alertmanager: image: prom/alertmanager ports: - 9093:9093 volumes: - ./alertmanager/:/etc/alertmanager/ networks: - back-tier restart: always command: - '-config.file=/etc/alertmanager/config.yml' - '-storage.path=/alertmanager' deploy: placement: constraints: - node.hostname == moby cadvisor: image: google/cadvisor volumes: - /:/rootfs:ro - /var/run:/var/run:rw - /sys:/sys:ro - /var/lib/docker/:/var/lib/docker:ro expose: - 8080 networks: - back-tier restart: always deploy: mode: global grafana: image: grafana/grafana depends_on: - prometheus ports: - 3000:3000 volumes: - grafana_data:/var/lib/grafana env_file: - config.monitoring networks: - back-tier - front-tier