Перейти к основному содержимому
Перейти к основному содержимому

Docker Compose

Все компоненты ClickStack Open Source распространяются отдельно в виде отдельных Docker-образов:

  • ClickHouse
  • HyperDX
  • OpenTelemetry (OTel) collector
  • MongoDB

Эти образы можно комбинировать и развёртывать локально с помощью Docker Compose.

Docker Compose открывает дополнительные порты для обсервабилити и ингестии на основе стандартной конфигурации otel-collector:

  • 13133: endpoint проверки работоспособности для расширения health_check
  • 24225: Fluentd-приёмник для ингестии логов
  • 4317: OTLP gRPC-приёмник (стандарт для трейсов, логов и метрик)
  • 4318: OTLP HTTP-приёмник (альтернатива gRPC)
  • 8888: endpoint метрик Prometheus для мониторинга самого коллектора

Эти порты обеспечивают интеграцию с различными источниками телеметрии и делают OpenTelemetry collector готовым к эксплуатации в продакшене для разнообразных сценариев ингестии.

Подходит для

  • Локального тестирования
  • Proof-of-concept проектов / создания прототипов
  • Продакшн-развертываний, где отказоустойчивость не требуется, и одного сервера достаточно для размещения всех данных ClickHouse
  • При развертывании ClickStack, но размещении ClickHouse отдельно, например с использованием ClickHouse Cloud.

Шаги развертывания


Клонирование репозитория

Чтобы развернуть с помощью Docker Compose, клонируйте репозиторий ClickStack, перейдите в каталог и выполните docker compose up:

git clone https://github.com/ClickHouse/ClickStack.git
docker compose up

Перейдите по адресу http://localhost:8080, чтобы открыть интерфейс HyperDX.

Создайте пользователя, указав имя пользователя и пароль, соответствующий требованиям.

После нажатия Create будут созданы источники данных для экземпляра ClickHouse, развернутого с помощью Docker Compose.

Переопределение подключения по умолчанию

Вы можете переопределить подключение по умолчанию к встроенному экземпляру ClickHouse. Подробнее см. раздел "Использование ClickHouse Cloud".

Интерфейс HyperDX

Пример использования альтернативного экземпляра ClickHouse приведен в разделе "Использование ClickHouse Cloud".

Заполните данные подключения

Чтобы подключиться к развернутому экземпляру 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

Настройка OTel collector

Конфигурацию OTel collector можно при необходимости изменить — см. «Изменение конфигурации».

Использование ClickHouse Cloud

Этот дистрибутив можно использовать с ClickHouse Cloud, но он отличается от Managed ClickStack. В этой конфигурации вы самостоятельно управляете UI ClickStack, используя ClickHouse Cloud только для вычислений и хранения. Если у вас нет особой причины управлять UI отдельно, рекомендуется использовать Managed ClickStack, который включает встроенную аутентификацию и дополнительные корпоративные функции и устраняет необходимость самостоятельно управлять UI ClickStack.

Вам необходимо:

  • Удалить сервис ClickHouse из файла docker-compose.yml. При тестировании это необязательно, так как развернутый экземпляр ClickHouse просто будет игнорироваться, хотя и будет расходовать локальные ресурсы. Если вы удаляете сервис, убедитесь, что любые ссылки на него, такие как depends_on, также удалены.

  • Настроить OTel collector на использование экземпляра ClickHouse Cloud, задав переменные окружения CLICKHOUSE_ENDPOINT, CLICKHOUSE_USER и CLICKHOUSE_PASSWORD в compose-файле. В частности, добавьте переменные окружения в сервис OTel collector:

    otel-collector:
        image: ${OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION}
        environment:
          CLICKHOUSE_ENDPOINT: '<CLICKHOUSE_ENDPOINT>' # https endpoint here
          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 extension
          - '24225:24225' # fluentd receiver
          - '4317:4317' # OTLP gRPC receiver
          - '4318:4318' # OTLP http receiver
          - '8888:8888' # metrics extension
        restart: always
        networks:
          - internal
    

    Значение CLICKHOUSE_ENDPOINT должно быть конечной точкой HTTPS ClickHouse Cloud, включая порт 8443, например: https://mxl4k3ul6a.us-east-2.aws.clickhouse.com:8443.

  • Подключившись к UI HyperDX и создавая подключение к ClickHouse, используйте свои учетные данные ClickHouse Cloud.

Выбор schema: Map или JSON

По умолчанию ClickStack хранит атрибуты в столбцах Map(LowCardinality(String), String). Это рекомендуемая schema для рабочих нагрузок обсервабилити. В сочетании с бакетизированной сериализацией Map и текстовыми индексами по ключам и значениям Map она обеспечивает выборочный поиск без накладных расходов на приём данных для каждого ключа, характерных для динамических JSON-подстолбцов.

Schema с типом JSON доступна в статусе бета для оценки на рабочих нагрузках с небольшим стабильным набором ключей атрибутов. Она не рекомендуется в качестве schema по умолчанию. Полное сравнение и список переменных окружения, необходимых для включения поддержки JSON, см. в разделе Map vs JSON type.