ВкратцеЭто руководство показывает, как настроить приём журналов Cloudflare в ClickStack с помощью ClickPipes. Cloudflare Logpush записывает журналы в S3, а ClickPipes непрерывно загружает новые файлы в ClickHouse. В отличие от большинства руководств по интеграции с ClickStack, где используется OpenTelemetry Collector, в этом руководстве ClickPipes используется для прямого чтения данных из S3.Демо-набор данных доступен, если вы хотите ознакомиться с панелями мониторинга до настройки ингестии в production.
Обзор
- Анализировать трафик на edge-узлах, производительность кэша и события безопасности вместе с другими данными обсервабилити
- Выполнять запросы к журналам с помощью ClickHouse SQL
- Хранить журналы дольше стандартного срока хранения Cloudflare
Альтернатива: прямая ингестия по HTTPCloudflare Logpush также поддерживает прямую отправку журналов на HTTP-конечные точки. Поскольку Cloudflare экспортирует журналы в формате newline-delimited JSON (NDJSON), а ClickHouse нативно принимает этот формат через Замените
JSONEachRow, вы можете направить Logpush напрямую на HTTP-интерфейс ClickHouse Cloud, используя следующий формат URL конечной точки:YOUR_CLICKHOUSE_HOST на имя хоста ClickHouse Cloud, а BASE64_CREDENTIALS — на ваши учётные данные, закодированные в Base64 (echo -n 'default:YOUR_PASSWORD' | base64).Это проще в настройке (не требуется конфигурация S3, SQS или IAM), но Cloudflare Logpush не поддерживает дозагрузку исторических данных в случае сбоя доставки — поэтому, если ClickHouse недоступен во время отправки, эти журналы будут потеряны навсегда.Интеграция с существующим Cloudflare Logpush
Предварительные требования
- сервис 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
- Включите Continuous ingestion
- Порядок: Лексикографический порядок
20250127/...), что естественным образом соответствует лексикографическому порядку. ClickPipes проверяет наличие новых файлов каждые 30 секунд и выполняет ингестию каждого файла, имя которого больше имени последнего обработанного файла.Сопоставление схемы:Нажмите Parse information. ClickPipes анализирует выборку из ваших файлов журнала и автоматически определяет схему. Проверьте сопоставленные столбцы и при необходимости скорректируйте типы. Задайте ключ сортировки для целевой таблицы — для журналов Cloudflare хорошим выбором будет (EdgeStartTimestamp, ClientCountry, EdgeResponseStatus).Нажмите Complete Setup.При первом создании ClickPipes выполняет начальную загрузку всех существующих файлов по указанному пути, а затем переключается на непрерывный опрос. Если ваш бакет содержит большой накопившийся объём журналов Cloudflare, эта начальная загрузка может занять некоторое время.
Настройка источника данных 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
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
Демо-набор данных
Запустите 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 - Нажмите Завершить настройку
Настройте источник данных HyperDX
Следуйте шагам настройки источника данных, чтобы создать источник HyperDX, указывающий на таблицуcloudflare_http_logs. Если вы уже настроили источник в разделе с рабочей интеграцией, этот шаг не нужен.Проверьте демо-данные
Отображение часового поясаHyperDX отображает временные метки в локальном часовом поясе вашего браузера. Демо-данные охватывают период 2026-02-24 00:00:00 - 2026-02-25 00:00:00 (UTC). Широкий временной диапазон гарантирует, что вы увидите демо-журналы независимо от своего местоположения. После этого вы можете сузить диапазон до 24 часов для более наглядной визуализации.
Панели мониторинга и визуализация
конфигурацию панели мониторинга
Импорт панели мониторинга
- HyperDX → Dashboards → Import Dashboard
- Загрузите
cloudflare-logs-dashboard.json→ Finish Import
Просмотр панели мониторинга
Для демо-набора данных установите временной диапазон 2026-02-24 00:00:00 - 2026-02-25 00:00:00 (UTC) (скорректируйте с учётом вашего локального часового пояса). По умолчанию в импортированной панели мониторинга временной диапазон не задан.
Устранение неполадок
Данные не отображаются в 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, оптимизация кэша, географический анализ трафика)
Переход к промышленной эксплуатации
**/* в шаблоне пути ClickPipes, чтобы охватить все подкаталоги.
Дополнительные параметры конфигурации, включая неупорядоченную ингестию на основе SQS для обработки дозагрузок и файлов, поступивших не по порядку, см. в документации по S3 ClickPipes.