services: loki: image: grafana/loki:latest profiles: - otel ports: - "3100:3100" command: ["-config.file=/etc/loki/local-config.yaml"] tempo: image: grafana/tempo:latest profiles: - otel command: ["-config.file=/etc/tempo.yaml"] volumes: - ./otel-shared/tempo.yaml:/etc/tempo.yaml - ./tempo-data:/tmp/tempo ports: - "14268:14268" # jaeger ingest - "3200:3200" # tempo - "9095:9095" # tempo grpc - "4317:4317" # otlp grpc - "4318:4318" # otlp http - "9411:9411" # zipkin prometheus: image: prom/prometheus:latest profiles: - otel command: - --config.file=/etc/prometheus.yaml - --web.enable-remote-write-receiver - --enable-feature=exemplar-storage volumes: - ./otel-shared/prometheus.yaml:/etc/prometheus.yaml ports: - "9090:9090" alertmanager: image: prom/alertmanager profiles: - otel container_name: alertmanager volumes: - ./otel-shared/alertmanager.yml:/etc/alertmanager/alertmanager.yml command: - "--config.file=/etc/alertmanager/alertmanager.yml" grafana: image: grafana/grafana:10.0.3 profiles: - otel depends_on: - loki - tempo - prometheus volumes: - ./otel-shared/grafana-datasources.yaml:/etc/grafana/provisioning/datasources/datasources.yaml environment: - GF_AUTH_ANONYMOUS_ENABLED=true - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin - GF_AUTH_DISABLE_LOGIN_FORM=false - GF_FEATURE_TOGGLES_ENABLE=traceqlEditor ports: - "3001:3000" # OpenTelemetry collector. Make sure you set USERID and GOOGLE_APPLICATION_CREDENTIALS # environment variables for your container to authenticate correctly otel-collector: image: otel/opentelemetry-collector-contrib:0.81.0 profiles: - otel ports: - "9100:9100" depends_on: - tempo - loki volumes: - ./otel-shared/otel-collector-config.yaml:/etc/otelcol-contrib/config.yaml keep-frontend-dev: extends: file: docker-compose.common.yml service: keep-frontend-common environment: - API_URL=http://keep-backend-dev:8080 build: dockerfile: docker/Dockerfile.dev.ui volumes: - ./keep-ui:/app - /app/node_modules - /app/.next depends_on: - keep-backend-dev keep-backend-dev: extends: file: docker-compose.common.yml service: keep-backend-common build: dockerfile: docker/Dockerfile.dev.api environment: - OTEL_SERVICE_NAME=keephq - OTLP_ENDPOINT=http://otel-collector:4317 - METRIC_OTEL_ENABLED=true volumes: - .:/app - ./state:/state keep-websocket-server: extends: file: docker-compose.common.yml service: keep-websocket-server-common log_collector: image: timberio/vector:0.32.2-debian profiles: - otel volumes: - ./otel-shared/vector.toml:/etc/vector/vector.toml - /var/run/docker.sock:/var/run/docker.sock volumes: certs: driver: local esdata01: driver: local kibanadata: driver: local db_data: