version: '3.8' services: prometheus: container_name: prometheus image: prom/prometheus:latest volumes: - ./testnet/monitoring/prometheus.yml:/etc/prometheus/prometheus.yml:z command: - --config.file=/etc/prometheus/prometheus.yml - --storage.tsdb.retention.time=7d - --enable-feature=otlp-write-receiver ports: - 127.0.0.1:9090:9090 restart: on-failure grafana: container_name: grafana image: grafana/grafana:latest environment: - GF_AUTH_ANONYMOUS_ENABLED=true - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin - GF_AUTH_DISABLE_LOGIN_FORM=true - GF_FEATURE_TOGGLES_ENABLE=traceqlEditor traceQLStreaming metricsSummary env_file: - ./testnet/monitoring/grafana/plugins.env volumes: - ./testnet/monitoring/grafana/grafana.ini:/etc/grafana/grafana.ini:z - ./testnet/monitoring/grafana/datasources.yaml:/etc/grafana/provisioning/datasources/datasources.yaml:z ports: - 9091:3000 restart: on-failure depends_on: - prometheus loki: image: grafana/loki:2.9.2 ports: - "3100:3100" command: -config.file=/etc/loki/local-config.yaml # Tempo runs as unpriviliged user, volumes need to be chowned before running. tempo-init: image: &tempoImage grafana/tempo:latest user: root entrypoint: - "chown" - "10001:10001" - "/var/tempo" volumes: - tempo-data:/var/tempo memcached: image: memcached:1.6.29 container_name: memcached ports: - "11211:11211" environment: - MEMCACHED_MAX_MEMORY=64m - MEMCACHED_THREADS=4 tempo: image: *tempoImage container_name: tempo command: [ "-config.file=/etc/tempo.yaml" ] volumes: - ./testnet/monitoring/tempo.yaml:/etc/tempo.yaml:z - tempo-data:/var/tempo ports: - "4317:4317" # otlp grpc depends_on: - tempo-init - memcached volumes: tempo-data: