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

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.

Поддержка типа JSON

Beta feature. Learn more.
Beta Feature - not production ready

Поддержка типа JSON в ClickStack находится в статусе бета-версии. Хотя сам тип JSON готов к промышленной эксплуатации в ClickHouse 25.3+, его интеграция в ClickStack всё ещё активно разрабатывается и может иметь ограничения, изменяться в будущем или содержать ошибки.

Поддержка типа JSON в ClickStack доступна в статусе бета-версии, начиная с версии 2.0.4.

О преимуществах этого типа см. раздел Преимущества типа JSON.

Чтобы включить поддержку типа JSON, вам необходимо задать следующие переменные окружения:

  • OTEL_AGENT_FEATURE_GATE_ARG='--feature-gates=clickhouse.json' — включает поддержку в OTel collector, гарантируя, что схемы создаются с использованием типа JSON.
  • BETA_CH_OTEL_JSON_SCHEMA_ENABLED=true (только ClickStack Open Source) — включает поддержку в приложении ClickStack UI, позволяя выполнять запросы к данным JSON.

Чтобы задать эти параметры, измените соответствующие сервисы в docker-compose.yml:

  app:
    image: ${IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION}
    ports:
      - ${HYPERDX_API_PORT}:${HYPERDX_API_PORT}
      - ${HYPERDX_APP_PORT}:${HYPERDX_APP_PORT}
    environment:
      BETA_CH_OTEL_JSON_SCHEMA_ENABLED: true # enable JSON
      FRONTEND_URL: ${HYPERDX_APP_URL}:${HYPERDX_APP_PORT}
      HYPERDX_API_KEY: ${HYPERDX_API_KEY}
      HYPERDX_API_PORT: ${HYPERDX_API_PORT}
    # truncated for brevity

  otel-collector:
    image: ${OTEL_COLLECTOR_IMAGE_NAME_DOCKERHUB}:${IMAGE_VERSION}
    environment:
      OTEL_AGENT_FEATURE_GATE_ARG: '--feature-gates=clickhouse.json' # enable JSON
      CLICKHOUSE_ENDPOINT: 'tcp://ch-server:9000?dial_timeout=10s' 
      # truncated for brevity