version: "3.8" services: grafana: image: portainer/template-swarm-monitoring:grafana-9.5.2 ports: - target: 3000 published: 3000 protocol: tcp mode: ingress deploy: replicas: 1 restart_policy: condition: on-failure placement: constraints: - node.role == manager - node.labels.monitoring == true volumes: - type: volume source: grafana-data target: /var/lib/grafana environment: - GF_SECURITY_ADMIN_USER=${GRAFANA_USER} - GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PASSWORD} - GF_USERS_ALLOW_SIGN_UP=false networks: - net prometheus: image: portainer/template-swarm-monitoring:prometheus-v2.44.0 command: - '--config.file=/etc/prometheus/prometheus.yml' - '--log.level=error' - '--storage.tsdb.path=/prometheus' - '--storage.tsdb.retention.time=7d' deploy: replicas: 1 restart_policy: condition: on-failure placement: constraints: - node.role == manager - node.labels.monitoring == true volumes: - type: volume source: prometheus-data target: /prometheus networks: - net cadvisor: image: spcodes/cadvisor:v0.49.1 command: -logtostderr -docker_only deploy: mode: global resources: limits: memory: 128M reservations: memory: 64M volumes: - type: bind source: / target: /rootfs read_only: true - type: bind source: /var/run target: /var/run read_only: true - type: bind source: /sys target: /sys read_only: true - type: bind source: /var/lib/docker target: /var/lib/docker read_only: true - type: bind source: /dev/disk target: /dev/disk read_only: true networks: - net node-exporter: image: prom/node-exporter:v1.5.0 command: - '--path.sysfs=/host/sys' - '--path.procfs=/host/proc' - '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)' - '--no-collector.ipvs' deploy: mode: global resources: limits: memory: 128M reservations: memory: 64M volumes: - type: bind source: / target: /rootfs read_only: true - type: bind source: /proc target: /host/proc read_only: true - type: bind source: /sys target: /host/sys read_only: true networks: - net volumes: grafana-data: prometheus-data: networks: net: driver: host