services: prometheus: image: prom/prometheus:{{ prometheus_version }} restart: unless-stopped command: - --config.file=/etc/prometheus/prometheus.yml - --storage.tsdb.path=/prometheus - --storage.tsdb.retention.time=15d - --web.enable-lifecycle - --web.enable-remote-write-receiver volumes: - ./config/prometheus:/etc/prometheus:ro - prometheus-data:/prometheus ports: - "9090:9090" networks: [observability] alertmanager: image: prom/alertmanager:{{ alertmanager_version }} restart: unless-stopped command: - --config.file=/etc/alertmanager/alertmanager.yml - --storage.path=/alertmanager volumes: - ./config/alertmanager:/etc/alertmanager:ro - alertmanager-data:/alertmanager ports: - "9093:9093" networks: [observability] loki: image: grafana/loki:{{ loki_version }} restart: unless-stopped command: ["-config.file=/etc/loki/loki.yml"] volumes: - ./config/loki/loki.yml:/etc/loki/loki.yml:ro - loki-data:/var/loki ports: - "3100:3100" networks: [observability] tempo: image: grafana/tempo:{{ tempo_version }} restart: unless-stopped command: ["-config.file=/etc/tempo/tempo.yml"] volumes: - ./config/tempo/tempo.yml:/etc/tempo/tempo.yml:ro - tempo-data:/var/tempo ports: - "3200:3200" networks: [observability] node-exporter: image: prom/node-exporter:{{ node_exporter_version }} restart: unless-stopped command: - --path.rootfs=/host pid: host volumes: - /:/host:ro,rslave ports: - "9100:9100" networks: [observability] alloy: image: grafana/alloy:{{ alloy_version }} restart: unless-stopped command: - run - --server.http.listen-addr=0.0.0.0:12345 - --storage.path=/var/lib/alloy/data - /etc/alloy/config.alloy volumes: - ./config/alloy/config.alloy:/etc/alloy/config.alloy:ro - /var/run/docker.sock:/var/run/docker.sock:ro - alloy-data:/var/lib/alloy/data ports: - "12345:12345" - "4317:4317" - "4318:4318" networks: [observability] grafana: image: grafana/grafana:{{ grafana_version }} restart: unless-stopped depends_on: [prometheus, loki, tempo] environment: GF_SECURITY_ADMIN_USER: "{{ grafana_admin_user }}" GF_SECURITY_ADMIN_PASSWORD: "{{ grafana_admin_password }}" GF_USERS_ALLOW_SIGN_UP: "false" GF_FEATURE_TOGGLES_ENABLE: traceqlEditor volumes: - grafana-data:/var/lib/grafana - ./config/grafana/provisioning:/etc/grafana/provisioning:ro ports: - "3000:3000" networks: [observability] volumes: prometheus-data: alertmanager-data: loki-data: tempo-data: alloy-data: grafana-data: networks: observability: driver: bridge