Обзор
Cloudflare Logpush экспортирует журналы HTTP-запросов в такие пункты назначения, как Amazon S3. Перенаправив эти журналы в ClickStack, вы сможете:
- Анализировать трафик на edge-узлах, производительность кэша и события безопасности вместе с другими данными обсервабилити
- Выполнять запросы к журналам с помощью ClickHouse SQL
- Хранить журналы дольше стандартного срока хранения Cloudflare
В этом руководстве ClickPipes используется для непрерывной ингестии файлов журналов Cloudflare из S3 в ClickHouse. S3 выступает как надёжный буфер между Cloudflare и ClickHouse, обеспечивая семантику «ровно один раз» и возможность повторного воспроизведения.
Интеграция с существующим Cloudflare Logpush
В этом разделе предполагается, что Cloudflare Logpush у вас уже настроен для экспорта журналов в S3. Если это не так, сначала воспользуйтесь руководством Cloudflare по настройке AWS S3.
Предварительные требования
- сервис ClickHouse Cloud запущен (ClickPipes доступна только в Cloud и недоступна в ClickStack OSS)
- Cloudflare Logpush активно записывает журналы в S3 бакет
- Имя S3 бакета и регион, куда Cloudflare записывает журналы
Настройте аутентификацию для S3
ClickPipes требуется разрешение на чтение из вашего S3 бакета. Чтобы настроить доступ с использованием роли IAM или учетных данных, следуйте руководству Безопасный доступ к данным S3.
Подробные сведения об аутентификации S3 и разрешениях для ClickPipes см. в справочной документации по S3 ClickPipes.
Создание задачи ClickPipes
- ClickHouse Cloud Console → Источники данных → Create ClickPipe
- Источник: Amazon S3

Подключение:
- Путь к файлам в S3: Путь к бакету с журналами Cloudflare с подстановочным символом для сопоставления файлов. Если вы включили ежедневные подпапки в Logpush, используйте
**, чтобы сопоставлять файлы во всех подкаталогах:- Без подпапок:
https://your-bucket.s3.us-east-1.amazonaws.com/logs/* - Ежедневные подпапки:
https://your-bucket.s3.us-east-1.amazonaws.com/logs/**/*
- Без подпапок:
- Аутентификация: Выберите метод аутентификации и укажите учётные данные или ARN роли IAM
Настройки ингестии:
Нажмите Incoming data, затем настройте:
- Включите Continuous ingestion
- Порядок: Лексикографический порядок

Cloudflare Logpush записывает файлы с именами на основе даты (например, 20250127/...), что естественным образом соответствует лексикографическому порядку. ClickPipes проверяет наличие новых файлов каждые 30 секунд и выполняет ингестию каждого файла, имя которого больше имени последнего обработанного файла.
Сопоставление схемы:
Нажмите Parse information. ClickPipes анализирует выборку из ваших файлов журнала и автоматически определяет схему. Проверьте сопоставленные столбцы и при необходимости скорректируйте типы. Задайте ключ сортировки для целевой таблицы — для журналов Cloudflare хорошим выбором будет (EdgeStartTimestamp, ClientCountry, EdgeResponseStatus).

Нажмите Complete Setup.
Настройка источника данных HyperDX
ClickPipes загружает журналы Cloudflare в плоскую таблицу, используя исходные имена полей Cloudflare. Чтобы просматривать эти журналы в HyperDX, настройте пользовательский источник данных, который сопоставляет столбцы Cloudflare с представлением логов HyperDX.
- Откройте HyperDX → Team Settings → Sources

- Нажмите Add source и задайте следующие параметры. Чтобы получить доступ ко всем полям, нажмите Configure Optional Fields:

| Параметр | Значение |
|---|---|
| Name | Cloudflare Logs |
| Source Data Type | Log |
| Database | default |
| Table | cloudflare_http_logs |
| Timestamp Column | toDateTime(EdgeStartTimestamp / 1000000000) |
| Default Select | EdgeStartTimestamp, ClientRequestMethod, ClientRequestURI, EdgeResponseStatus, ClientCountry |
| Service Name Expression | 'cloudflare' |
| Log Level Expression | multiIf(EdgeResponseStatus >= 500, 'ERROR', EdgeResponseStatus >= 400, 'WARN', 'INFO') |
| Body Expression | concat(ClientRequestMethod, ' ', ClientRequestURI, ' ', toString(EdgeResponseStatus)) |
| Log Attributes Expression | map('http.method', ClientRequestMethod, 'http.status_code', toString(EdgeResponseStatus), 'http.url', ClientRequestURI, 'client.country', ClientCountry, 'client.ip', ClientIP, 'cache.status', CacheCacheStatus, 'bot.score', toString(BotScore), 'cloudflare.ray_id', RayID, 'cloudflare.colo', EdgeColoCode) |
| Resource Attributes Expression | map('cloudflare.zone', ClientRequestHost) |
| Implicit Column Expression | concat(ClientRequestMethod, ' ', ClientRequestURI) |
- Нажмите Save Source

