version: "2.4" volumes: metadata_data: {} middle_var: {} historical_var: {} broker_var: {} coordinator_var: {} router_var: {} # If able to connect to kafka but not able to write to topic otlp_spans look into below link # https://github.com/wurstmeister/kafka-docker/issues/409#issuecomment-428346707 services: zookeeper: image: bitnami/zookeeper:3.6.2-debian-10-r100 ports: - "2181:2181" environment: - ALLOW_ANONYMOUS_LOGIN=yes kafka: # image: wurstmeister/kafka image: bitnami/kafka:2.7.0-debian-10-r1 ports: - "9092:9092" hostname: kafka environment: KAFKA_ADVERTISED_HOST_NAME: kafka KAFKA_ADVERTISED_PORT: 9092 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 ALLOW_PLAINTEXT_LISTENER: 'yes' KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE: 'true' KAFKA_TOPICS: 'otlp_spans:1:1,flattened_spans:1:1' healthcheck: # test: ["CMD", "kafka-topics.sh", "--create", "--topic", "otlp_spans", "--zookeeper", "zookeeper:2181"] test: ["CMD", "kafka-topics.sh", "--list", "--zookeeper", "zookeeper:2181"] interval: 30s timeout: 10s retries: 10 depends_on: - zookeeper postgres: container_name: postgres image: postgres:latest volumes: - metadata_data:/var/lib/postgresql/data environment: - POSTGRES_PASSWORD=FoolishPassword - POSTGRES_USER=druid - POSTGRES_DB=druid coordinator: image: apache/druid:0.20.0 container_name: coordinator volumes: - ./storage:/opt/data - coordinator_var:/opt/druid/var depends_on: - zookeeper - postgres ports: - "8081:8081" command: - coordinator env_file: - environment_tiny/coordinator - environment_tiny/common broker: image: apache/druid:0.20.0 container_name: broker volumes: - broker_var:/opt/druid/var depends_on: - zookeeper - postgres - coordinator ports: - "8082:8082" command: - broker env_file: - environment_tiny/broker - environment_tiny/common historical: image: apache/druid:0.20.0 container_name: historical volumes: - ./storage:/opt/data - historical_var:/opt/druid/var depends_on: - zookeeper - postgres - coordinator ports: - "8083:8083" command: - historical env_file: - environment_tiny/historical - environment_tiny/common middlemanager: image: apache/druid:0.20.0 container_name: middlemanager volumes: - ./storage:/opt/data - middle_var:/opt/druid/var depends_on: - zookeeper - postgres - coordinator ports: - "8091:8091" command: - middleManager env_file: - environment_tiny/middlemanager - environment_tiny/common router: image: apache/druid:0.20.0 container_name: router volumes: - router_var:/opt/druid/var depends_on: - zookeeper - postgres - coordinator ports: - "8888:8888" command: - router env_file: - environment_tiny/router - environment_tiny/common healthcheck: test: ["CMD", "wget", "--spider", "-q", "http://router:8888/druid/coordinator/v1/datasources/flattened_spans"] interval: 30s timeout: 5s retries: 5 flatten-processor: image: signoz/flattener-processor:0.2.0 container_name: flattener-processor depends_on: - kafka - otel-collector ports: - "8000:8000" environment: - KAFKA_BROKER=kafka:9092 - KAFKA_INPUT_TOPIC=otlp_spans - KAFKA_OUTPUT_TOPIC=flattened_spans query-service: image: signoz.docker.scarf.sh/signoz/query-service:0.3.0 container_name: query-service depends_on: - router ports: - "8080:8080" environment: - DruidClientUrl=http://router:8888 - DruidDatasource=flattened_spans - STORAGE=druid - POSTHOG_API_KEY=H-htDCae7CR3RV57gUzmol6IAKtm5IMCvbcm_fwnL-w depends_on: router: condition: service_healthy frontend: image: signoz/frontend:0.3.0 container_name: frontend depends_on: - query-service links: - "query-service" ports: - "3000:3000" volumes: - ./nginx-config.conf:/etc/nginx/conf.d/default.conf create-supervisor: image: theithollow/hollowapp-blog:curl container_name: create-supervisor command: - /bin/sh - -c - "curl -X POST -H 'Content-Type: application/json' -d @/app/supervisor-spec.json http://router:8888/druid/indexer/v1/supervisor" depends_on: - router restart: on-failure:6 volumes: - ./druid-jobs/supervisor-spec.json:/app/supervisor-spec.json set-retention: image: theithollow/hollowapp-blog:curl container_name: set-retention command: - /bin/sh - -c - "curl -X POST -H 'Content-Type: application/json' -d @/app/retention-spec.json http://router:8888/druid/coordinator/v1/rules/flattened_spans" depends_on: - router restart: on-failure:6 volumes: - ./druid-jobs/retention-spec.json:/app/retention-spec.json otel-collector: image: otel/opentelemetry-collector:0.18.0 command: ["--config=/etc/otel-collector-config.yaml", "--mem-ballast-size-mib=683"] volumes: - ./otel-collector-config.yaml:/etc/otel-collector-config.yaml ports: - "1777:1777" # pprof extension - "8887:8888" # Prometheus metrics exposed by the agent - "14268:14268" # Jaeger receiver - "55678" # OpenCensus receiver - "55680:55680" # OTLP HTTP/2.0 legacy port - "55681:55681" # OTLP HTTP/1.0 receiver - "4317:4317" # OTLP GRPC receiver - "55679:55679" # zpages extension - "13133" # health_check depends_on: kafka: condition: service_healthy hotrod: image: jaegertracing/example-hotrod:latest container_name: hotrod ports: - "9000:8080" command: ["all"] environment: - JAEGER_ENDPOINT=http://otel-collector:14268/api/traces load-hotrod: image: "grubykarol/locust:1.2.3-python3.9-alpine3.12" container_name: load-hotrod hostname: load-hotrod ports: - "8089:8089" environment: ATTACKED_HOST: http://hotrod:8080 LOCUST_MODE: standalone NO_PROXY: standalone TASK_DELAY_FROM: 5 TASK_DELAY_TO: 30 QUIET_MODE: "${QUIET_MODE:-false}" LOCUST_OPTS: "--headless -u 10 -r 1" volumes: - ./locust-scripts:/locust