Все компоненты ClickStack с открытым исходным кодом поставляются по отдельности в виде отдельных Docker-образов:
- ClickHouse
- HyperDX
- OpenTelemetry (OTel) Collector
- MongoDB
Эти образы можно объединить и развернуть локально с помощью Docker Compose.
Docker Compose открывает дополнительные порты для обсервабилити и ингестии на основе стандартной конфигурации otel-collector:
13133: конечная точка проверки работоспособности для расширенияhealth_check24225: приёмник Fluentd для ингестии журналов4317: приёмник OTLP gRPC (стандарт для трассировок, журналов и метрик)4318: приёмник OTLP HTTP (альтернатива gRPC)8888: конечная точка метрик Prometheus для мониторинга самого коллектора
Эти порты позволяют интегрироваться с различными источниками телеметрии и делают OpenTelemetry Collector готовым к использованию в продакшн для самых разных сценариев ингестии.
Подходит для
- Локального тестирования
- Пилотных проектов
- Развертываний в продакшне, где отказоустойчивость не нужна и одного сервера достаточно для хранения всех данных ClickHouse
- Развертывания ClickStack, если ClickHouse размещается отдельно, например в ClickHouse Cloud.
Шаги развертывания
Клонируйте репозиторий
Чтобы развернуть с помощью Docker Compose, клонируйте репозиторий ClickStack, перейдите в каталог и выполните docker-compose up:
git clone https://github.com/ClickHouse/ClickStack.git
docker compose upЗаполните сведения о подключении
Чтобы подключиться к развернутому экземпляру ClickHouse, просто нажмите Create и примите настройки по умолчанию.
Если вы хотите подключиться к собственному внешнему кластеру ClickHouse, например к ClickHouse Cloud, вы можете вручную ввести свои учетные данные для подключения.
Если будет предложено создать источник, оставьте все значения по умолчанию и укажите в поле Table значение otel_logs. Все остальные настройки должны определиться автоматически, после чего можно нажать Save New Source.

Изменение настроек Compose
Вы можете изменить настройки стека, например используемую версию, в файле переменных окружения:
user@example-host clickstack % cat .env
# Used by docker-compose.yml
IMAGE_NAME_DOCKERHUB=clickhouse/clickstack-all-in-one
LOCAL_IMAGE_NAME_DOCKERHUB=clickhouse/clickstack-local
ALL_IN_ONE_IMAGE_NAME_DOCKERHUB=clickhouse/clickstack-all-in-one
OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB=clickhouse/clickstack-otel-collector
CODE_VERSION=2.8.0
IMAGE_VERSION_SUB_TAG=.8.0
IMAGE_VERSION=2
IMAGE_NIGHTLY_TAG=2-nightly
IMAGE_LATEST_TAG=latest
# Set up domain URLs
HYPERDX_API_PORT=8000 #optional (should not be taken by other services)
HYPERDX_APP_PORT=8080
HYPERDX_APP_URL=http://localhost
HYPERDX_LOG_LEVEL=debug
HYPERDX_OPAMP_PORT=4320
# Otel/ClickHouse config
HYPERDX_OTEL_EXPORTER_CLICKHOUSE_DATABASE=defaultНастройка OpenTelemetry collector
При необходимости конфигурацию OTel collector можно изменить — см. «Изменение конфигурации».
Использование ClickHouse Cloud
Этот дистрибутив можно использовать с ClickHouse Cloud, но это отличается от варианта Управляемый ClickStack. В этой конфигурации вы самостоятельно управляете интерфейсом ClickStack, а ClickHouse Cloud используете только для вычислений и хранилища. Если у вас нет веской причины запускать интерфейс отдельно, мы рекомендуем использовать Управляемый ClickStack: он включает встроенную аутентификацию и дополнительные возможности уровня Enterprise, а также избавляет от необходимости самостоятельно управлять интерфейсом ClickStack.
Вам следует:
-
Удалить сервис ClickHouse из файла
docker-compose.yml. При тестировании это необязательно, так как развернутый экземпляр ClickHouse будет просто игнорироваться, хотя и будет впустую расходовать локальные ресурсы. Если вы удаляете сервис, убедитесь, что все ссылки на него, такие какdepends_on, тоже удалены. -
Изменить OTel collector так, чтобы он использовал экземпляр ClickHouse Cloud, задав в файле compose переменные окружения
CLICKHOUSE_ENDPOINT,CLICKHOUSE_USERиCLICKHOUSE_PASSWORD. В частности, добавьте эти переменные окружения в сервис OTel collector:otel-collector: image: ${OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION} environment: CLICKHOUSE_ENDPOINT: '<CLICKHOUSE_ENDPOINT>' # здесь HTTPS-конечная точка CLICKHOUSE_USER: '<CLICKHOUSE_USER>' CLICKHOUSE_PASSWORD: '<CLICKHOUSE_PASSWORD>' HYPERDX_OTEL_EXPORTER_CLICKHOUSE_DATABASE: ${HYPERDX_OTEL_EXPORTER_CLICKHOUSE_DATABASE} HYPERDX_LOG_LEVEL: ${HYPERDX_LOG_LEVEL} OPAMP_SERVER_URL: 'http://app:${HYPERDX_OPAMP_PORT}' ports: - '13133:13133' # расширение health_check - '24225:24225' # приёмник Fluentd - '4317:4317' # приёмник OTLP gRPC - '4318:4318' # приёмник OTLP HTTP - '8888:8888' # расширение метрик restart: always networks: - internalCLICKHOUSE_ENDPOINTдолжен быть HTTPS-конечной точкой ClickHouse Cloud, включая порт8443, например:https://mxl4k3ul6a.us-east-2.aws.clickhouse.com:8443 -
При подключении к интерфейсу HyperDX и создании подключения к ClickHouse используйте свои учётные данные Cloud.
Выбор схемы: Map или JSON
По умолчанию ClickStack хранит атрибуты в столбцах Map(LowCardinality(String), String). Это рекомендуемая схема для рабочих нагрузок обсервабилити. В сочетании с сериализацией Map по бакетам и текстовыми индексами по ключам и значениям в Map она обеспечивает точечные lookup-операции без накладных расходов на приём для каждого ключа, характерных для динамических подстолбцов JSON.
Схема с типом JSON доступна в статусе бета для оценки на рабочих нагрузках с небольшим стабильным набором ключей атрибутов. Использовать её по умолчанию не рекомендуется. Полное сравнение и переменные окружения, необходимые для включения поддержки JSON, см. в разделе Map vs JSON type.
