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

Включите Cloudflare R2

Cloudflare Logpush поддерживает отправку журналов напрямую в R2. Сделать это можно с помощью автоматической настройки, при которой Cloudflare сам создаёт для вас бакет R2, либо с помощью пользовательской настройки, где вы создаёте бакет самостоятельно. Автоматическая настройка отлично подходит для быстрого создания бакета или для тестирования. Если же вам нужен полный контроль над конфигурацией, используйте пользовательскую настройку.

Дополнительную информацию о R2 см. в Cloudflare R2 документация.

Автоматическая настройка

Если вы хотите использовать автоматическую настройку для задания Logpush:

  1. На панели управления Cloudflare перейдите к разделу Logpush на уровне аккаунта или домена (также называемого зоной).

    Для аккаунта: Перейдите в Logpush ↗

    Для домена (также называемого зоной): Перейдите в Logpush ↗

  2. В зависимости от выбора вам доступны наборы данных уровня аккаунта и наборы данных, привязанные к зоне, соответственно.

  3. Выберите Создание задания Logpush.

  1. Выберите R2 Object Storage - automatic в качестве назначения.

  2. Далее выберите набор данных и регион хранилища, которые хотите использовать.

  3. Чтобы завершить, выберите Создать задание Logpush.

На этом настройка должна быть завершена. Если вам нужен полный контроль над конфигурацией, используйте вместо этого пользовательскую настройку.

Пользовательская настройка

Cloudflare Logpush поддерживает отправку журналов напрямую в R2 через панель управления Cloudflare или API.

Прежде чем начать:

Управление через панель управления Cloudflare

  1. На панели управления Cloudflare перейдите к разделу Logpush на уровне аккаунта или домена (также называемого зоной).

    Для аккаунта: Перейдите в Logpush ↗

    Для домена (также называемого зоной): Перейдите в Logpush ↗

  2. В зависимости от выбора вам доступны наборы данных уровня аккаунта и наборы данных, привязанные к зоне, соответственно.

  3. Выберите Создание задания Logpush.

  1. В Выберите пункт назначения, выберите R2 Object Storage.

  2. Введите или выберите следующие данные о получателе:

    • Бакет - Имя бакета R2
    • Путь - расположение бакета, например, cloudflare-logs/http_requests/example.com
    • Распределяйте журналы по ежедневным подпапкам (рекомендуется)
    • В разделе Аутентификация добавьте свой R2 Access Key ID и R2 Secret Access Key. См. Управление API-токенами R2 ↗, где это описано подробнее.

Когда вы закончите вводить данные получателя, выберите Продолжение.

  1. Выберите набор данных для отправки в хранилище.

  2. На следующем шаге настройте задание Logpush:

    • Введите Название задания.
    • В разделе Если журналы соответствуют, вы можете выбрать, какие события включить в журналы или исключить из них. См. Фильтры с дополнительной информацией. Эта опция доступна не для всех наборов данных.
    • В Отправьте следующие поля, вы можете либо отправлять в хранилище назначения все журналы, либо выбирать, какие журналы отправлять.
  3. В Advanced Options, вы можете:

    • Выберите формат полей отметки времени в своих журналах (RFC3339 (по умолчанию), Unix, или UnixNano).
    • Выберите частота сэмплирования для ваших журналов или отправлять случайно выбранный процент журналов.
    • Включите скрытие данных для CVE-2021-44228. Эта опция заменит каждое вхождение ${ с x{.
  4. Выберите Отправить после того как настройка задания Logpush завершена.

Управление через API

Чтобы создать задание, выполните POST запрос к конечной точке заданий Logpush со следующими полями:

r2://<BUCKET_PATH>/{DATE}?account-id=<ACCOUNT_ID>&access-key-id=<R2_ACCESS_KEY_ID>&secret-access-key=<R2_SECRET_ACCESS_KEY>

Пример запроса с использованием cURL:

Необходимые разрешения API-токена

Хотя бы одно из следующих права доступа токена требуется:
Создать задание Logpush
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

  1. На панели управления Cloudflare перейдите к разделу R2 страницу.

    Перейдите в Обзор ↗
  2. Выберите свой бакет.

  3. На странице своего бакета найдите нужный файл журнала.

  4. Нажмите на ... рядом с файлом, чтобы скачать его.

Список файлов журнала

AWS CLI

Cloudflare R2 совместим с S3, поэтому для работы с ним можно использовать AWS CLI.

aws s3 cp s3://<BUCKET-NAME>/<PATH-TO-LOG-FILE> <LOCAL-DESTINATION>

Замените <bucket-name>, <path-to-log-file>, а также <local-destination> своими конкретными данными.

Скачанные файлы сжаты в формате gzip, поэтому перед открытием в текстовом редакторе их нужно распаковать.