Это руководство предназначено для существующих пользователей ClickHouse Cloud. Если вы только начинаете работать с ClickHouse Cloud, рекомендуем руководство Начало работы по Управляемому ClickStack.
В этом варианте развертывания и ClickHouse, и интерфейс ClickStack (HyperDX) размещаются в ClickHouse Cloud, что сводит к минимуму количество компонентов, которые пользователю нужно поддерживать самостоятельно.
Помимо сокращения затрат на управление инфраструктурой, этот вариант развертывания обеспечивает интеграцию аутентификации с ClickHouse Cloud SSO/SAML. В отличие от самоуправляемых развертываний, здесь также не нужно разворачивать экземпляр MongoDB для хранения состояния приложения — например, панелей мониторинга, сохранённых поисков, пользовательских настроек и оповещений. Пользователи также получают:
- Автоматическое масштабирование вычислительных ресурсов независимо от хранилища
- Недорогое и практически неограниченное хранение на базе объектного хранилища
- Возможность независимо изолировать рабочие нагрузки чтения и записи с помощью хранилищ.
- Интегрированную аутентификацию
- Автоматизированные резервные копии
- Функции безопасности и соответствия требованиям
- Беспроблемные обновления
В этом режиме ингестия данных полностью остаётся в зоне ответственности пользователя. Вы можете отправлять данные в Управляемый ClickStack с помощью собственного OpenTelemetry Collector, прямой ингестии из клиентских библиотек, встроенных в ClickHouse движков таблиц (например, Kafka или S3), ETL-конвейеров или ClickPipes — управляемого сервиса ингестии ClickHouse Cloud. Такой подход обеспечивает самый простой и производительный способ работы с ClickStack.
Подходит для
Эта схема развертывания идеально подходит в следующих случаях:
- У вас уже есть данные обсервабилити в ClickHouse Cloud, и вы хотите визуализировать их с помощью ClickStack.
- Вы управляете крупномасштабным развертыванием обсервабилити и вам нужны выделенные производительность и масштабируемость ClickStack, работающего на ClickHouse Cloud.
- Вы уже используете ClickHouse Cloud для аналитики и хотите инструментировать приложение с помощью библиотек инструментации ClickStack, отправляя данные в тот же кластер. В этом случае мы рекомендуем использовать хранилища, чтобы изолировать вычислительные ресурсы для рабочих нагрузок обсервабилити.
Шаги настройки
В этом руководстве предполагается, что вы уже создали сервис ClickHouse Cloud. Если вы еще не создали сервис, воспользуйтесь руководством Начало работы по Управляемому ClickStack. В результате вы получите сервис в том же состоянии, что и в этом руководстве, то есть готовый к приему данных обсервабилити с включенным ClickStack.
Создайте новый сервис
На главной странице ClickHouse Cloud выберите New service, чтобы создать новый сервис.

