Skip to main content

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

Vector — это не зависящий от поставщика конвейер данных, который может читать данные из Kafka и отправлять события в ClickHouse. Руководство по началу работы для Vector с ClickHouse посвящено сценарию работы с логами и чтению событий из файла. Мы используем пример датасета GitHub, в котором события хранятся в топике Kafka. Vector использует источники для получения данных по модели push или pull. Приёмники, в свою очередь, выступают пунктом назначения для событий. Поэтому мы используем источник Kafka и приёмник ClickHouse. Обратите внимание: хотя Kafka поддерживается в качестве приёмника, источник для ClickHouse недоступен. Поэтому Vector не подходит, если вам нужно передавать данные из ClickHouse в Kafka. Vector также поддерживает преобразование данных. Это выходит за рамки данного руководства. Если это требуется для вашего датасета, обратитесь к документации Vector. Обратите внимание, что текущая реализация приёмника ClickHouse использует HTTP-интерфейс. Приёмник ClickHouse в настоящее время не поддерживает использование схемы JSON. Данные должны публиковаться в Kafka либо в обычном формате JSON, либо в виде String.

Лицензия

Vector распространяется на условиях лицензии MPL-2.0

Подготовьте сведения о подключении

Чтобы подключиться к ClickHouse по HTTP(S), вам понадобится следующая информация: Сведения о подключении для вашего сервиса ClickHouse Cloud доступны в консоли ClickHouse Cloud. Выберите сервис и нажмите Connect:
Кнопка подключения сервиса ClickHouse Cloud
Выберите HTTPS. Сведения о подключении будут показаны в примере команды curl.
Сведения о подключении к ClickHouse Cloud по HTTPS
Если вы используете самоуправляемый ClickHouse, сведения о подключении задаёт ваш администратор ClickHouse.

Шаги

  1. Создайте топик Kafka github и вставьте датасет GitHub.
Этот набор данных включает 200 000 строк, относящихся к репозиторию ClickHouse/ClickHouse.
  1. Убедитесь, что целевая таблица создана. Ниже используется база данных по умолчанию.
  1. Скачайте и установите Vector. Создайте файл конфигурации kafka.toml и измените значения для ваших экземпляров Kafka и ClickHouse.
Несколько важных замечаний об этой конфигурации и о поведении Vector:
  • Этот пример был протестирован с Confluent Cloud. Поэтому параметры безопасности sasl.* и ssl.enabled могут не подходить для самоуправляемых развертываний.
  • Для параметра конфигурации bootstrap_servers префикс протокола не требуется, например: pkc-2396y.us-east-1.aws.confluent.cloud:9092
  • Параметр источника decoding.codec = "json" гарантирует, что сообщение будет передано в приёмник ClickHouse как единый объект JSON. Если обрабатывать сообщения как строки и использовать значение bytes по умолчанию, содержимое сообщения будет добавлено в поле message. В большинстве случаев это потребует дополнительной обработки в ClickHouse, как описано в руководстве Начало работы с Vector.
  • Vector добавляет ряд полей в сообщения. В нашем примере мы игнорируем эти поля в приёмнике ClickHouse с помощью параметра конфигурации skip_unknown_fields = true. При этом игнорируются поля, которых нет в схеме целевой таблицы. При необходимости скорректируйте схему, чтобы добавить эти метаполя, например offset.
  • Обратите внимание, как приёмник ссылается на источник событий через параметр inputs.
  • Обратите внимание на поведение приёмника ClickHouse, описанное здесь. Для оптимальной пропускной способности можно настроить параметры buffer.max_events, batch.timeout_secs и batch.max_bytes. Согласно рекомендациям ClickHouse, значение 1000 следует считать минимальным количеством событий в одном батче. Для сценариев с равномерно высокой пропускной способностью можно увеличить параметр buffer.max_events. При более переменной пропускной способности может потребоваться изменить параметр batch.timeout_secs.
  • Параметр auto_offset_reset = "smallest" принудительно задает для источника Kafka чтение с начала топика, гарантируя, что будут прочитаны сообщения, опубликованные на шаге (1). В вашем случае может потребоваться другое поведение. Подробнее см. здесь.
  1. Запустите Vector
По умолчанию перед началом вставки в ClickHouse требуется выполнить проверку работоспособности. Это позволяет убедиться, что соединение устанавливается и схему можно прочитать. Добавьте в начало VECTOR_LOG=debug, чтобы включить более подробное логирование — это может быть полезно, если возникнут проблемы.
  1. Подтвердите вставку данных.
Последнее изменение 23 июля 2026 г.