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

Настройка API

Конечные точки

В таблице ниже перечислены операции с заданиями, доступные как для заданий Logpush, так и для заданий Edge Log Delivery. Убедитесь, что для наборов данных на уровне аккаунта используется /accounts/{account_id} а наборы данных уровня зоны используют /zone/{zone_id}. Дополнительную информацию см. в Наборы данных страницу.

Найти {zone_id} и {account_id} аргументов на основе Найдите ID зоны и аккаунта страницу. {job_id} является числовым аргументом, например 123456. {dataset_id} указывает категорию лога (например, http_requests или audit_logs).

Операция Описание API
POST Создание задания Документация
GET Получение сведений о задании Документация
GET Получение всех заданий по всем наборам данных Документация
GET Получение всех заданий набора данных Документация
GET Получение всех доступных полей набора данных Документация
PUT Обновление задания Документация
DELETE Удалить задание Документация
POST Проверьте, существует ли получатель Документация
POST Получение проверки владения Документация
POST Проверка запроса на подтверждение владения Документация
POST Проверка параметров журнала Документация

Конкретные примеры можно найти в руководствах в Примеры Logpush.

Подключение

Для Logpush API, как и для любого другого API Cloudflare, требуются учётные данные.

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

Хотя бы одно из следующих права доступа токена требуется:
Список заданий Logpush
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/logpush/jobs" \
	--request GET \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"

Владение

Перед созданием нового задания необходимо подтвердить владение пунктом назначения.

Чтобы отправить токен проверки владения на ваше место назначения:

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

Хотя бы одно из следующих права доступа токена требуется:
Получение проверки владения
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/logpush/ownership" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"destination_conf": "s3://<BUCKET_PATH>?region=us-west-2"
	}'

В место назначения будет записан challenge-файл, а имя файла будет указано в ответе (имя файла может быть представлено в виде пути, если это уместно для вашего места назначения):

{
  "errors": [],
  "messages": [],
  "result": {
    "valid": true,
    "message": "",
    "filename": "<PATH_TO_CHALLENGE_FILE>.txt"
  },
  "success": true
}

При создании задания потребуется указать токен, содержащийся в файле.

Назначение

Получателя у облачного провайдера можно указать через обязательное поле destination_conf параметр.

destination_conf параметр должен соответствовать следующему формату:

<scheme>://<destination-address>

Ниже перечислены поддерживаемые схемы, каждая из которых адаптирована под конкретных провайдеров, таких как R2, S3 и т. д. Кроме того, есть схемы для универсальных случаев, например https также охватываются:

destination-address обычно должно предоставляться провайдером назначения. Однако для некоторых провайдеров требуется destination-address соответствовать определённому формату:

Для R2, S3, Google Cloud Storage, а также Azure, вы можете упорядочить журналы по ежедневным подкаталогам, включив специальный заполнитель {DATE} в пути URL. Этот заполнитель будет автоматически заменен датой в YYYYMMDD в формате (например, 20180523).

Например:

Такой подход удобен, если вы хотите группировать журналы по дням.

Дополнительную информацию о значении для вашего поставщика облачного хранилища см. в следующих соглашениях:

Чтобы проверить, используется ли уже место назначения:

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

Хотя бы одно из следующих права доступа токена требуется:
Проверьте, существует ли получатель
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/logpush/validate/destination/exists" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"destination_conf": "s3://foo"
	}'

Ответ

{
  "errors": [],
  "messages": [],
  "result": {
    "exists": false
  },
  "success": true
}

Название

Необязательное понятное человеку имя задания, которое не обязано быть уникальным. Рекомендуем выбрать осмысленное имя, например имя домена, чтобы было проще идентифицировать задание и управлять им. При необходимости имя можно изменить позже.

Тип

Параметр kind (необязательный) используется, чтобы различать задания Logpush и Edge Log Delivery. Для заданий Logpush этот параметр можно оставить пустым или не указывать вовсе. Для заданий Edge Log Delivery установите "kind": "edge". В настоящее время Edge Log Delivery поддерживается только для http_requests набор данных.

Необходимые разрешения 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>",
		"destination_conf": "s3://<BUCKET_PATH>?region=us-west-2",
		"dataset": "http_requests",
		"output_options": {
				"field_names": [
						"ClientIP",
						"ClientRequestHost",
						"ClientRequestMethod",
						" ClientRequestURI",
						"EdgeEndTimestamp",
						"EdgeResponseBytes",
						"EdgeResponseStatus",
						"EdgeStartTimestamp",
						"RayID"
				],
				"timestamp_format": "rfc3339"
		},
		"kind": "edge"
	}'