Укажите провайдера, регион и ресурс
Выберите провайдера Cloud и регион.
При выборе объёма CPU и памяти ориентируйтесь на ожидаемую пропускную способность ингестии ClickStack. В таблице ниже приведены рекомендации по подбору этих ресурсов.
| Месячный объём ингестии | Рекомендуемые вычислительные ресурсы |
|---|---|
| < 10 TB / month | 2 vCPU × 3 реплики |
| 10–50 TB / month | 4 vCPU × 3 реплики |
| 50–100 TB / month | 8 vCPU × 3 реплики |
| 100–500 TB / month | 30 vCPU × 3 реплики |
| 1 PB+ / month | 59 vCPU × 3 реплики |
Эти рекомендации основаны на следующих предположениях:
- Под объёмом данных понимается месячный объём ингестии в несжатом виде; это относится как к журналам, так и к трейсам.
- Шаблоны запросов типичны для сценариев обсервабилити, при этом большинство запросов нацелено на недавние данные, обычно за последние 24 часа.
- Ингестия происходит относительно равномерно в течение месяца. Если вы ожидаете всплески трафика или пики, следует предусмотреть дополнительный запас ресурсов.
- Хранение организовано отдельно через Объектное хранилище ClickHouse Cloud и не является ограничивающим фактором для срока хранения. Мы предполагаем, что к данным, хранящимся длительное время, обращаются нечасто.
Для шаблонов доступа, которые регулярно охватывают более длинные временные диапазоны, выполняют тяжёлые агрегации или рассчитаны на большое число одновременных пользователей, может потребоваться больше вычислительных ресурсов.
Хотя две реплики могут удовлетворить требованиям к CPU и памяти для заданной пропускной способности ингестии, мы рекомендуем по возможности использовать три реплики, чтобы обеспечить ту же суммарную ёмкость и повысить отказоустойчивость сервиса.
После указания требований подготовка вашего сервиса Управляемый ClickStack займёт несколько минут. Пока идёт подготовка, можете изучить остальные разделы консоли ClickHouse Cloud.
После завершения подготовки пункт 'ClickStack' в левом меню станет доступен.
Настройте ингестию
После подготовки сервиса убедитесь, что он выбран, и выберите "ClickStack" в левом меню.
Выберите "Начать ингестию", и вам будет предложено выбрать источник ингестии. Управляемый ClickStack поддерживает OpenTelemetry и Vector в качестве основных источников ингестии. Однако пользователи также могут отправлять данные напрямую в ClickHouse в собственной схеме, используя любые из интеграций, поддерживаемых ClickHouse Cloud.
Чтобы отправлять данные OpenTelemetry в Управляемый ClickStack, рекомендуется использовать OpenTelemetry Collector. Коллектор выступает в роли шлюза: он получает данные OpenTelemetry от ваших приложений (и других коллекторов) и пересылает их в ClickHouse Cloud.
Если у вас коллектор еще не запущен, выполните приведенные ниже шаги. Если у вас уже есть существующие коллекторы, ниже также приведен пример конфигурации.
Запуск коллектора
Ниже рассматривается рекомендуемый вариант — использование дистрибутива ClickStack для OpenTelemetry Collector, который включает дополнительную обработку и специально оптимизирован для ClickHouse Cloud. Если вы хотите использовать собственный OpenTelemetry Collector, см. "Настройка существующих коллекторов."
Чтобы быстро начать, скопируйте и выполните показанную команду Docker.

Эта команда должна уже содержать ваши учетные данные для подключения.
Выполнение этой единственной команды запускает коллектор ClickStack с конечными точками OTLP, доступными на портах 4317 (gRPC) и 4318 (HTTP). Если у вас уже настроены инструментация OpenTelemetry и агенты, вы можете сразу начать отправлять телеметрические данные в эти конечные точки.
Настройка существующих коллекторов
Вы также можете настроить собственные OpenTelemetry Collectors или использовать собственный дистрибутив коллектора.
Для этого вам предоставляется пример конфигурации OpenTelemetry Collector, в которой используется ClickHouse exporter с подходящими настройками и открыты приёмники OTLP. Эта конфигурация соответствует интерфейсам и поведению, ожидаемым дистрибутивом ClickStack.
Замените плейсхолдеры конечной точки и пароля учётными данными, сгенерированными ClickStack:
receivers:
otlp/hyperdx:
protocols:
grpc:
include_metadata: true
endpoint: "0.0.0.0:4317"
http:
cors:
allowed_origins: ["*"]
allowed_headers: ["*"]
include_metadata: true
endpoint: "0.0.0.0:4318"
processors:
batch:
memory_limiter:
# 80% of maximum memory up to 2G, adjust for low memory environments
limit_mib: 1500
# 25% of limit up to 2G, adjust for low memory environments
spike_limit_mib: 512
check_interval: 5s
connectors:
routing/logs:
default_pipelines: [logs/out-default]
error_mode: ignore
table:
- context: log
statement: route() where IsMatch(attributes["rr-web.event"], ".*")
pipelines: [logs/out-rrweb]
exporters:
clickhouse/rrweb:
database: default
endpoint: <clickhouse_cloud_endpoint>
password: <your_password_here>
username: default
ttl: 720h
logs_table_name: hyperdx_sessions
timeout: 5s
retry_on_failure:
enabled: true
initial_interval: 5s
max_interval: 30s
max_elapsed_time: 300s
clickhouse:
database: default
endpoint: <clickhouse_cloud_endpoint>
password: <your_password_here>
username: default
ttl: 720h
timeout: 5s
retry_on_failure:
enabled: true
initial_interval: 5s
max_interval: 30s
max_elapsed_time: 300s
service:
pipelines:
traces:
receivers: [otlp/hyperdx]
processors: [memory_limiter, batch]
exporters: [clickhouse]
metrics:
receivers: [otlp/hyperdx]
processors: [memory_limiter, batch]
exporters: [clickhouse]
logs/in:
receivers: [otlp/hyperdx]
exporters: [routing/logs]
logs/out-default:
receivers: [routing/logs]
processors: [memory_limiter, batch]
exporters: [clickhouse]
logs/out-rrweb:
receivers: [routing/logs]
processors: [memory_limiter, batch]
exporters: [clickhouse/rrweb]
Дополнительные сведения о настройке коллекторов OpenTelemetry см. в разделе "Ингестия с OpenTelemetry."
Запуск ингестии (необязательно)
Если у вас есть существующие приложения или инфраструктура, которые нужно инструментировать с помощью OpenTelemetry, перейдите к соответствующим руководствам по ссылкам в интерфейсе.
Чтобы инструментировать приложения для сбора трассировок и журналов, используйте поддерживаемые SDK для языков, которые отправляют данные в ваш OpenTelemetry Collector, выступающий в роли шлюза для ингестии в Управляемый ClickStack.
Журналы можно собирать с помощью коллекторов OpenTelemetry, работающих в режиме агента и пересылающих данные в тот же коллектор. Для мониторинга Kubernetes следуйте отдельному руководству. Для других интеграций см. наши краткие руководства.
Демонстрационные данные
Если у вас пока нет собственных данных, попробуйте один из наших примеров наборов данных.
- Пример набора данных - Загрузите пример набора данных из нашей публичной демоверсии. Диагностируйте простую проблему.
- Локальные файлы и метрики - Загрузите локальные файлы и отслеживайте систему в OSX или Linux с помощью локального OTel collector.
Vector — это высокопроизводительный, не зависящий от поставщика конвейер данных для обсервабилити, особенно популярный для приёма журналов благодаря гибкости и низкому потреблению ресурсов.
При использовании Vector с ClickStack пользователи сами определяют схемы. Эти схемы могут соответствовать соглашениям OpenTelemetry, но также могут быть полностью произвольными и описывать пользовательские структуры событий.
Ниже предполагается, что у вас уже запущен экземпляр Vector, предварительно настроенный с конвейерами приёма и отправляющий данные.
Создайте базу данных и таблицу
Для Vector необходимо, чтобы таблица и схема были определены до начала ингестии данных.
Сначала создайте базу данных. Это можно сделать через консоль ClickHouse Cloud.
Например, создайте базу данных для журналов:
CREATE DATABASE IF NOT EXISTS logsЗатем создайте таблицу, схема которой соответствует структуре данных журналов. В примере ниже используется классический формат журнала доступа Nginx:
CREATE TABLE logs.nginx_logs
(
`time_local` DateTime,
`remote_addr` IPv4,
`remote_user` LowCardinality(String),
`request` String,
`status` UInt16,
`body_bytes_sent` UInt64,
`http_referer` String,
`http_user_agent` String,
`http_x_forwarded_for` LowCardinality(String),
`request_time` Float32,
`upstream_response_time` Float32,
`http_host` String
)
ENGINE = MergeTree
ORDER BY (toStartOfMinute(time_local), status, remote_addr);Ваша таблица должна соответствовать выходной схеме, которую формирует Vector. При необходимости скорректируйте схему под свои данные, следуя рекомендациям из лучших практик работы со схемой.
Мы настоятельно рекомендуем разобраться, как в ClickHouse работают первичные ключи, и выбрать ключ сортировки с учётом характера доступа к данным. См. рекомендации для ClickStack по выбору первичного ключа.
Когда таблица будет создана, скопируйте показанный фрагмент конфигурации. При необходимости настройте вход так, чтобы он использовал существующие конвейеры, а также укажите целевую таблицу и базу данных. Учётные данные должны быть уже подставлены.

Больше примеров ингестии данных с Vector см. в разделе "Ингестия с Vector" или в документации по sink ClickHouse в Vector для расширенных настроек.
Выберите сервис
На главной странице ClickHouse Cloud выберите сервис, для которого нужно включить Управляемый ClickStack.

Настройте ингестию
Если автоматическое обнаружение завершится неудачей или у вас нет существующих таблиц, система предложит вам настроить ингестию.

Выберите "Start Ingestion" — вам будет предложено выбрать источник ингестии. Управляемый ClickStack поддерживает OpenTelemetry и Vector в качестве основных источников ингестии. При этом пользователи также могут отправлять данные напрямую в ClickHouse в собственной схеме, используя любую из интеграций, поддерживаемых ClickHouse Cloud.

Чтобы отправлять данные OpenTelemetry в Управляемый ClickStack, рекомендуется использовать OpenTelemetry Collector. Он выступает в роли шлюза: принимает данные OpenTelemetry от ваших приложений (и других коллекторов) и пересылает их в ClickHouse Cloud.
Если у вас ещё нет запущенного коллектора, запустите его, выполнив шаги ниже. Если у вас уже есть коллекторы, ниже также приведён пример конфигурации.
Запуск коллектора
Ниже рассматривается рекомендуемый вариант — использование дистрибутива ClickStack для OpenTelemetry Collector, который включает дополнительную обработку и оптимизирован специально для ClickHouse Cloud. Если вы хотите использовать собственный OpenTelemetry Collector, см. "Настройка существующих коллекторов"
Чтобы быстро начать, скопируйте и выполните показанную Docker-команду.

