206 lines
7.8 KiB
YAML
206 lines
7.8 KiB
YAML
name: signoz
|
|
|
|
services:
|
|
# ===========================================================================
|
|
# ZooKeeper — required for ClickHouse coordination
|
|
# ===========================================================================
|
|
zookeeper:
|
|
image: signoz/zookeeper:${ZOOKEEPER_VERSION:-3.7.1}
|
|
restart: unless-stopped
|
|
user: root
|
|
environment:
|
|
ZOO_SERVER_ID: 1
|
|
ALLOW_ANONYMOUS_LOGIN: "yes"
|
|
ZOO_AUTOPURGE_INTERVAL: 1
|
|
ZOO_ENABLE_PROMETHEUS_METRICS: "yes"
|
|
ZOO_PROMETHEUS_METRICS_PORT_NUMBER: 9141
|
|
volumes:
|
|
- ./zookeeper-data:/bitnami/zookeeper
|
|
healthcheck:
|
|
test:
|
|
- CMD-SHELL
|
|
- curl -s -m 2 http://localhost:8080/commands/ruok | grep error | grep null
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
networks:
|
|
- signoz
|
|
|
|
# ===========================================================================
|
|
# Init ClickHouse — installs histogramQuantile user script
|
|
# ===========================================================================
|
|
init-clickhouse:
|
|
image: clickhouse/clickhouse-server:${CLICKHOUSE_VERSION:-25.5}
|
|
restart: on-failure
|
|
command:
|
|
- bash
|
|
- -c
|
|
- |
|
|
version="v0.0.1"
|
|
# Hardcode linux/amd64 for Unraid x86_64 (uname may be unavailable in slim image)
|
|
node_os="linux"
|
|
node_arch="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" || true
|
|
tar -xvzf histogram-quantile.tar.gz 2>/dev/null || true
|
|
mv histogram-quantile /var/lib/clickhouse/user_scripts/histogramQuantile 2>/dev/null || true
|
|
echo "Done (non-critical if download failed — migrator will handle it)."
|
|
volumes:
|
|
- ./clickhouse/user_scripts:/var/lib/clickhouse/user_scripts
|
|
networks:
|
|
- signoz
|
|
|
|
# ===========================================================================
|
|
# ClickHouse — columnar storage for all telemetry data
|
|
# ===========================================================================
|
|
clickhouse:
|
|
image: clickhouse/clickhouse-server:${CLICKHOUSE_VERSION:-25.5}
|
|
restart: unless-stopped
|
|
tty: true
|
|
depends_on:
|
|
init-clickhouse:
|
|
condition: service_completed_successfully
|
|
zookeeper:
|
|
condition: service_healthy
|
|
environment:
|
|
CLICKHOUSE_SKIP_USER_SETUP: "1"
|
|
volumes:
|
|
- ./clickhouse/config.xml:/etc/clickhouse-server/config.xml:ro
|
|
- ./clickhouse/users.xml:/etc/clickhouse-server/users.xml:ro
|
|
- ./clickhouse/custom-function.xml:/etc/clickhouse-server/custom-function.xml:ro
|
|
- ./clickhouse/user_scripts:/var/lib/clickhouse/user_scripts:ro
|
|
- ./clickhouse/config.d/cluster.xml:/etc/clickhouse-server/config.d/cluster.xml:ro
|
|
- ./clickhouse-data:/var/lib/clickhouse
|
|
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
|
|
networks:
|
|
- signoz
|
|
|
|
# ===========================================================================
|
|
# SigNoz — query service + UI
|
|
# ===========================================================================
|
|
signoz:
|
|
image: signoz/signoz:${SIGNOZ_VERSION:-v0.128.0}
|
|
restart: unless-stopped
|
|
depends_on:
|
|
clickhouse:
|
|
condition: service_healthy
|
|
environment:
|
|
SIGNOZ_ALERTMANAGER_PROVIDER: signoz
|
|
SIGNOZ_TELEMETRYSTORE_CLICKHOUSE_DSN: tcp://clickhouse:9000
|
|
SIGNOZ_SQLSTORE_SQLITE_PATH: /var/lib/signoz/signoz.db
|
|
SIGNOZ_TOKENIZER_JWT_SECRET: ${SIGNOZ_JWT_SECRET:-change-me-jwt-secret}
|
|
ports:
|
|
# SigNoz UI
|
|
- ${EXPOSE_SIGNOZ_UI_PORT:-8080}:8080
|
|
volumes:
|
|
- ./signoz-data:/var/lib/signoz
|
|
healthcheck:
|
|
test:
|
|
- CMD
|
|
- wget
|
|
- --spider
|
|
- -q
|
|
- localhost:8080/api/v1/health
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
start_period: 30s
|
|
networks:
|
|
signoz: {}
|
|
pipeline:
|
|
aliases:
|
|
- signoz
|
|
- otel
|
|
- lgtm
|
|
# swag:
|
|
# aliases:
|
|
# - signoz
|
|
|
|
# ===========================================================================
|
|
# OTEL Collector — receives OTLP from all stacks
|
|
# ===========================================================================
|
|
otel-collector:
|
|
image: signoz/signoz-otel-collector:${OTELCOL_VERSION:-v0.144.5}
|
|
restart: unless-stopped
|
|
depends_on:
|
|
clickhouse:
|
|
condition: service_healthy
|
|
entrypoint:
|
|
- /bin/sh
|
|
command:
|
|
- -c
|
|
- |
|
|
/signoz-otel-collector migrate sync check &&
|
|
/signoz-otel-collector --config=/etc/otel-collector-config.yaml --manager-config=/etc/manager-config.yaml --copy-path=/var/tmp/collector-config.yaml
|
|
volumes:
|
|
- ./otel-collector/otel-collector-config.yaml:/etc/otel-collector-config.yaml:ro
|
|
- ./otel-collector/manager-config.yaml:/etc/manager-config.yaml:ro
|
|
environment:
|
|
OTEL_RESOURCE_ATTRIBUTES: host.name=signoz-host,os.type=linux
|
|
LOW_CARDINAL_EXCEPTION_GROUPING: "false"
|
|
SIGNOZ_OTEL_COLLECTOR_CLICKHOUSE_DSN: tcp://clickhouse:9000
|
|
SIGNOZ_OTEL_COLLECTOR_CLICKHOUSE_CLUSTER: cluster
|
|
SIGNOZ_OTEL_COLLECTOR_CLICKHOUSE_REPLICATION: "true"
|
|
SIGNOZ_OTEL_COLLECTOR_TIMEOUT: 10m
|
|
ports:
|
|
# OTLP gRPC receiver
|
|
- ${EXPOSE_OTLP_GRPC_PORT:-4317}:4317
|
|
# OTLP HTTP receiver
|
|
- ${EXPOSE_OTLP_HTTP_PORT:-4318}:4318
|
|
networks:
|
|
- signoz
|
|
- pipeline
|
|
|
|
# ===========================================================================
|
|
# Telemetry Store Migrator — runs ClickHouse migrations
|
|
# ===========================================================================
|
|
migrator:
|
|
image: signoz/signoz-otel-collector:${OTELCOL_VERSION:-v0.144.5}
|
|
restart: on-failure
|
|
depends_on:
|
|
clickhouse:
|
|
condition: service_healthy
|
|
environment:
|
|
SIGNOZ_OTEL_COLLECTOR_CLICKHOUSE_DSN: tcp://clickhouse:9000
|
|
SIGNOZ_OTEL_COLLECTOR_CLICKHOUSE_CLUSTER: cluster
|
|
SIGNOZ_OTEL_COLLECTOR_CLICKHOUSE_REPLICATION: "true"
|
|
SIGNOZ_OTEL_COLLECTOR_TIMEOUT: 10m
|
|
entrypoint:
|
|
- /bin/sh
|
|
command:
|
|
- -c
|
|
- |
|
|
echo "Waiting 30s for ClickHouse cluster to stabilize..." && sleep 30 &&
|
|
/signoz-otel-collector migrate bootstrap &&
|
|
/signoz-otel-collector migrate sync up &&
|
|
/signoz-otel-collector migrate async up
|
|
networks:
|
|
- signoz
|
|
|
|
networks:
|
|
signoz:
|
|
name: signoz
|
|
driver: bridge
|
|
pipeline:
|
|
name: pipeline
|
|
external: true
|
|
# swag:
|
|
# name: swag
|
|
# external: true
|
|
|
|
volumes: {}
|