Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Начало работы с Управляемым ClickStack

Разверните Управляемый ClickStack в ClickHouse Cloud, отправьте тестовое событие через конвейер ингестии и убедитесь, что оно доступно в интерфейсе ClickStack.

ClickHouse Cloud управляет backend ClickHouse, а вы сохраняете контроль над конвейером ингестии и схемой. Управляемый ClickStack предоставляет:

  • Автоматическое масштабирование вычислительных ресурсов независимо от хранилища
  • Недорогое и практически неограниченное хранение на базе объектного хранилища
  • Независимую изоляцию рабочих нагрузок чтения и записи с помощью хранилищ
  • Встроенную аутентификацию
  • Автоматические резервные копии
  • Средства безопасности и соответствия требованиям
  • Бесшовные обновления

Перед началом работы

Вы также можете отправлять данные напрямую в ClickHouse, используя поддерживаемую интеграцию и собственную схему.

Создайте сервис ClickHouse Cloud

Выполните шаг «Создание сервиса ClickHouse» в руководстве по быстрому началу работы с ClickHouse Cloud. Прежде чем продолжить, убедитесь, что сервис запущен.

Подготовьте среду для ингестии

  • Чтобы запустить новый OpenTelemetry Collector, установите Docker. В Kubernetes разверните коллектор с помощью Helm.
  • Чтобы использовать существующий коллектор, запустите его в режиме шлюза и убедитесь, что его дистрибутив включает ClickHouse exporter. В этом руководстве вы добавите необходимую конфигурацию.

Настройка управляемого ClickStack

Выберите источник для ингестии и настройте коллектор

В сервисе ClickHouse Cloud запустите ClickStack. На странице ClickStack Начало работы выберите Начать ингестию.

Начать ингестию

На странице Выберите источник ингестии выберите OpenTelemetry.

Выберите OpenTelemetry в качестве источника ингестии

ClickStack генерирует команду запуска коллектора с учетными данными администратора default. Рекомендуется использовать отдельные учетные данные для ингестии, чтобы отделить доступ для ингестии от административного доступа и не зависеть от пароля администратора.

Создать отдельные учетные данные для ингестии (рекомендуется)

В ClickHouse Cloud откройте SQL-консоль сервиса и выполните:

CREATE USER `clickstack-ingest` IDENTIFIED WITH sha256_password BY '<password>';
GRANT SELECT, INSERT, CREATE DATABASE, CREATE TABLE, CREATE VIEW ON default.* TO `clickstack-ingest`;

В сгенерированной команде замените CLICKHOUSE_USER="default" на CLICKHOUSE_USER="clickstack-ingest" и укажите в CLICKHOUSE_PASSWORD пароль этого пользователя.

Чтобы продолжить с учетными данными администратора default, скопируйте команду на вкладке Запустить коллектор. ClickStack автоматически подставляет конечную точку сервиса. Замените заполнитель пароля паролем сервиса. Если он у вас больше не сохранился, получите или сбросьте сведения о подключении.

Команда имеет следующий вид:

docker run -e CLICKHOUSE_ENDPOINT="https://<host>:8443" \
    -e CLICKHOUSE_USER="default" \
    -e CLICKHOUSE_PASSWORD="<your_password_here>" \
    -p 4317:4317 -p 4318:4318 \
    clickhouse/clickstack-otel-collector:latest

Замените <host> и <your_password_here> значениями для своего сервиса ClickHouse Cloud, затем выполните команду.

Коллектор запускается в интерактивном режиме. Оставьте этот терминал открытым, а для остальных команд из этого руководства используйте второй терминал.

Отправьте тестовые данные

Отправьте тестовую запись журнала с текущей временной меткой:

NOW_NANO="$(date +%s)000000000"

curl -i "http://localhost:4318/v1/logs" \
  -H "Content-Type: application/json" \
  --data-binary @- <<EOF
{
  "resourceLogs": [{
    "resource": {
      "attributes": [{
        "key": "service.name",
        "value": {"stringValue": "clickstack-docs-test"}
      }]
    },
    "scopeLogs": [{
      "scope": {"name": "clickstack-docs-test"},
      "logRecords": [{
        "timeUnixNano": "${NOW_NANO}",
        "severityText": "INFO",
        "body": {"stringValue": "ClickStack ingestion test"}
      }]
    }]
  }]
}
EOF

Если вы используете существующий коллектор, замените http://localhost:4318 на его конечную точку OTLP HTTP. Если приёмник требует аутентификации, добавьте необходимый заголовок в команду curl.

При успешном запросе возвращается HTTP/1.1 200 OK.

Начните работу и подтвердите приём данных

После того как ClickStack обнаружит источники данных OpenTelemetry, выберите Начать изучение, чтобы открыть представление Search. Найдите ClickStack ingestion test.

В результатах должно отображаться тестовое событие с именем сервиса clickstack-docs-test.

Представление журналов ClickStack с тестовым событием ингестии ClickStack

Подготовьте окружение для приёма данных

Начните с существующего конвейера Vector, который умеет отправлять данные в ClickHouse.

Настройка управляемого ClickStack

Выберите Vector и настройте приём данных

В своём сервисе ClickHouse Cloud запустите ClickStack. На странице ClickStack Getting Started выберите Start ingestion.

Начните приём данных

