INTEGRITY Документация

Logs Engine

Logs Engine позволяет хранить журналы в R2 и выполнять запросы к ним напрямую.

Сохраняйте журналы в R2

Поиск по журналам

С помощью API журналы можно запрашивать и скачивать по диапазону времени или RayID.

Аутентификация

Для всех вызовов API требуются следующие заголовки:

Также для аутентификации можно использовать API-токены с разрешением Logs edit:

Обязательные заголовки

Помимо упомянутых обязательных заголовков аутентификации, для доступа API к журналам, хранящимся в вашем бакете R2, необходимы следующие заголовки.

Список файлов

Выведите список подходящих объектов R2 с журналами, соответствующими указанным параметрам запроса, используя конечную точку GET /accounts/{accountId}/logs/list.

Параметры запроса

Получение журналов по диапазону времени

Транслируйте журналы, хранящиеся в R2 и соответствующие указанным параметрам запроса, используя конечную точку GET /accounts/{accountId}/logs/retrieve.

Параметры запроса

Пример запроса API

curl --globoff "https://api.cloudflare.com/client/v4/accounts/{account_id}/logs/retrieve?start=2022-06-01T16:00:00Z&end=2022-06-01T16:05:00Z&bucket=cloudflare-logs&prefix=http_requests/example.com/{DATE}" \
--header "X-Auth-Email: <EMAIL>" \
--header "X-Auth-Key: <API_KEY>" \
--header "R2-Access-Key-Id: R2_ACCESS_KEY_ID" \
--header "R2-Secret-Access-Key: R2_SECRET_ACCESS_KEY"

Результаты можно перенаправить в файл с помощью > logs.json.

Кроме того, если вы хотите получать необработанные байты GZIP без прозрачной распаковки на стороне клиента, добавьте заголовок --header "Accept-Encoding: gzip".

Получение журналов по Ray ID

Если ваши журналы хранятся в R2, функция Logpull RayID Lookup позволяет запросить наличие RayID в проиндексированном диапазоне времени и получить соответствующий результат. Эта функция доступна пользователям с бета-подпиской Logpull RayID Lookup.

Поиск по RayID выполняется в два этапа. Сначала необходимо проиндексировать временной диапазон, и только после этого можно запросить запись по RayID.

Индексы автоматически истекают после семи дней без использования.

Индексировать временной диапазон

Перед выполнением запроса можно задать временной диапазон для индексации, чтобы сузить область поиска. В следующем примере мы индексируем одну минуту журналов, хранящихся в бакете R2 "cloudflare-logs" под префиксом "http_requests/{DATE}".

Пример запроса API

curl https://api.cloudflare.com/client/v4/accounts/{account_id}/logs/rayids/index \
--header "Authorization: Bearer <API_TOKEN>" \
--header "R2-Access-Key-Id: <R2_ACCESS_KEY_ID>" \
--header "R2-Secret-Access-Key: <R2_SECRET_ACCESS_KEY>" \
--header "Content-Type: application/json" \
--data-raw '{
  "start": "2022-08-16T20:30:00Z",
  "end": "2022-08-16T20:31:00",
  "bucket": "cloudflare-logs",
  "prefix": "http_requests/example.com/{DATE}"
}'

Поиск RayID

После индексации временного диапазона выполните GET запрос с RayID. Если в индексированном диапазоне времени найден совпадающий результат, запись будет возвращена. Обратите внимание, что параметры переместились из тела запроса в URL. -g флаг необходим, чтобы избежать {DATE} параметр не был неправильно интерпретирован cURL.

Пример запроса API

curl --globoff "https://api.cloudflare.com/client/v4/accounts/{account_id}/logs/rayids/<RAY_ID>?bucket=cloudflare-logs&prefix=http_requests/example.com/{DATE}" \
--header "Authorization: Bearer <API_TOKEN>" \
--header "R2-Access-Key-Id: <R2_ACCESS_KEY_ID>" \
--header "R2-Secret-Access-Key: <R2_SECRET_ACCESS_KEY>"

Устранение неполадок

При обращении к API возникает ошибка

Код состояния HTTP 422 будет возвращён, если диапазон времени между параметрами start и end слишком широк. Если вы столкнулись с этим ограничением, попробуйте запросить более короткий диапазон времени.

Обратитесь к своему представителю по работе с аккаунтом, чтобы он добавил к вашему аккаунту бета-подписку Logpull RayID Lookup.

Зоны с высоким объёмом трафика могут создавать в R2 большое количество файлов журналов. Попробуйте сузить начальный и конечный временной диапазон, пока не найдёте длительность, которая лучше всего подходит для объёма ваших журналов.

Как узнать, какой временной диапазон индексировать?

В настоящее время процесс индексирования журналов сразу по их поступлении отсутствует. Если у вас есть RayID и известно время запроса, попробуйте проиндексировать журналы за 5-10 минут после завершения запроса.

Какова задержка между наступлением события и моментом, когда его можно запросить?

Logpush доставляет журналы пакетами как можно быстрее, обычно менее чем за одну минуту. После этого журналы становятся доступны через Logs Engine.

Есть ли в R2 средства управления сроком хранения данных?

В R2 в настоящее время не предусмотрены средства управления сроком хранения. Запросы можно делать вплоть до момента создания задания Logpush.

С какими наборами данных совместим Logs Engine?

API получения данных совместим со всеми поддерживаемыми наборами данных. Полный список доступен на Наборы данных раздел.