version: '3.9' services: otel-collector: image: otel/opentelemetry-collector-contrib:0.136.0 container_name: otel-collector command: - --config=/etc/otel/config.yaml volumes: - ./otel-config.yaml:/etc/otel/config.yaml ports: - 4317:4317 - 4318:4318 depends_on: - victoria - tempo victoria: image: victoriametrics/victoria-metrics:latest container_name: victoria ports: - 8428:8428 volumes: - ./victoria-data:/victoria-metrics-data command: - --storageDataPath=/victoria-metrics-data - --retentionPeriod=3 tempo: image: grafana/tempo:latest container_name: tempo ports: - 3200:3200 volumes: - ./tempo-data:/var/tempo command: - -config.file=/etc/tempo.yaml configs: - source: tempo_config target: /etc/tempo.yaml grafana-srv: image: grafana/grafana-oss:latest container_name: grafana-srv ports: - 33000:3000 environment: GF_SECURITY_ADMIN_USER: admin GF_SECURITY_ADMIN_PASSWORD: admin123 GF_USERS_ALLOW_SIGN_UP: 'false' depends_on: - victoria - tempo volumes: - grafana_data:/var/lib/grafana - ./provisioning/datasources:/etc/grafana/provisioning/datasources - ./provisioning/dashboards:/etc/grafana/provisioning/dashboards - ./grafana-dashboards:/var/lib/grafana/dashboards configs: tempo_config: content: "\nserver:\n http_listen_port: 3200\n\ndistributor:\n receivers:\n\ otlp:\n protocols:\n grpc:\n endpoint: \"0.0.0.0:4317\"\n http:\n\ \ endpoint: \"0.0.0.0:4318\"\n\ningester:\n trace_idle_period: 10s\n \ \ max_block_bytes: 1000000\n max_block_duration: 5m\n\ncompactor:\n compaction:\n\ block_retention: 24h\n\nstorage:\n trace:\nwal:\n path: /var/tempo/wal\nlocal:\n\ \ path: /var/tempo/blocks\n" volumes: grafana_data: {}