На странице Choose an ingestion source выберите Vector.

Выберите Vector в качестве источника для ингестии

Vector — это высокопроизводительный, независимый от вендоров конвейер данных обсервабилити, особенно популярный для приёма логов благодаря своей гибкости и низкому потреблению ресурсов.

При использовании Vector вместе с ClickStack схему определяете вы. Она может соответствовать соглашениям OpenTelemetry либо содержать поля, специфичные для ваших событий.

Создайте базу данных и таблицу

Создайте базу данных и таблицу перед настройкой sink в Vector.

В ClickHouse Cloud откройте SQL Console вашего сервиса и создайте базу данных:

Например, создайте базу данных для журналов:

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 по выбору первичного ключа.

Настройте sink для ClickHouse

После создания таблицы добавьте sink ClickHouse в конфигурацию Vector:

sinks:
  clickhouse:
    type: clickhouse
    inputs:
      - your_input
    endpoint: "https://<host>:8443"
    database: logs
    table: nginx_logs
    format: json_each_row
    skip_unknown_fields: true
    auth:
      strategy: basic
      user: default
      password: "<your_password_here>"

Замените your_input на входные данные из вашего существующего конвейера. Замените <host> и <your_password_here> на значения вашего сервиса ClickHouse Cloud. При необходимости измените целевую базу данных или таблицу.

Используйте отдельные учётные данные для ингестии (рекомендуется)

Для продакшна создайте отдельного пользователя и предоставьте ему доступ к целевой таблице Vector. В ClickHouse Cloud откройте SQL-консоль вашего сервиса и выполните:

CREATE USER `clickstack-ingest` IDENTIFIED WITH sha256_password BY '<password>';
GRANT SELECT, INSERT ON logs.nginx_logs TO `clickstack-ingest`;

Замените default на clickstack-ingest в sink Vector и укажите в password пароль выделенного пользователя.

Сохраните обновлённую конфигурацию, затем перезагрузите или перезапустите Vector с использованием вашего текущего процесса развертывания.

Дополнительные примеры ингестии данных с помощью Vector приведены в разделе Ингестия с помощью Vector, а расширенные параметры описаны в документации по sink ClickHouse для Vector.

Создайте источник данных ClickStack

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

Форма предзаполняется выражениями для стандартной схемы OpenTelemetry. Для таблицы Nginx, созданной в этом руководстве, задайте для источника следующие значения:

Настройка Значение
Название Журналы Nginx
Тип исходных данных Log
Имя подключения к серверу По умолчанию
База данных журнал
Таблица nginx_logs
Столбец временной метки time_local
SELECT по умолчанию time_local, remote_addr, status, request
Выражение для имени сервиса 'nginx'
Выражение для уровня логирования multiIf(status >= 500, 'ERROR', status >= 400, 'WARN', 'INFO')
Выражение атрибутов журнала map('http.remote_addr', toString(remote_addr), 'http.status_code', toString(status), 'http.request', request)
Выражение атрибутов ресурса map('service.name', 'nginx')
Отображаемый столбец временной метки time_local
Выражение для идентификатора трассировки ''
Выражение для ID span ''
Выражение неявного столбца request

Таблица Nginx не содержит столбца Body. В поле Body Expression укажите:

concat(
  remote_addr, ' ',
  remote_user, ' ',
  '[', formatDateTime(time_local, '%d/%b/%Y:%H:%i:%S %z'), '] ',
  '"', request, '" ',
  toString(status), ' ',
  toString(body_bytes_sent), ' ',
  '"', http_referer, '" ',
  '"', http_user_agent, '" ',
  '"', http_x_forwarded_for, '" ',
  toString(request_time), ' ',
  toString(upstream_response_time), ' ',
  '"', http_host, '"'
)

Остальные настройки source описаны в справочнике по конфигурации ClickStack.

Отправьте тестовые данные

Отправьте тестовое событие на вход существующего конвейера Vector.

Дополнительные примеры источников и преобразований Vector см. в разделе Приём данных с помощью Vector.

Начните работу и подтвердите приём данных

После создания источника данных выберите Start exploring, чтобы открыть представление Search. Выберите источник данных для своей таблицы и убедитесь, что в нём есть отправленное вами событие.

Журналы в интерфейсе ClickStack

Теперь у вас есть сервис Управляемый ClickStack, настроенный путь ингестии и тестовое событие, которое можно просмотреть в ClickStack.

Следующие шаги

Если для выполнения другого руководства требуются конечная точка ClickHouse Cloud или пароль, получите или сбросьте сведения о подключении, прежде чем продолжить.

Отправка данных приложений и инфраструктуры

Выберите руководство в зависимости от данных, которые хотите отправлять в ClickStack:

Изучение демонстрационных данных

Используйте демонстрационный датасет, чтобы изучить возможности ClickStack на более насыщенных телеметрических данных:

Генерация синтетических данных

Используйте генератор, чтобы протестировать ингестию без готового приложения или датасета:

См. все демонстрационные данные и демонстрации ClickStack.

Подготовка к продакшну

Перед использованием ClickStack для постоянных рабочих нагрузок ознакомьтесь с рекомендациями по продакшну и сайзингу:

Сведения о задачах развертывания см. в руководстве по развертыванию Управляемого ClickStack.

Navigation