services: prometheus: image: prom/prometheus:latest container_name: node-monitor-prometheus restart: unless-stopped command: - --config.file=/etc/prometheus/prometheus.yml - --storage.tsdb.path=/prometheus - --storage.tsdb.retention.time=15d - --web.enable-lifecycle ports: - target: 9090 published: ${PROMETHEUS_PORT:-9090} protocol: tcp host_ip: ${PROMETHEUS_BIND_IP:-0.0.0.0} extra_hosts: - host.docker.internal:host-gateway volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml:ro - ./rules:/etc/prometheus/rules:ro - prometheus-data:/prometheus networks: - monitor node-exporter: image: prom/node-exporter:latest container_name: node-monitor-node-exporter restart: unless-stopped command: - --path.rootfs=/host - --collector.filesystem.mount-points-exclude=^/(dev|proc|sys|var/lib/docker/.+|var/lib/kubelet/.+)($$|/) pid: host volumes: - /:/host:ro,rslave networks: - monitor cadvisor: image: ${CADVISOR_IMAGE:-gcr.m.daocloud.io/cadvisor/cadvisor:latest} container_name: node-monitor-cadvisor restart: unless-stopped privileged: true devices: - /dev/kmsg:/dev/kmsg volumes: - /:/rootfs:ro - /var/run:/var/run:ro - /sys:/sys:ro - /var/lib/docker/:/var/lib/docker:ro - /dev/disk/:/dev/disk:ro networks: - monitor grafana: image: grafana/grafana:latest container_name: node-monitor-grafana restart: unless-stopped environment: GF_SECURITY_ADMIN_USER: admin GF_SECURITY_ADMIN_PASSWORD: admin123456 GF_USERS_ALLOW_SIGN_UP: "false" GF_SERVER_ROOT_URL: ${GRAFANA_ROOT_URL:-http://localhost:3001} GF_DASHBOARDS_DEFAULT_HOME_DASHBOARD_PATH: /var/lib/grafana/dashboards/ping-node-rabbitmq.json ports: - target: 3000 published: ${GRAFANA_PORT:-3001} protocol: tcp host_ip: ${GRAFANA_BIND_IP:-0.0.0.0} volumes: - grafana-data:/var/lib/grafana - ./grafana/provisioning:/etc/grafana/provisioning:ro - ./grafana/dashboards:/var/lib/grafana/dashboards:ro depends_on: - prometheus networks: - monitor networks: monitor: name: node-monitor driver: bridge volumes: prometheus-data: grafana-data: