Интеграция с существующей установкой Kafka
В этом разделе описано, как настроить существующую установку Kafka для отправки журналов брокера в ClickStack, изменив конфигурацию коллектора ClickStack OTel. Если вы хотите протестировать интеграцию журналов Kafka перед настройкой собственной среды, воспользуйтесь нашей предварительно настроенной средой и тестовыми данными из раздела "Демо-набор данных".
Предварительные требования
- Запущенный экземпляр ClickStack
- Установленный Kafka версии 2.0 или новее
- Доступ к файлам журналов Kafka (
server.log,controller.logи т. д.)
Проверьте конфигурацию логирования Kafka
Kafka использует Log4j и записывает журналы в каталог, указанный в системном свойстве kafka.logs.dir или переменной окружения LOG_DIR. Проверьте расположение файла журнала:
# Default locations
ls $KAFKA_HOME/logs/ # Standard Apache Kafka (defaults to <install-dir>/logs/)
ls /var/log/kafka/ # RPM/DEB package installationsОсновные файлы журнала Kafka:
server.log: Общие журналы брокера (запуск, подключения, репликация, ошибки)controller.log: События контроллера (выбор лидера, переназначение партиций)state-change.log: Переходы состояний партиций и реплик
Стандартный шаблон Log4j в Kafka создает строки вида:
[2026-03-09 14:23:45,123] INFO [KafkaServer id=0] started (kafka.server.KafkaServer)Создайте пользовательскую конфигурацию OTel collector для Kafka
ClickStack позволяет расширить базовую конфигурацию OpenTelemetry Collector, подключив пользовательский файл конфигурации и задав переменную окружения. Пользовательская конфигурация объединяется с базовой конфигурацией, которой HyperDX управляет через OpAMP.
Создайте файл с именем kafka-logs-monitoring.yaml со следующей конфигурацией:
receivers:
filelog/kafka:
include:
- /var/log/kafka/server.log
- /var/log/kafka/controller.log # optional, only exists if log4j is configured with separate file appenders
- /var/log/kafka/state-change.log # optional, same as above
start_at: beginning
multiline:
line_start_pattern: '^\[\d{4}-\d{2}-\d{2}'
operators:
- type: regex_parser
regex: '^\[(?P<timestamp>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d{3})\] (?P<severity>\w+) (?P<message>.*)'
parse_from: body
parse_to: attributes
timestamp:
parse_from: attributes.timestamp
layout: '%Y-%m-%d %H:%M:%S,%L'
severity:
parse_from: attributes.severity
- type: move
from: attributes.message
to: body
- type: add
field: attributes.source
value: "kafka"
- type: add
field: resource["service.name"]
value: "kafka-production"
service:
pipelines:
logs/kafka:
receivers: [filelog/kafka]
processors:
- memory_limiter
- transform
- batch
exporters:
- clickhouseНастройка ClickStack для загрузки пользовательской конфигурации
Чтобы включить пользовательскую конфигурацию коллектора в существующем развертывании ClickStack, необходимо:
- Смонтировать файл пользовательской конфигурации в
/etc/otelcol-contrib/custom.config.yaml - Задать переменную окружения
CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml - Смонтировать каталог с журналами Kafka, чтобы коллектор мог их читать
Обновите конфигурацию развертывания ClickStack:
services:
clickstack:
# ... existing configuration ...
environment:
- CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml
# ... other environment variables ...
volumes:
- ./kafka-logs-monitoring.yaml:/etc/otelcol-contrib/custom.config.yaml:ro
- /var/log/kafka:/var/log/kafka:ro
# ... other volumes ...Если вы используете all-in-one image с Docker, выполните:
docker run --name clickstack \
-p 8080:8080 -p 4317:4317 -p 4318:4318 \
-e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \
-v "$(pwd)/kafka-logs-monitoring.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \
-v /var/log/kafka:/var/log/kafka:ro \
clickhouse/clickstack-all-in-one:latestПроверьте журналы в HyperDX
После настройки войдите в HyperDX и убедитесь, что журналы поступают:


