# One-time permissions (run on host): # sudo chown -R 65534:65534 /srv/homelab/data/monitoring/prometheus # sudo chown -R 10001:10001 /srv/homelab/data/monitoring/loki # sudo chown -R 472:472 /srv/homelab/data/monitoring/grafana # sudo chown -R 10001:10001 /srv/homelab/data/monitoring/alloy # networks: default: name: monitoring services: cadvisor: image: gcr.io/cadvisor/cadvisor:latest container_name: cadvisor ports: - "8088:8080" volumes: - /:/rootfs:ro - /var/run:/var/run:ro - /sys:/sys:ro - /var/lib/docker:/var/lib/docker:ro restart: unless-stopped logging: driver: json-file options: max-size: "10m" max-file: "5" prometheus: image: prom/prometheus:latest container_name: prometheus extra_hosts: - "metrics.internal:192.168.1.70" ports: - "9094:9090" volumes: - /srv/homelab/config/monitoring/prometheus.yml:/etc/prometheus/prometheus.yml:ro - /srv/homelab/data/monitoring/prometheus:/prometheus restart: unless-stopped logging: driver: json-file options: max-size: "10m" max-file: "5" node_exporter: image: quay.io/prometheus/node-exporter:latest container_name: node_exporter command: - '--path.rootfs=/host' network_mode: host pid: host restart: unless-stopped volumes: - '/:/host:ro,rslave' logging: driver: json-file options: max-size: "10m" max-file: "5" grafana: image: grafana/grafana:latest container_name: grafana user: "472:65534" extra_hosts: - "host.docker.internal:host-gateway" environment: - GF_FEATURE_TOGGLES_KUBERNETESDASHBOARDS=false depends_on: - loki - prometheus ports: - "3034:3000" volumes: - /srv/homelab/data/monitoring/grafana:/var/lib/grafana - /srv/homelab/config/monitoring/grafana/provisioning:/etc/grafana/provisioning:ro restart: unless-stopped logging: driver: json-file options: max-size: "10m" max-file: "5" loki: image: grafana/loki:3.6.0 container_name: loki ports: - "3100:3100" command: -config.file=/etc/loki/config.yaml volumes: - /srv/homelab/config/monitoring/loki-config.yaml:/etc/loki/config.yaml:ro - /srv/homelab/data/monitoring/loki:/loki restart: unless-stopped logging: driver: json-file options: max-size: "10m" max-file: "5" alloy: image: grafana/alloy:latest container_name: alloy command: run --storage.path=/var/lib/alloy /etc/alloy/config.alloy depends_on: - loki ports: - "12345:12345" volumes: - /srv/homelab/config/monitoring/alloy.alloy:/etc/alloy/config.alloy:ro - /srv/homelab/data/monitoring/alloy:/var/lib/alloy - /var/log:/var/log:ro - /etc/machine-id:/etc/machine-id:ro - /var/lib/docker/containers:/var/lib/docker/containers:ro - /run/log/journal:/run/log/journal:ro - /var/log/journal:/var/log/journal:ro restart: unless-stopped logging: driver: json-file options: max-size: "10m" max-file: "5"