← Cloudflare Logs / logs / logpush / logpush-job / enable-destinations
Включите Cloudflare R2
Cloudflare Logpush поддерживает отправку журналов напрямую в R2. Сделать это можно с помощью автоматической настройки, при которой Cloudflare сам создаёт для вас бакет R2, либо с помощью пользовательской настройки, где вы создаёте бакет самостоятельно. Автоматическая настройка отлично подходит для быстрого создания бакета или для тестирования. Если же вам нужен полный контроль над конфигурацией, используйте пользовательскую настройку.
Дополнительную информацию о R2 см. в Cloudflare R2 документация.
Автоматическая настройка
Если вы хотите использовать автоматическую настройку для задания Logpush:
-
На панели управления Cloudflare перейдите к разделу Logpush на уровне аккаунта или домена (также называемого зоной).
Для аккаунта: Перейдите в Logpush ↗
Для домена (также называемого зоной): Перейдите в Logpush ↗
-
В зависимости от выбора вам доступны наборы данных уровня аккаунта и наборы данных, привязанные к зоне, соответственно.
-
Выберите Создание задания Logpush.
-
Выберите R2 Object Storage - automatic в качестве назначения.
-
Далее выберите набор данных и регион хранилища, которые хотите использовать.
-
Чтобы завершить, выберите Создать задание Logpush.
На этом настройка должна быть завершена. Если вам нужен полный контроль над конфигурацией, используйте вместо этого пользовательскую настройку.
Пользовательская настройка
Cloudflare Logpush поддерживает отправку журналов напрямую в R2 через панель управления Cloudflare или API.
Прежде чем начать:
-
Создайте бакет R2 и настройте API-токены R2.
-
Перейдите в интерфейс R2 > Создание бакета.
-
Выберите Управление API-токенами R2.
-
Выберите Создание API-токена.
-
В разделе Разрешение, выберите Изменить разрешения для вашего токена.
-
Скопируйте Secret Access Key и Access Key ID. Они понадобятся вам при настройке задания Logpush.
-
-
Убедитесь, что у вас есть следующие разрешения:
- R2 write, Logshare Edit.
Управление через панель управления Cloudflare
-
На панели управления Cloudflare перейдите к разделу Logpush на уровне аккаунта или домена (также называемого зоной).
Для аккаунта: Перейдите в Logpush ↗
Для домена (также называемого зоной): Перейдите в Logpush ↗
-
В зависимости от выбора вам доступны наборы данных уровня аккаунта и наборы данных, привязанные к зоне, соответственно.
-
Выберите Создание задания Logpush.
-
В Выберите пункт назначения, выберите R2 Object Storage.
-
Введите или выберите следующие данные о получателе:
- Бакет - Имя бакета R2
- Путь - расположение бакета, например,
cloudflare-logs/http_requests/example.com - Распределяйте журналы по ежедневным подпапкам (рекомендуется)
- В разделе Аутентификация добавьте свой R2 Access Key ID и R2 Secret Access Key. См. Управление API-токенами R2 ↗, где это описано подробнее.
Когда вы закончите вводить данные получателя, выберите Продолжение.
-
Выберите набор данных для отправки в хранилище.
-
На следующем шаге настройте задание Logpush:
- Введите Название задания.
- В разделе Если журналы соответствуют, вы можете выбрать, какие события включить в журналы или исключить из них. См. Фильтры с дополнительной информацией. Эта опция доступна не для всех наборов данных.
- В Отправьте следующие поля, вы можете либо отправлять в хранилище назначения все журналы, либо выбирать, какие журналы отправлять.
-
В Advanced Options, вы можете:
- Выберите формат полей отметки времени в своих журналах (
RFC3339(по умолчанию),Unix, илиUnixNano). - Выберите частота сэмплирования для ваших журналов или отправлять случайно выбранный процент журналов.
- Включите скрытие данных для
CVE-2021-44228. Эта опция заменит каждое вхождение${сx{.
- Выберите формат полей отметки времени в своих журналах (
-
Выберите Отправить после того как настройка задания Logpush завершена.
Управление через API
Чтобы создать задание, выполните POST запрос к конечной точке заданий Logpush со следующими полями:
- имя (необязательно) - Используйте имя своего домена в качестве имени задания.
- destination_conf - Получатель журналов, состоящий из пути бакета, ID аккаунта, R2 access key ID и R2 secret access key.
r2://<BUCKET_PATH>/{DATE}?account-id=<ACCOUNT_ID>&access-key-id=<R2_ACCESS_KEY_ID>&secret-access-key=<R2_SECRET_ACCESS_KEY>- dataset - Категория журналов, которые вы хотите получать. См. Наборы данных для полного списка поддерживаемых наборов данных.
- output_options (необязательно) - Чтобы настроить поля, частоту выборки и формат временной метки, см. Параметры конфигурации API.
Пример запроса с использованием cURL:
Необходимые разрешения API-токена
Хотя бы одно из следующих права доступа токена требуется:Logs Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/logpush/jobs" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "<DOMAIN_NAME>",
"output_options": {
"field_names": [
"ClientIP",
"ClientRequestHost",
"ClientRequestMethod",
"ClientRequestURI",
"EdgeEndTimestamp",
"EdgeResponseBytes",
"EdgeResponseStatus",
"EdgeStartTimestamp",
"RayID"
],
"timestamp_format": "rfc3339"
},
"destination_conf": "r2://<BUCKET_PATH>/{DATE}?account-id=<ACCOUNT_ID>&access-key-id=<R2_ACCESS_KEY_ID>&secret-access-key=<R2_SECRET_ACCESS_KEY>",
"dataset": "http_requests",
"enabled": true
}'Ответ:
{
"errors": [],
"messages": [],
"result": {
"id": <JOB_ID>,
"dataset": "http_requests",
"kind": "",
"enabled": true,
"name": "<DOMAIN_NAME>",
"output_options": {
"field_names": ["ClientIP", "ClientRequestHost", "ClientRequestMethod", "ClientRequestURI", "EdgeEndTimestamp", "EdgeResponseBytes", "EdgeResponseStatus" ,"EdgeStartTimestamp", "RayID"],
"timestamp_format": "rfc3339"
},
"destination_conf": "r2://<BUCKET_PATH>/{DATE}?account-id=<ACCOUNT_ID>&access-key-id=<R2_ACCESS_KEY_ID>&secret-access-key=<R2_SECRET_ACCESS_KEY>",
"last_complete": null,
"last_error": null,
"error_message": null
},
"success": true
}См. Управлять Logpush с помощью cURL чтобы обновить задание (включая включение и отключение).
Скачать логи из R2
После того как журналы сохранены в R2, вы можете скачать их разными способами:
Dashboard
-
На панели управления Cloudflare перейдите к разделу R2 страницу.
Перейдите в Обзор ↗ -
Выберите свой бакет.
-
На странице своего бакета найдите нужный файл журнала.
-
Нажмите на ... рядом с файлом, чтобы скачать его.
AWS CLI
Cloudflare R2 совместим с S3, поэтому для работы с ним можно использовать AWS CLI.
- Настройте AWS CLI, используя учётные данные R2.
- Используйте
aws s3 cpдля скачивания файла лога:
aws s3 cp s3://<BUCKET-NAME>/<PATH-TO-LOG-FILE> <LOCAL-DESTINATION>Замените <bucket-name>, <path-to-log-file>, а также <local-destination> своими конкретными данными.
Скачанные файлы сжаты в формате gzip, поэтому перед открытием в текстовом редакторе их нужно распаковать.