version: '3.9' x-logging: &default-logging driver: "json-file" options: max-size: "1m" max-file: "1" tag: "{{.Name}}" services: grafana: image: grafana/grafana:10.4.3 container_name: grafana ports: - 3000:3000 environment: - GF_AUTH_ANONYMOUS_ENABLED=true - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin - GF_USERS_DEFAULT_THEME=light volumes: - ./configs/datasources.yaml:/etc/grafana/provisioning/datasources/provisioning-datasources.yaml:ro depends_on: - tempo networks: - traces logging: *default-logging tempo: image: grafana/tempo:2.4.2 container_name: tempo ports: - 3200:3200 # tempo http - 9095:9095 # tempo grpc - 4318:4318 # otlp http - 4317:4317 # otlp grpc volumes: - ./configs/tempo.yaml:/etc/tempo-local.yaml command: ["-config.file=/etc/tempo-local.yaml"] networks: - traces logging: *default-logging promtail: image: grafana/promtail:2.9.8 container_name: promtail volumes: - ./configs/promtail.yaml:/etc/promtail/docker-config.yaml - /var/lib/docker/containers:/var/lib/docker/containers:ro - /var/run/docker.sock:/var/run/docker.sock command: -config.file=/etc/promtail/docker-config.yaml depends_on: - loki networks: - traces logging: *default-logging loki: image: grafana/loki:2.9.8 container_name: loki ports: - 3100:3100 command: -config.file=/etc/loki/local-config.yaml networks: - traces logging: *default-logging prometheus: image: prom/prometheus:v2.52.0 container_name: prometheus command: - --config.file=/etc/prometheus.yaml - --web.enable-remote-write-receiver - --enable-feature=exemplar-storage volumes: - ./configs/prometheus.yaml:/etc/prometheus.yaml ports: - "9090:9090" networks: - traces logging: *default-logging networks: traces: name: traces driver: bridge