name: trace x-common: &common networks: - signoz - kompose_network restart: unless-stopped logging: options: max-size: 50m max-file: "3" x-clickhouse-defaults: &clickhouse-defaults <<: *common image: ${CLICKHOUSE_IMAGE:-clickhouse/clickhouse-server:25.5.6} tty: true labels: signoz.io/scrape: "true" signoz.io/port: "9363" signoz.io/path: "/metrics" depends_on: init-clickhouse: condition: service_completed_successfully zookeeper-1: condition: service_healthy healthcheck: test: ["CMD", "wget", "--spider", "-q", "0.0.0.0:8123/ping"] interval: 30s timeout: 5s retries: 3 ulimits: nproc: 65535 nofile: soft: 262144 hard: 262144 environment: CLICKHOUSE_SKIP_USER_SETUP: 1 x-zookeeper-defaults: &zookeeper-defaults <<: *common image: ${ZOOKEEPER_IMAGE:-signoz/zookeeper:3.7.1} user: root labels: signoz.io/scrape: "true" signoz.io/port: "9141" signoz.io/path: "/metrics" healthcheck: test: ["CMD-SHELL", "curl -s -m 2 http://localhost:8080/commands/ruok | grep error | grep null"] interval: 30s timeout: 5s retries: 3 x-db-depend: &db-depend <<: *common depends_on: clickhouse: condition: service_healthy schema-migrator-sync: condition: service_completed_successfully services: init-clickhouse: <<: *common image: ${CLICKHOUSE_IMAGE:-clickhouse/clickhouse-server:25.5.6} container_name: ${COMPOSE_PROJECT_NAME}_init_clickhouse command: - bash - -c - | version="v0.0.1" node_os=$$(uname -s | tr '[:upper:]' '[:lower:]') node_arch=$$(uname -m | sed s/aarch64/arm64/ | sed s/x86_64/amd64/) echo "Fetching histogram-binary for $${node_os}/$${node_arch}" cd /tmp wget -O histogram-quantile.tar.gz "https://github.com/SigNoz/signoz/releases/download/histogram-quantile%2F$${version}/histogram-quantile_$${node_os}_$${node_arch}.tar.gz" tar -xvzf histogram-quantile.tar.gz mv histogram-quantile /var/lib/clickhouse/user_scripts/histogramQuantile restart: on-failure volumes: - ./common/clickhouse/user_scripts:/var/lib/clickhouse/user_scripts/ zookeeper-1: <<: *zookeeper-defaults container_name: ${COMPOSE_PROJECT_NAME}_zookeeper volumes: - zookeeper_data:/bitnami/zookeeper environment: ZOO_SERVER_ID: 1 ALLOW_ANONYMOUS_LOGIN: yes ZOO_AUTOPURGE_INTERVAL: 1 ZOO_ENABLE_PROMETHEUS_METRICS: yes ZOO_PROMETHEUS_METRICS_PORT_NUMBER: 9141 clickhouse: <<: *clickhouse-defaults container_name: ${COMPOSE_PROJECT_NAME}_clickhouse volumes: - ./common/clickhouse/config.xml:/etc/clickhouse-server/config.xml - ./common/clickhouse/users.xml:/etc/clickhouse-server/users.xml - ./common/clickhouse/custom-function.xml:/etc/clickhouse-server/custom-function.xml - ./common/clickhouse/user_scripts:/var/lib/clickhouse/user_scripts/ - ./common/clickhouse/cluster.xml:/etc/clickhouse-server/config.d/cluster.xml - clickhouse_data:/var/lib/clickhouse/ signoz: <<: *db-depend image: ${SIGNOZ_IMAGE:-signoz/signoz:v0.96.1} container_name: ${COMPOSE_PROJECT_NAME}_app command: - --config=/root/config/prometheus.yml volumes: - ./common/signoz/prometheus.yml:/root/config/prometheus.yml - ./common/dashboards:/root/config/dashboards - signoz_data:/var/lib/signoz/ environment: SIGNOZ_ALERTMANAGER_PROVIDER: signoz SIGNOZ_TELEMETRYSTORE_CLICKHOUSE_DSN: tcp://clickhouse:9000 SIGNOZ_SQLSTORE_SQLITE_PATH: /var/lib/signoz/signoz.db DASHBOARDS_PATH: /root/config/dashboards STORAGE: clickhouse GODEBUG: netdns=go TELEMETRY_ENABLED: ${TELEMETRY_ENABLED:-true} DEPLOYMENT_TYPE: docker-standalone-amd DOT_METRICS_ENABLED: ${DOT_METRICS_ENABLED:-true} healthcheck: test: ["CMD", "wget", "--spider", "-q", "localhost:8080/api/v1/health"] interval: 30s timeout: 5s retries: 3 ports: - 7070:${APP_PORT} networks: - kompose_network - signoz # labels: # - 'traefik.enable=true' # - 'traefik.http.middlewares.$COMPOSE_PROJECT_NAME-redirect-web-secure.redirectscheme.scheme=https' # - 'traefik.http.routers.$COMPOSE_PROJECT_NAME-web.middlewares=$COMPOSE_PROJECT_NAME-redirect-web-secure' # - 'traefik.http.routers.$COMPOSE_PROJECT_NAME-web.rule=Host(`$TRAEFIK_HOST`)' # - 'traefik.http.routers.$COMPOSE_PROJECT_NAME-web.entrypoints=web' # - 'traefik.http.routers.$COMPOSE_PROJECT_NAME-web-secure.rule=Host(`$TRAEFIK_HOST`)' # - 'traefik.http.routers.$COMPOSE_PROJECT_NAME-web-secure.tls.certresolver=resolver' # - 'traefik.http.routers.$COMPOSE_PROJECT_NAME-web-secure.entrypoints=web-secure' # - 'traefik.http.middlewares.$COMPOSE_PROJECT_NAME-web-secure-compress.compress=true' # - 'traefik.http.routers.$COMPOSE_PROJECT_NAME-web-secure.middlewares=$COMPOSE_PROJECT_NAME-web-secure-compress' # - 'traefik.http.services.$COMPOSE_PROJECT_NAME-web-secure.loadbalancer.server.port=$APP_PORT' # - 'traefik.docker.network=kompose_network' otel-collector: image: ${OTELCOL_IMAGE:-signoz/signoz-otel-collector:v0.129.6} container_name: ${COMPOSE_PROJECT_NAME}_otel_collector privileged: true pid: host user: 0:0 networks: - kompose_network - signoz restart: unless-stopped logging: options: max-size: 50m max-file: "3" command: - --config=/etc/otel-collector-config.yaml - --manager-config=/etc/manager-config.yaml - --copy-path=/var/tmp/collector-config.yaml - --feature-gates=-pkg.translator.prometheus.NormalizeName volumes: - ./otel-collector-config.yaml:/etc/otel-collector-config.yaml - ./common/signoz/otel-collector-opamp-config.yaml:/etc/manager-config.yaml - /var/lib/docker/containers:/var/lib/docker/containers:ro - /var/run/docker.sock:/var/run/docker.sock:ro - /proc:/hostfs/proc:ro - /sys:/hostfs/sys:ro - /:/hostfs:ro environment: OTEL_RESOURCE_ATTRIBUTES: host.name=signoz-host,os.type=linux LOW_CARDINAL_EXCEPTION_GROUPING: false HOST_PROC: /hostfs/proc HOST_SYS: /hostfs/sys HOST_ROOT: /hostfs depends_on: signoz: condition: service_healthy schema-migrator-sync: <<: *common image: ${OTELCOL_IMAGE:-signoz/signoz-schema-migrator:v0.129.6} container_name: ${COMPOSE_PROJECT_NAME}_migrator_sync command: - sync - --dsn=tcp://clickhouse:9000 - --up= depends_on: clickhouse: condition: service_healthy restart: on-failure schema-migrator-async: <<: *db-depend image: ${OTELCOL_IMAGE:-signoz/signoz-schema-migrator:v0.129.6} container_name: ${COMPOSE_PROJECT_NAME}_migrator_async command: - async - --dsn=tcp://clickhouse:9000 - --up= restart: on-failure networks: signoz: name: signoz kompose_network: name: ${NETWORK_NAME:-kompose} external: true volumes: clickhouse_data: name: ${COMPOSE_PROJECT_NAME}_clickhouse signoz_data: name: ${COMPOSE_PROJECT_NAME}_signoz zookeeper_data: name: ${COMPOSE_PROJECT_NAME}_zookeeper