← Cloudflare Logs / logs / logpull
Основы
Шаблон доступа
Базовая схема доступа: покажите все журналы для зоны Z за минуту M где минута M обозначает время, когда записи журнала были записаны на диск в системе агрегации журналов Cloudflare.
Для начала попробуйте выполнять запрос каждую минуту. Если ответы слишком малы, увеличьте интервал до 5 минут, что подойдёт для большинства зон. Если ответы слишком велики, попробуйте уменьшить интервал до 15 секунд.
Если в вашей зоне столько журналов, что чтение журналов за 1 минуту занимает больше 1 минуты, запустите 2 воркера со сдвигом по времени, чтобы каждый запрашивал журналы за 1 минуту каждые 2 минуты.
Данные, возвращаемые API, не меняются при повторных вызовах. Порядок сообщений в ответе может отличаться, но их количество и содержание для одного и того же запроса всегда будут одинаковыми, пока код ответа 200 и при чтении тела ответа ошибок не возникает.
Поскольку наша система обработки журналов принимает данные пакетами, у большинства зон с объемом запросов менее 1 миллиона в минуту будут «пустые» минуты. Запросы за такую минуту возвращают ответы со статусом 200 но без данных в теле. Это не означает, что за эту минуту Cloudflare не проксировала ни одного запроса. Это лишь значит, что наша система не обработала пакет логов для этой зоны за данную минуту.
Порядок возвращаемых данных
logs/received конечная точка API предоставляет данные по времени получения, то есть по времени, когда событие было записано на диск в системе агрегации Cloudflare Logs.
Сортировка по времени агрегации журналов, а не по времени их создания, обеспечивает более низкую (то есть более быструю) задержку конвейера обработки журналов и делает выгрузки данных детерминированными. Функционально это похоже на просмотр файла журнала в режиме реального времени или на чтение из rsyslog (хотя и частями).
Это означает, что для получения журналов за нужный период вы можете делать по одному запросу на каждую последующую минуту (или другой интервал времени). Поскольку строки журнала группируются по времени получения и публикации, данных, поступающих с опозданием, не бывает. Ответ за конкретную минуту никогда не меняется. Вам не нужно повторно опрашивать один и тот же период, чтобы получить журналы по мере их поступления в нашу систему агрегации.
Формат возвращаемых данных
Logpull API возвращает данные в формате NDJSON, где каждая строка журнала является корректным JSON-объектом. Этот формат требуется для основных инструментов анализа, таких как Google BigQuery и AWS Kinesis.
Чтобы преобразовать полученные данные журнала в массив JSON с одним элементом массива на каждую строку журнала, можно использовать jq инструмент. По сути, вы передаёте ответ API по конвейеру в jq с помощью slurp (или просто s) флаг:
<API request data> | jq -s
См. Загрузите jq ↗ с дополнительной информацией о получении и установке jq.
Ниже приведён пример журнала с полями по умолчанию:
{
"ClientIP": "89.163.242.206",
"ClientRequestHost": "www.theburritobot.com",
"ClientRequestMethod": "GET",
"ClientRequestURI": "/static/img/testimonial-hipster.png",
"EdgeEndTimestamp": 1506702504461999900,
"EdgeResponseBytes": 69045,
"EdgeResponseStatus": 200,
"EdgeStartTimestamp": 1506702504433000200,
"RayID": "3a6050bcbe121a87"
}Срок хранения данных
Журналы можно запрашивать начиная с 1 минуты назад (относительно фактического времени запроса) и вплоть до периода от 3 до 7 дней в прошлом. Для больших периодов рекомендуем использовать Logpush.