← Cloudflare Logs / logs / logpush / logpush-job
Фильтры
В следующей таблице приведены поддерживаемые операторы сравнения и примеры значений. Фильтры добавляются в виде экранированных строк JSON в формате {"key":"<field>","operator":"<comparison_operator>","value":"<value>"}.
-
См. Наборы данных со списком полей для каждого набора данных.
-
Операторы сравнения определяют, как значения должны соотноситься с полями в строке журнала, чтобы выражение вернуло true.
-
Значения представляют собой данные, связанные с полями.
| Название | Нотация операторов | 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 байт. Превышение этого значения приведёт к ошибке.
Логические операторы
-
Фильтры можно объединять с помощью
AND,ORлогических операторов. -
Логические операторы можно вкладывать друг в друга.
Ниже приведены примеры использования логических операторов. X, Y и Z используются для представления критериев фильтра:
-
X AND Y AND Z -
{"where":{"and":[{X},{Y},{Z}]}} -
X OR Y OR Z -
{"where":{"or":[{X},{Y},{Z}]}} -
X AND (Y OR Z) -
{"where":{"and":[{X}, {"or":[{Y},{Z}]}]}} -
(X AND Y) OR Z -
{"where":{"or":[{"and": [{X},{Y}]},{Z}]}}
Фильтры Logpush работают как пропускной барьер, а не как список исключений. Когда несколько условий объединены с помощью AND:
- Чтобы журнал был отправлен, все условия должны быть равны TRUE.
- Если хотя бы одно условие имеет значение FALSE, запись исключается из журнала.
Распространенная ошибка: интерпретировать этот фильтр как exclude logs matching ALL conditions вместо include logs matching ALL conditions.
Настройте фильтры через API или дашборд
Фильтры можно настроить через API или в панели управления Cloudflare. Использование фильтра необязательно, но если вы его применяете, он должен содержать where ключ.
API
Пример запроса с использованием cURL через API:
Необходимые разрешения 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": "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
Чтобы настроить фильтры через панель управления:
-
На панели управления Cloudflare перейдите к разделу Logpush на уровне аккаунта или домена (также называемого зоной).
Для аккаунта: Перейдите в Logpush ↗
Для домена (также называемого зоной): Перейдите в Logpush ↗
-
Выберите набор данных, который хотите отправлять в службу хранения. В зависимости от выбора вам будет доступно наборы данных уровня аккаунта и наборы данных, привязанные к зоне, соответственно.
-
Ниже Выбор полей данных, в Фильтр разделе вы можете настроить свои фильтры.
-
Необходимо выбрать поле датасета, Оператор, а также Значение.
-
Вы можете объединять несколько фильтров с помощью
ANDиORлогических операторов. -
Выберите Далее чтобы продолжить настройку задания Logpush.