Измените эту команду, подставив учётные данные вашего сервиса, сохранённые при его создании.
Выполнение этой единственной команды запускает коллектор ClickStack с конечными точками OTLP, доступными на портах 4317 (gRPC) и 4318 (HTTP). Если у вас уже настроены инструментация OpenTelemetry и агенты, вы можете сразу начать отправлять данные телеметрии на эти конечные точки.
Настройка существующих коллекторов
Вы также можете настроить собственные OpenTelemetry Collectors или использовать свой дистрибутив коллектора.
Для этого также предоставляется пример конфигурации OpenTelemetry Collector, использующей ClickHouse exporter с подходящими настройками и открывающей OTLP receivers. Эта конфигурация соответствует интерфейсам и поведению, ожидаемым дистрибутивом ClickStack.
Замените плейсхолдеры конечной точки и пароля учётными данными, сгенерированными ClickStack:
receivers:
otlp/hyperdx:
protocols:
grpc:
include_metadata: true
endpoint: "0.0.0.0:4317"
http:
cors:
allowed_origins: ["*"]
allowed_headers: ["*"]
include_metadata: true
endpoint: "0.0.0.0:4318"
processors:
batch:
memory_limiter:
# 80% of maximum memory up to 2G, adjust for low memory environments
limit_mib: 1500
# 25% of limit up to 2G, adjust for low memory environments
spike_limit_mib: 512
check_interval: 5s
connectors:
routing/logs:
default_pipelines: [logs/out-default]
error_mode: ignore
table:
- context: log
statement: route() where IsMatch(attributes["rr-web.event"], ".*")
pipelines: [logs/out-rrweb]
exporters:
clickhouse/rrweb:
database: default
endpoint: <clickhouse_cloud_endpoint>
password: <your_password_here>
username: default
ttl: 720h
logs_table_name: hyperdx_sessions
timeout: 5s
retry_on_failure:
enabled: true
initial_interval: 5s
max_interval: 30s
max_elapsed_time: 300s
clickhouse:
database: default
endpoint: <clickhouse_cloud_endpoint>
password: <your_password_here>
username: default
ttl: 720h
timeout: 5s
retry_on_failure:
enabled: true
initial_interval: 5s
max_interval: 30s
max_elapsed_time: 300s
service:
pipelines:
traces:
receivers: [otlp/hyperdx]
processors: [memory_limiter, batch]
exporters: [clickhouse]
metrics:
receivers: [otlp/hyperdx]
processors: [memory_limiter, batch]
exporters: [clickhouse]
logs/in:
receivers: [otlp/hyperdx]
exporters: [routing/logs]
logs/out-default:
receivers: [routing/logs]
processors: [memory_limiter, batch]
exporters: [clickhouse]
logs/out-rrweb:
receivers: [routing/logs]
processors: [memory_limiter, batch]
exporters: [clickhouse/rrweb]
Подробнее о настройке OpenTelemetry Collectors см. в разделе "Ингестия с OpenTelemetry"
Начало ингестии (необязательно)
Если у вас уже есть приложения или инфраструктура, которые нужно инструментировать с помощью OpenTelemetry, перейдите к соответствующим руководствам по ссылкам из раздела "Подключить приложение".
Чтобы инструментировать приложения для сбора трассировок и журналов, используйте SDK для поддерживаемых языков, которые отправляют данные в ваш OpenTelemetry Collector, выступающий в роли шлюза для ингестии в Управляемый ClickStack.
Журналы можно собирать с помощью OpenTelemetry Collectors, работающих в режиме agent и пересылающих данные в тот же коллектор. Для мониторинга Kubernetes следуйте специальному руководству. Для других интеграций см. наши руководства по быстрому старту.
Vector — это высокопроизводительный, не зависящий от поставщика конвейер данных для обсервабилити, особенно популярный для ингестии логов благодаря своей гибкости и низкому потреблению ресурсов.
При использовании Vector с ClickStack пользователи сами определяют схемы. Эти схемы могут соответствовать соглашениям OpenTelemetry, но также могут быть полностью пользовательскими и описывать заданные пользователем структуры событий.
Ниже предполагается, что у вас уже запущен экземпляр Vector, предварительно настроенный с конвейерами ингестии и доставляющий данные.
Создайте базу данных и таблицу
Для работы Vector перед ингестией данных необходимо заранее определить таблицу и схему.
Сначала создайте базу данных. Это можно сделать через консоль ClickHouse Cloud.
Например, создайте базу данных для логов:
CREATE DATABASE IF NOT EXISTS logsЗатем создайте таблицу, схема которой соответствует структуре данных ваших логов. В примере ниже используется классический формат логов доступа Nginx:
CREATE TABLE logs.nginx_logs
(
`time_local` DateTime,
`remote_addr` IPv4,
`remote_user` LowCardinality(String),
`request` String,
`status` UInt16,
`body_bytes_sent` UInt64,
`http_referer` String,
`http_user_agent` String,
`http_x_forwarded_for` LowCardinality(String),
`request_time` Float32,
`upstream_response_time` Float32,
`http_host` String
)
ENGINE = MergeTree
ORDER BY (toStartOfMinute(time_local), status, remote_addr);Ваша таблица должна соответствовать выходной схеме, которую формирует Vector. При необходимости скорректируйте схему под свои данные, следуя рекомендованным лучшим практикам проектирования схемы.
Мы настоятельно рекомендуем разобраться, как работают первичные ключи в ClickHouse, и выбирать ключ сортировки с учётом ваших сценариев доступа к данным. См. рекомендации для ClickStack по выбору первичного ключа.
После создания таблицы скопируйте показанный фрагмент конфигурации. При необходимости настройте вход так, чтобы использовать существующие конвейеры, а также укажите целевую таблицу и базу данных. Учётные данные должны быть подставлены автоматически.

