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

Фильтры

В следующей таблице приведены поддерживаемые операторы сравнения и примеры значений. Фильтры добавляются в виде экранированных строк JSON в формате {"key":"<field>","operator":"<comparison_operator>","value":"<value>"}.

Название Нотация операторов String Int Bool Array Объект Пример
Равно eq ✅ ✅ ✅ ❌ ❌ {"key":"ClientRequestHost","operator":"eq","value":"example.com"}
Не равно !eq ✅ ✅ ✅ ❌ ❌ {"key":"ClientCountry","operator":"!eq","value":"ca"}
Меньше lt ❌ ✅ ❌ ❌ ❌ {"key":"BotScore","operator":"lt","value":"30"}
Меньше или равно leq ❌ ✅ ❌ ❌ ❌ {"key":"BotScore","operator":"leq","value":"30"}
Больше gt ❌ ✅ ❌ ❌ ❌ {"key":"BotScore","operator":"gt","value":"30"}
Больше или равно geq ❌ ✅ ❌ ❌ ❌ {"key":"BotScore","operator":"geq","value":"30"}
Начинается с startsWith ✅ ❌ ❌ ❌ ❌ {"key":"ClientRequestPath","operator":"startsWith","value":"/foo"}
Заканчивается на endsWith ✅ ❌ ❌ ❌ ❌ {"key":"ClientRequestPath","operator":"endsWith","value":"/foo"}
Не начинается с !startsWith ✅ ❌ ❌ ❌ ❌ {"key":"ClientRequestPath","operator":"!startsWith","value":"/foo"}
Не заканчивается на !endsWith ✅ ❌ ❌ ❌ ❌ {"key":"ClientRequestPath","operator":"!endsWith","value":"/foo"}
Содержит contains ✅ ❌ ❌ ✅ ❌ {"key":"ClientRequestPath","operator":"contains","value":"/static"}
Не содержит !contains ✅ ❌ ❌ ✅ ❌ {"key":"ClientRequestPath","operator":"!contains","value":"/static"}
Значение входит в набор значений in ✅ ✅ ❌ ❌ ❌ {"key":"EdgeResponseStatus","operator":"in","value":[200,201]}
Значение не входит в набор значений !in ✅ ✅ ❌ ❌ ❌ {"key":"EdgeResponseStatus","operator":"!in","value":[200,201]}

Поле фильтра ограничено примерно 30 операторами и 1000 байт. Превышение этого значения приведёт к ошибке.

Логические операторы

Ниже приведены примеры использования логических операторов. X, Y и Z используются для представления критериев фильтра:

Фильтры Logpush работают как пропускной барьер, а не как список исключений. Когда несколько условий объединены с помощью AND:

Распространенная ошибка: интерпретировать этот фильтр как exclude logs matching ALL conditions вместо include logs matching ALL conditions.

Настройте фильтры через API или дашборд

Фильтры можно настроить через API или в панели управления Cloudflare. Использование фильтра необязательно, но если вы его применяете, он должен содержать where ключ.

API

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

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

Хотя бы одно из следующих права доступа токена требуется:
Создать задание Logpush
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/logpush/jobs" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"name": "static-assets",
		"output_options": {
				"field_names": [
						"ClientIP",
						"EdgeStartTimestamp",
						"RayID"
				],
				"sample_rate": 0.1,
				"timestamp_format": "rfc3339",
				"CVE-2021-44228": true
		},
		"dataset": "http_requests",
		"filter": "{\"where\":{\"and\":[{\"key\":\"ClientRequestPath\",\"operator\":\"contains\",\"value\":\"/static\"},{\"key\":\"ClientRequestHost\",\"operator\":\"eq\",\"value\":\"example.com\"}]}}",
		"destination_conf": "s3://<BUCKET_PATH>?region=us-west-2/"
	}'

Dashboard

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

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

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

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

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

  3. Ниже Выбор полей данных, в Фильтр разделе вы можете настроить свои фильтры.

  4. Необходимо выбрать поле датасета, Оператор, а также Значение.

  5. Вы можете объединять несколько фильтров с помощью AND и OR логических операторов.

  6. Выберите Далее чтобы продолжить настройку задания Logpush.