version: "3" networks: monitor-net: driver: bridge services: alertmanager: image: prom/alertmanager:v0.21.0 container_name: alertmanager hostname: alertmanager restart: unless-stopped volumes: - ./alertmanager:/etc/alertmanager command: - '--config.file=/etc/alertmanager/config.yml' - '--storage.path=/alertmanager' expose: - "9093" networks: - monitor-net labels: org.label-schema.group: "monitoring" cadvisor: image: gcr.io/cadvisor/cadvisor:v0.37.0 container_name: cadvisor hostname: cadvisor restart: unless-stopped volumes: - /:/rootfs:ro - /var/run:/var/run:rw - /sys:/sys:ro - /var/lib/docker:/var/lib/docker:ro expose: - "8080" networks: - monitor-net labels: org.label-schema.group: "monitoring" grafana: image: grafana/grafana:7.1.1 container_name: grafana hostname: grafana restart: unless-stopped volumes: - ./grafana/etc/var/lib/grafana:/var/lib/grafana - ./grafana/provisioning:/etc/grafana/provisioning environment: - GF_SECURITY_ADMIN_USER=${ADMIN_USER:-admin} - GF_SECURITY_ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin} - GF_USERS_ALLOW_SIGN_UP=false ports: - "3002:3000" networks: - monitor-net labels: org.label-schema.group: "monitoring" loki: image: grafana/loki:1.6.0 container_name: loki hostname: loki restart: on-failure command: - '-config.file=/etc/loki/local-config.yaml' expose: - "3100" networks: - monitor-net labels: org.label-schema.group: "monitoring" nginxexporter: image: nginx/nginx-prometheus-exporter:0.5.0 container_name: nginxexporter hostname: nginxexporter restart: on-failure logging: driver: json-file options: max-size: "10m" max-file: "5" environment: - SCRAPE_URI=http://nginx:80/nginx_status - TELEMETRY_PATH=/metrics - NGINX_RETRIES=10 expose: - "9113" networks: - monitor-net labels: org.label-schema.group: "monitoring" nodeexporter: image: prom/node-exporter:v1.0.1 container_name: nodeexporter hostname: nodeexporter restart: unless-stopped volumes: - /proc:/host/proc:ro - /sys:/host/sys:ro - /:/rootfs:ro - ./nodeexporter/etc:/var/lib/node_exporter command: - '--path.procfs=/host/proc' - '--path.sysfs=/host/sys' - '--path.rootfs=/rootfs' - '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)' - '--collector.textfile.directory=/var/lib/node_exporter' ports: - "3003:9100" networks: - monitor-net labels: org.label-schema.group: "monitoring" prometheus: image: prom/prometheus:v2.20.0 container_name: prometheus hostname: prometheus restart: unless-stopped volumes: - ./prometheus:/etc/prometheus command: - '--config.file=/etc/prometheus/prometheus.yml' - '--storage.tsdb.path=/prometheus' - '--web.console.libraries=/etc/prometheus/console_libraries' - '--web.console.templates=/etc/prometheus/consoles' - '--storage.tsdb.retention.time=200h' - '--web.enable-lifecycle' ports: - "3004:9090" networks: - monitor-net labels: org.label-schema.group: "monitoring" promtail: image: grafana/promtail:1.6.0 container_name: promtail hostname: promtail restart: on-failure volumes: - ./promtail/etc/var/lib/promtail/positions:/var/lib/promtail/positions - ./promtail/etc/promtail/config.yml:/etc/promtail/config.yml - /var/lib/docker/containers:/var/lib/docker/containers:ro - /var/log:/var/log command: - '-config.file=/etc/promtail/config.yml' networks: - monitor-net labels: org.label-schema.group: "monitoring" pushgateway: image: prom/pushgateway:v1.2.0 container_name: pushgateway hostname: pushgateway restart: unless-stopped expose: - "9091" networks: - monitor-net labels: org.label-schema.group: "monitoring" smartctl: build: context: ./smartctl container_name: smartctl hostname: smartctl restart: on-failure privileged: true volumes: - ./nodeexporter/etc:/var/lib/node_exporter environment: - INTERVAL=300 networks: - monitor-net labels: org.label-schema.group: "monitoring"