Параметры

Logpull_options был заменён параметром output_options функции Custom Log Formatting. Подробнее см. в Параметры вывода журнала документацию, где приведены инструкции по настройке этих параметров и обновлению существующих заданий для их использования.

Если вы всё ещё используете logpull_options, вот параметры, которые можно настроить:

  1. Поля (необязательно): См. Наборы данных для доступных на данный момент полей. Список полей также доступен напрямую через API: https://api.cloudflare.com/client/v4/zones/{zone_id}/logpush/datasets/{dataset_id}/fields. Поля по умолчанию: https://api.cloudflare.com/client/v4/zones/{zone_id}/logpush/datasets/{dataset_id}/fields/default.
  2. Формат временной метки (необязательно): Формат, в котором будут возвращаться поля временной метки. Возможные значения: unixnano (единица измерения наносекунды, по умолчанию), unix (единица измерения секунды), rfc3339 (единица измерения секунды).
  3. Маскирование данных для CVE-2021-44228 (необязательно): Эта опция заменит каждое вхождение ${ с x{. Чтобы включить эту функцию, задайте "CVE-2021-44228": true.

Чтобы проверить, что выбранный logpull_options допустимы:

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

Хотя бы одно из следующих права доступа токена требуется:
Проверка origin-сервера
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/logpush/validate/origin" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"logpull_options": "fields=RayID,ClientIP,EdgeStartTimestamp&timestamps=rfc3339&CVE-2021-44228=true",
		"dataset": "http_requests"
	}'

Ответ

{
  "errors": [],
  "messages": [],
  "result": {
    "valid": true,
    "message": ""
  },
  "success": true
}

Время изменения конфигурации

Когда вы изменяете конфигурацию задания Logpush, изменения не вступают в силу сразу.

Изменения назначения

Если вы перенастраиваете задание на новую цель, в течение переходного периода журналы могут ещё около 10-15 минут отправляться на старую цель. Эта задержка позволяет системе завершить текущие загрузки и распространить новую конфигурацию по всей сети Cloudflare.

Изменения полей

Когда вы добавляете новые поля в существующее задание Logpush, они появляются в ваших журналах примерно через 10-15 минут. Это время приблизительное и может меняться в зависимости от нагрузки на систему.

Фильтр

С помощью фильтров выберите события, которые нужно включить в журналы или исключить из них. Подробнее см. в Фильтры.

Частота дискретизации

Значение может составлять от 0.0 (не включая) до 1.0 (включительно). sample=0.1 означает возврат 10% (1 из 10) всех записей. Значение по умолчанию: 1, это означает, что логи не будут проходить сэмплирование.

Основные сведения о sample_rate и SampleInterval

sample_rate параметр и SampleInterval являются независимыми механизмами, работающими на разных этапах конвейера логирования:

sample_rate который вы настраиваете, применяется поверх уже имеющегося сэмплирования. Если в ваших данных уже есть SampleInterval: 1000 и вы задаёте sample_rate: 0.1, вы получаете примерно 1 из 10,000 исходных событий (1000 × 10).

Максимальные параметры загрузки

Эти параметры определяют размер каждой партии выгрузки, а не скорость доставки данных. Используйте их, чтобы не перегружать место назначения слишком большими или слишком маленькими партиями.

Параметр Описание По умолчанию
max_upload_bytes Максимальный несжатый размер файла пакета журналов. Зависит от получателя
max_upload_records Максимальное количество строк журнала на пакет. 100,000
max_upload_interval_seconds Максимальный временной диапазон данных журнала на пакет (используется в сценариях catch-up). Зависит от получателя

Когда нужно менять эти параметры

Пользовательские поля

Вы можете добавить в записи журнала HTTP-запросов пользовательские поля в виде заголовков HTTP-запросов, заголовков HTTP-ответов и cookies. Настройка пользовательских полей применяется ко всем заданиям Logpush в зоне, использующим набор данных HTTP requests. Подробнее см. Пользовательские поля.

Audit

Следующие действия Logpush регистрируются в Cloudflare Audit Logs: создание, обновление и удаление задания.