volumes: prometheus_data: labels: "keep": 1 grafana_data: labels: "keep": 1 services: statsd-exporter: image: prom/statsd-exporter:v0.26.0 restart: always command: [ '--statsd.mapping-config=/etc/statsd/statsd.yaml', '--statsd.listen-udp=:9125', '--web.listen-address=:9102' ] networks: - rhodecode_network # ports: # - "9125:9125/udp" # - "9102:9102" volumes: - ./config/statsd-exporter:/etc/statsd labels: - "traefik.enable=false" - "traefik.http.services.statsd-exporter.loadbalancer.server.port=9125" - "traefik.http.services.statsd-exporter.loadbalancer.server.port=9102" node-exporter: image: prom/node-exporter:v1.7.0 command: - "--path.procfs=/host/proc" - "--path.rootfs=/rootfs" - "--path.sysfs=/host/sys" - "--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)" - "--collector.systemd" - "--collector.processes" networks: - rhodecode_network pid: host restart: always # ports: # - "9100:9100" volumes: - "/proc:/host/proc:ro" - "/sys:/host/sys:ro" - "/:/rootfs:ro" labels: - "traefik.enable=false" - "traefik.http.services.node-exporter.loadbalancer.server.port=9100" prometheus: image: prom/prometheus:v2.48.1 restart: always command: - "--config.file=/etc/prometheus/prometheus.yml" - "--storage.tsdb.path=/prometheus" - "--storage.tsdb.retention.time=24h" - "--web.console.libraries=/etc/prometheus/console_libraries" - "--web.console.templates=/etc/prometheus/consoles" - "--web.enable-lifecycle" # ports: # - "9090:9090" networks: - rhodecode_network extra_hosts: - "host.docker.internal:host-gateway" volumes: - ./config/prometheus:/etc/prometheus - prometheus_data:/prometheus labels: - "traefik.enable=false" - "traefik.http.services.prometheus.loadbalancer.server.port=9090" grafana: image: grafana/grafana:9.5.15 restart: always environment: RC_DB_USER: ${DB_USER:?must-specify-db-user} RC_DB_PASSWORD: ${DB_PASSWORD:?must-specify-db-password} RC_DB_NAME: ${DB_NAME:?must-specify-db-name} # ports: # - "3000:3000" volumes: - grafana_data:/var/lib/grafana - ./config/grafana:/etc/grafana networks: - rhodecode_network extra_hosts: - "host.docker.internal:host-gateway" labels: - "traefik.enable=true" - "traefik.http.routers.grafana.entrypoints=http" - "traefik.http.routers.grafana.priority=20" - "traefik.http.routers.grafana.rule=Host(`${RC_HOSTNAME:?must-specify-rhodecode-hostname}`) && PathPrefix(`/_grafana`)" - "traefik.http.routers.grafana.service=grafana-web" - "traefik.http.services.grafana-web.loadbalancer.server.port=3000" # SSL + proxy prefix example, should be put into .custom/docker-compose-metrics.override.yaml #- "traefik.http.routers.grafana.entrypoints=http,https" loki: image: grafana/loki:2.9.3 restart: always # ports: # - "3100:3100" # - "9095:9095" command: [ "-config.file=/etc/loki/loki-config.yaml" ] networks: - rhodecode_network extra_hosts: - "host.docker.internal:host-gateway" volumes: - ./config/loki:/etc/loki # optionally mount host container to scrape docker logs... # - /var/lib/docker/containers:/var/lib/docker/containers:ro labels: # Loki port is the only one that needs explicitly # be exposed because of logging driver host-only working mode - "traefik.enable=true" - "traefik.http.routers.loki.entrypoints=loki" - "traefik.http.routers.loki.rule=PathPrefix(`/`)" - "traefik.http.routers.loki.middlewares=basic-auth@file" - "traefik.http.routers.loki.service=loki-web" - "traefik.http.services.loki-web.loadbalancer.server.port=3100" promtail: image: grafana/promtail:2.9.3 command: [ "-config.file=/etc/promtail/promtail-config.yaml" ] networks: - rhodecode_network volumes: - /var/log:/var/log - ./config/promtail:/etc/promtail