x-defaults: &defaults
  restart: unless-stopped
  logging:
    driver: json-file
    options:
      max-size: 100m
      max-file: '3'

services:
  node-exporter:
    <<: *defaults
    image: ${GLOBAL_REGISTRY:-}prom/node-exporter:${NODE_EXPORTER_VERSION:-v1.8.2}
    ports:
      - '${NODE_EXPORTER_PORT_OVERRIDE:-9100}:9100'
    command:
      - --path.rootfs=/host
      - --path.procfs=/host/proc
      - --path.sysfs=/host/sys
      - '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
    environment:
      - TZ=${TZ:-UTC}
    volumes:
      - '/:/host:ro,rslave'
    deploy:
      resources:
        limits:
          cpus: ${NODE_EXPORTER_CPU_LIMIT:-0.25}
          memory: ${NODE_EXPORTER_MEMORY_LIMIT:-128M}
        reservations:
          cpus: ${NODE_EXPORTER_CPU_RESERVATION:-0.1}
          memory: ${NODE_EXPORTER_MEMORY_RESERVATION:-64M}
    healthcheck:
      test: [CMD, wget, --no-verbose, --tries=1, --spider, 'http://localhost:9100/metrics']
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 10s
    # Run with host network for accurate metrics
    # network_mode: host

volumes: {}