Это позволяет напрямую сопоставить исходные столбцы Cloudflare с представлением логов HyperDX без какого-либо преобразования или дублирования данных. В поле Body будет отображаться сводка по запросу, например GET /api/v1/users 200, а все поля Cloudflare будут доступны как атрибуты для поиска.
Проверьте данные в HyperDX
Перейдите в представление Search и выберите источник Cloudflare Logs. Установите временной диапазон так, чтобы он включал нужный период. Вы должны увидеть записи журнала со следующими характеристиками:
- Сводки запросов в столбце Body (например,
GET /api/v1/users 200) - Уровни серьёзности, выделенные цветом в зависимости от HTTP-статуса (INFO для 2xx, WARN для 4xx, ERROR для 5xx)
- Атрибуты, доступные для поиска, такие как
http.status_code,client.country,cache.statusиbot.score


Демо-набор данных
Для пользователей, которые хотят протестировать интеграцию перед настройкой продакшн Cloudflare Logpush, мы предоставляем демо-набор данных с реалистичными журналами HTTP-запросов.
Запустите ClickPipes с демо-набором данных
- консоль ClickHouse Cloud → Источники данных → Создать ClickPipe
- Источник: Amazon S3
- Аутентификация: Public
- Путь к файлу S3:
https://datasets-documentation.s3.eu-west-3.amazonaws.com/clickstack-integrations/cloudflare/cloudflare-http-logs.json - Нажмите Входящие данные
- Выберите JSON в качестве формата
- Нажмите Разобрать информацию и проверьте обнаруженную схему
- Укажите Название таблицы:
cloudflare_http_logs - Нажмите Завершить настройку
Набор данных включает 5 000 записей журнала HTTP-запросов за 24 часа с реалистичными паттернами: трафик из нескольких стран, попадания и промахи кэша, запросы к API и статическим ресурсам, ответы с ошибками и события безопасности.
Настройте источник данных HyperDX
Следуйте шагам настройки источника данных, чтобы создать источник HyperDX, указывающий на таблицу cloudflare_http_logs. Если вы уже настроили источник в разделе с продакшн интеграцией, этот шаг не нужен.
Проверьте демо-данные
SELECT count() FROM cloudflare_http_logs;
-- Должен вернуть 5000Перейдите в представление Search в HyperDX, выберите источник Cloudflare Logs и задайте временной диапазон 2026-02-23 00:00:00 - 2026-02-26 00:00:00.
Вы увидите записи журнала со сводками по запросам, доступными для поиска атрибутами Cloudflare и уровнями серьёзности на основе кодов состояния HTTP.


Панели мониторинга и визуализация
Скачать конфигурацию панели мониторинга
Импорт панели мониторинга
- HyperDX → Dashboards → Import Dashboard

- Загрузите
cloudflare-logs-dashboard.json→ Finish Import

Просмотр панели мониторинга

Устранение неполадок
Данные не отображаются в ClickHouse
Убедитесь, что таблица создана и содержит данные:
SHOW TABLES FROM default LIKE 'cloudflare_http_logs';
SELECT count() FROM cloudflare_http_logs;Если таблица существует, но пуста, проверьте наличие ошибок в ClickPipes: консоль ClickHouse Cloud → Источники данных → ваш ClickPipe → Журналы. Если возникают проблемы с аутентификацией при доступе к приватным бакетам, см. документацию по управлению доступом S3 в ClickPipes.
Журналы не отображаются в HyperDX
Если данные есть в ClickHouse, но не видны в HyperDX, проверьте конфигурацию источника данных:
- Убедитесь, что для
cloudflare_http_logsв HyperDX → Team Settings → Sources существует источник - Убедитесь, что для Timestamp Column установлено значение
toDateTime(EdgeStartTimestamp / 1000000000)— временные метки Cloudflare указаны в наносекундах, поэтому их нужно преобразовать - Убедитесь, что выбранный в HyperDX временной диапазон охватывает эти данные. Для демо-набора данных используйте 2026-02-23 00:00:00 - 2026-02-26 00:00:00
Следующие шаги
- Настройте оповещения для событий безопасности (блокировки WAF, всплески бот-трафика, пороговые значения уровня ошибок)
- Оптимизируйте политики хранения с учетом объема данных
- Создайте дополнительные панели мониторинга для конкретных задач (производительность API, оптимизация кэша, географический анализ трафика)
Переход в продакшн
В этом руководстве показано, как выполнять ингестию журналов Cloudflare с использованием общедоступного демо-набора данных. Для развертываний в продакшне настройте Cloudflare Logpush на запись в собственный S3 бакет и настройте ClickPipes с аутентификацией на основе роли IAM для безопасного доступа. Выбирайте только нужные вам поля Logpush, чтобы сократить затраты на хранилище и объём ингестии. Включите в Logpush ежедневные подпапки для более удобной организации файлов и используйте **/* в шаблоне пути ClickPipes, чтобы охватывать вложенные подкаталоги.
Дополнительные параметры конфигурации, включая неупорядоченную ингестию на основе SQS для обработки дозагрузок и файлов, поступающих не по порядку, см. в документации по S3 ClickPipes.