Дополнительные примеры приёма данных с помощью Vector см. в "Приём данных с Vector" или в документации по sink ClickHouse в Vector для ознакомления с расширенными параметрами.
Дополнительные задачи
Предоставление доступа к Управляемому ClickStack
- Перейдите к своему сервису в консоли ClickHouse Cloud
- Откройте Settings → SQL Console Access
- Установите подходящий уровень доступа для каждого пользователя:
- Service Admin → Full Access - Требуется для включения оповещений
- Service Read Only → Read Only - Может просматривать данные обсервабилити и создавать панели мониторинга
- No access - Не может получить доступ к HyperDX

Использование ClickStack с вычислительными ресурсами в режиме только для чтения
Интерфейс ClickStack может полностью работать на сервисе ClickHouse Cloud в режиме только для чтения. Такая конфигурация рекомендуется, если вы хотите изолировать нагрузки ингестии и запросов.
Как ClickStack выбирает вычислительные ресурсы
Интерфейс ClickStack всегда подключается к тому сервису ClickHouse, из которого он запускается в консоли ClickHouse Cloud.
Это означает следующее:
- Если вы открываете ClickStack из сервиса только для чтения, все запросы, отправляемые из интерфейса ClickStack, будут выполняться на соответствующих ресурсах только для чтения.
- Если вы открываете ClickStack из сервиса с возможностью чтения и записи, ClickStack будет использовать соответствующие вычислительные ресурсы.
Для обеспечения режима только для чтения не требуется никакой дополнительной настройки в ClickStack.
Рекомендуемая конфигурация
Чтобы запустить ClickStack на вычислительных ресурсах в режиме только для чтения:
- Создайте или выберите сервис ClickHouse Cloud в хранилище, настроенный в режиме только для чтения.
- В консоли ClickHouse Cloud выберите сервис только для чтения.
- Запустите ClickStack из меню навигации слева.
После запуска интерфейс ClickStack автоматически привяжется к этому сервису только для чтения.
Добавление дополнительных источников данных
ClickStack изначально поддерживает OpenTelemetry, но не ограничивается им — при желании можно использовать собственные схемы таблиц.
Ниже описано, как добавлять дополнительные источники данных помимо тех, которые настраиваются автоматически.
Использование схем OpenTelemetry
Если вы используете OTel collector для создания базы данных и таблиц в ClickHouse, оставьте все значения по умолчанию в форме создания источника и укажите в поле Table значение otel_logs, чтобы создать источник логов. Все остальные настройки должны определиться автоматически, после чего вы сможете нажать Save New Source.

Чтобы создать источники для трассировок и OTel-метрик, выберите Create New Source в верхнем меню.

Здесь выберите нужный тип источника, а затем соответствующую таблицу; например, для трассировок выберите таблицу otel_traces. Все настройки должны определиться автоматически.

Использование пользовательских схем
Пользователи, которым нужно подключить ClickStack к существующему сервису с данными, могут при необходимости указать настройки базы данных и таблицы. Если таблицы соответствуют схемам OpenTelemetry для ClickHouse, настройки будут определены автоматически.
Если вы используете собственную схему, мы рекомендуем создать источник логов и убедиться, что указаны обязательные поля. Подробнее см. в разделе "Настройки источника логов".
Выбор схемы: Map или JSON
По умолчанию ClickStack хранит атрибуты в столбцах Map(LowCardinality(String), String). Это рекомендуемая схема для рабочих нагрузок обсервабилити. В сочетании с сериализацией Map по бакетам и текстовыми индексами по ключам и значениям в Map она обеспечивает точечные lookup-операции без накладных расходов на приём для каждого ключа, характерных для динамических подстолбцов JSON.
Схема с типом JSON доступна в статусе бета для оценки на рабочих нагрузках с небольшим стабильным набором ключей атрибутов. Использовать её по умолчанию не рекомендуется. Полное сравнение и переменные окружения, необходимые для включения поддержки JSON, см. в разделе Map vs JSON type.

