networks: grafana-network: driver: bridge ipam: config: - subnet: 192.168.100.0/24 volumes: prometheus_data: {} grafana_data: {} services: # POUR AFFICHAGE DASHBOARD grafana: image: grafana/grafana:11.2.0 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 ports: - 3000:3000 networks: grafana-network: ipv4_address: 192.168.100.10 labels: org.label-schema.group: "monitoring" # METRICS GATHERER prometheus: image: prom/prometheus:v2.54.1 container_name: prometheus volumes: - ./prometheus:/etc/prometheus - prometheus_data:/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' restart: unless-stopped expose: - 9090 networks: - grafana-network labels: org.label-schema.group: "monitoring" # FOR HOST METRICS nodeexporter: image: prom/node-exporter:v1.8.2 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: - grafana-network labels: org.label-schema.group: "monitoring" # FOR DOCKER CONTAINERS cadvisor: image: gcr.io/cadvisor/cadvisor container_name: cadvisor volumes: - /:/rootfs:ro - /var/run:/var/run:rw - /sys:/sys:ro - /var/lib/docker:/var/lib/docker:ro - /cgroup:/cgroup:ro #doesn't work on MacOS only for Linux restart: unless-stopped expose: - 8080 networks: - grafana-network labels: org.label-schema.group: "monitoring" # LOKI FOR LOGS loki: image: grafana/loki:latest container_name: loki ports: - '3100:3100' volumes: - ./loki/config:/etc/loki - ./loki/cert:/etc/loki/cert - /etc/localtime:/etc/localtime:ro - /etc/timezone:/etc/timezone:ro # environment: command: -config.file=/etc/loki/config.yml -config.expand-env=true networks: - grafana-network # FOR WEBSITE MONITORING blackbox-exporter: image: "prom/blackbox-exporter:latest" hostname: "blackbox" restart: always networks: - website_monitoring ports: - "127.0.0.1:9115:9115" volumes: - "./blackbox/blackbox-exporter.yml:/etc/prometheus/blackbox-exporter.yml" command: - "--config.file=/etc/prometheus/blackbox-exporter.yml" # FOR ALERTS alertmanager: image: prom/alertmanager:v0.20.0 container_name: alertmanager volumes: - ./alertmanager:/etc/alertmanager command: #- '--config.file=/etc/alertmanager/config.yml' - '--config.file=/etc/alertmanager/alertmanager.yml' - '--storage.path=/alertmanager' restart: unless-stopped expose: - 9093 networks: - grafana-network labels: org.label-schema.group: "monitoring" pushgateway: image: prom/pushgateway:v1.2.0 container_name: pushgateway restart: unless-stopped expose: - 9091 networks: - grafana-network labels: org.label-schema.group: "monitoring"