Демо-набор данных
Протестируйте интеграцию журналов Kafka на заранее подготовленном примере данных, прежде чем настраивать системы в продакшне.
Скачать пример данных
Скачайте пример файла журнала:
curl -O https://datasets-documentation.s3.eu-west-3.amazonaws.com/clickstack-integrations/kafka/server.logСоздать тестовую конфигурацию коллектора
Создайте файл kafka-logs-demo.yaml со следующей конфигурацией:
cat > kafka-logs-demo.yaml << 'EOF'
receivers:
filelog/kafka:
include:
- /tmp/kafka-demo/server.log
start_at: beginning
multiline:
line_start_pattern: '^\[\d{4}-\d{2}-\d{2}'
operators:
- type: regex_parser
regex: '^\[(?P<timestamp>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d{3})\] (?P<severity>\w+) (?P<message>.*)'
parse_from: body
parse_to: attributes
timestamp:
parse_from: attributes.timestamp
layout: '%Y-%m-%d %H:%M:%S,%L'
severity:
parse_from: attributes.severity
- type: move
from: attributes.message
to: body
- type: add
field: attributes.source
value: "kafka-demo"
- type: add
field: resource["service.name"]
value: "kafka-demo"
service:
pipelines:
logs/kafka-demo:
receivers: [filelog/kafka]
processors:
- memory_limiter
- transform
- batch
exporters:
- clickhouse
EOFЗапустить ClickStack с демо-конфигурацией
Запустите ClickStack с демо-журналами и этой конфигурацией:
docker run --name clickstack-demo \
-p 8080:8080 -p 4317:4317 -p 4318:4318 \
-e CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml \
-v "$(pwd)/kafka-logs-demo.yaml:/etc/otelcol-contrib/custom.config.yaml:ro" \
-v "$(pwd)/server.log:/tmp/kafka-demo/server.log:ro" \
clickhouse/clickstack-all-in-one:latestПроверьте журналы в HyperDX
После запуска ClickStack:
- Откройте HyperDX и войдите в свою учётную запись (возможно, сначала потребуется создать её)
- Перейдите в представление Search и выберите источник
Logs - Установите временной диапазон, включающий 2026-03-09 00:00:00 - 2026-03-10 00:00:00 (UTC)


Панели мониторинга и визуализация
Скачайте конфигурацию панели мониторинга
Импорт преднастроенной панели мониторинга
- Откройте HyperDX и перейдите в раздел панелей мониторинга.
- Нажмите "Import Dashboard" в правом верхнем углу в меню с многоточием.

- Загрузите файл kafka-logs-dashboard.json и нажмите finish import.

Панель мониторинга будет создана со всеми преднастроенными визуализациями
Для демо-набора данных установите временной диапазон, включающий 2026-03-09 00:00:00 - 2026-03-10 00:00:00 (UTC).

Устранение неполадок
Убедитесь, что фактическая конфигурация включает ваш приёмник filelog:
docker exec <container> cat /etc/otel/supervisor-data/effective.yaml | grep -A 10 filelogПроверьте ошибки коллектора:
docker exec <container> cat /etc/otel/supervisor-data/agent.logПроверьте, что формат логирования Kafka соответствует ожидаемому шаблону:
tail -1 /var/log/kafka/server.logЕсли в вашей установке Kafka используется пользовательский шаблон Log4j, соответствующим образом настройте регулярное выражение для regex_parser.
Дальнейшие шаги
- Настройте оповещения для критически важных событий (сбои брокеров, ошибки репликации, проблемы consumer group)
- Используйте вместе с Kafka Metrics для комплексного мониторинга Kafka
- Создайте дополнительные панели мониторинга для конкретных сценариев использования (события контроллера, перераспределение партиций)
Переход в продакшн
В этом руководстве для быстрой настройки используется встроенный в ClickStack OpenTelemetry Collector. Для развертываний в продакшне мы рекомендуем запускать собственный OTel Collector и отправлять данные в конечную точку OTLP ClickStack. Конфигурация для продакшна описана в разделе Отправка данных OpenTelemetry.