Этот Docker-образ включает все компоненты ClickStack с открытым исходным кодом:
- ClickHouse
- HyperDX
- коллектор OpenTelemetry (OTel) (с OTLP на портах
4317и4318) - MongoDB (для хранения постоянного состояния приложения)
Этот вариант включает аутентификацию, благодаря чему панели мониторинга, оповещения и сохранённые поиски сохраняются для разных сеансов и пользователей.
Подходит для
- Демонстраций
- Локального тестирования всего стека
Шаги развертывания
Развертывание с помощью Docker
Следующая команда запустит OpenTelemetry Collector (на портах 4317 и 4318) и интерфейс HyperDX (на порту 8080).
docker run -p 8080:8080 -p 4317:4317 -p 4318:4318 clickhouse/clickstack-all-in-one:latestПриём данных
Инструкции по приёму данных см. в разделе "Ингестия данных".
Сохранение данных и настроек
Чтобы данные и настройки сохранялись после перезапуска контейнера, можно изменить приведённую выше команду docker и смонтировать пути /data/db, /var/lib/clickhouse и /var/log/clickhouse-server. Например:
# убедитесь, что директории существуют
mkdir -p .volumes/db .volumes/ch_data .volumes/ch_logs
# измените команду для монтирования путей
docker run \
-p 8080:8080 \
-p 4317:4317 \
-p 4318:4318 \
-v "$(pwd)/.volumes/db:/data/db" \
-v "$(pwd)/.volumes/ch_data:/var/lib/clickhouse" \
-v "$(pwd)/.volumes/ch_logs:/var/log/clickhouse-server" \
clickhouse/clickstack-all-in-one:latestРазвертывание в продакшн
Этот вариант не следует развертывать в продакшн по следующим причинам:
- Непостоянное хранилище: Все данные хранятся во встроенной в Docker файловой системе overlay. Такая конфигурация не обеспечивает производительность при масштабировании, а данные будут потеряны, если контейнер удалить или перезапустить, — если только пользователи не смонтируют необходимые файловые пути.
- Отсутствие изоляции компонентов: Все компоненты работают в одном Docker-контейнере. Это не позволяет независимо масштабировать их и отслеживать их состояние, а любые ограничения
cgroupприменяются глобально ко всем процессам. В результате компоненты могут конкурировать за CPU и память.
Настройка портов
Если вам нужно изменить порты приложения (8080) или API (8000), на которых работает HyperDX Local, потребуется изменить команду docker run, чтобы пробросить нужные порты и задать несколько переменных окружения.
Порты OpenTelemetry можно изменить, просто скорректировав флаги проброса портов. Например, замените -p 4318:4318 на -p 4999:4318, чтобы изменить HTTP-порт OpenTelemetry на 4999.
docker run -p 8080:8080 -p 4317:4317 -p 4999:4318 clickhouse/clickstack-all-in-one:latestИспользование ClickHouse Cloud
Этот дистрибутив можно использовать с ClickHouse Cloud. Хотя локальный экземпляр ClickHouse всё равно будет развернут (и проигнорирован), OTel collector можно настроить для работы с экземпляром ClickHouse Cloud, задав переменные окружения CLICKHOUSE_ENDPOINT, CLICKHOUSE_USER и CLICKHOUSE_PASSWORD.
Например:
export CLICKHOUSE_ENDPOINT=<HTTPS ENDPOINT>
export CLICKHOUSE_USER=<CLICKHOUSE_USER>
export CLICKHOUSE_PASSWORD=<CLICKHOUSE_PASSWORD>
docker run -e CLICKHOUSE_ENDPOINT=${CLICKHOUSE_ENDPOINT} -e CLICKHOUSE_USER=default -e CLICKHOUSE_PASSWORD=${CLICKHOUSE_PASSWORD} -p 8080:8080 -p 4317:4317 -p 4318:4318 clickhouse/clickstack-all-in-one:latestЗначение CLICKHOUSE_ENDPOINT должно быть HTTPS-конечной точкой ClickHouse Cloud с указанием порта 8443, например https://mxl4k3ul6a.us-east-2.aws.clickhouse.com:8443
После входа в интерфейс HyperDX перейдите в Team Settings и создайте подключение к вашему сервису ClickHouse Cloud, а затем добавьте необходимые источники.
Настройка OpenTelemetry Collector
При необходимости конфигурацию OpenTelemetry Collector можно изменить — см. "Изменение конфигурации".
Выбор схемы: Map или JSON
По умолчанию ClickStack хранит атрибуты в столбцах Map(LowCardinality(String), String). Это рекомендуемая схема для рабочих нагрузок обсервабилити. В сочетании с сериализацией Map по бакетам и текстовыми индексами по ключам и значениям в Map она обеспечивает точечные lookup-операции без накладных расходов на приём для каждого ключа, характерных для динамических подстолбцов JSON.
Схема с типом JSON доступна в статусе бета для оценки на рабочих нагрузках с небольшим стабильным набором ключей атрибутов. Использовать её по умолчанию не рекомендуется. Полное сравнение и переменные окружения, необходимые для включения поддержки JSON, см. в разделе Map vs JSON type.
