Язык фильтрующих выражений
Записи в лог-группе можно фильтровать, используя язык фильтрующих выражений. Язык фильтрующих выражений позволяет:
- искать записи по одному или нескольким значениям параметра;
- использовать в фильтрах операции сравнения и логические операторы.
Как задать фильтр
- В консоли управления
перейдите в каталог, в котором находится лог-группа. - Выберите сервис Cloud Logging.
- Перейдите на вкладку Группы.
- Нажмите на строку с лог-группой, записи в которой хотите отфильтровать.
- Перейдите на вкладку Логи.
- Введите фильтр и нажмите Enter.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы задать фильтр с помощью языка фильтрующих выражений, выполните команду:
yc logging read --group-name=default --filter="<фильтр>"
Примечание
Можно одновременно фильтровать записи с помощью параметра --filter и других параметров команды yc logging read. Тогда условия объединятся с помощью оператора AND. Например, можно задать фильтр, используя параметр --resource-types и свойство level параметра --filter:
yc logging read --group-name=default --resource-types=serverless.function --filter="level=INFO"
Такой фильтр выведет записи с уровнем логирования INFO, которые отправлены за последний час функциями Cloud Functions.
Задать фильтр можно с помощью вызова gRPC API LogReadingService/Read.
Примеры фильтров
- Записи, в сообщениях которых есть
warningилиerror dialing endpoint:message: warning "error dialing endpoint"- Записи, созданные после 8 июня 2023 года:
timestamp > "2023-06-08T00:00:00Z"- Записи, уровень логирования которых выше или равен
INFO:level >= INFO
Параметры фильтров
| Параметр | Формат фильтра | Описание | Пример фильтра |
|---|---|---|---|
message |
параметр: "значение" |
Поиск записей, в сообщениях которых есть заданные значения. message является параметром по умолчанию, поэтому в запросе его можно не указывать. |
"Hello world!" Error Exception |
resource_type |
параметр: "значение"параметр <операция сравнения> "значение" |
Поиск записей, отправленных ресурсами заданного типа, например функциями. | resource_type = "serverless.function" |
resource_id |
параметр: "значение"параметр <операция сравнения> "значение" |
Поиск записей, отправленных ресурсом с заданным идентификатором. | resource_id: "d4e155orh3nu********" |
json_payload |
параметр: "значение" |
Поиск записей, в json_payload которых есть заданные значения. Осуществляется по тексту. |
json_payload: "error" |
json_payload.<элемент> |
параметр: "значение"параметр <операция сравнения> "значение" |
Поиск записей по элементам json_payload. Если в фильтре используется операция сравнения, элемент может быть строкой, числом или логическим значением, в противном случае — только строкой. Префикс json_payload можно не указывать, если корневой элемент дерева не совпадает ни с одним из параметров. Проверить существование элемента в json_payload можно с помощью оператора EXISTS. Например: json_payload.result EXISTS. Такой фильтр выведет записи, в json_payload которых есть элемент result. |
json_payload.flag = FALSE |
timestamp |
параметр <операция сравнения> "значение" |
Поиск записей, созданных в заданный промежуток времени. | timestamp >= "2023-06-08T00:00:00Z" |
ingested_at |
параметр <операция сравнения> "значение" |
Поиск записей, доставленных в заданный промежуток времени в систему логирования Cloud Logging. | ingested_at = "2023-06-22T05:15:03Z" |
saved_at |
параметр <операция сравнения> "значение" |
Поиск записей, сохраненных в заданный промежуток времени в базу данных Cloud Logging. | saved_at >= 1622198048 |
level |
параметр <операция сравнения> "значение" |
Поиск записей с заданными уровнями логирования. Доступные уровни логирования — TRACE, DEBUG, INFO, WARN, ERROR, FATAL. |
level >= WARN |
stream_name |
параметр <операция сравнения> "значение" |
Поиск записей по потокам логирования, которые были определены пользователем. | stream_name = input |
request_id |
параметр <операция сравнения> "значение" |
Поиск записей по идентификатору запроса в json_playload. |
request_id <= "145" |
Требования к значению параметра
Можно не брать значение в кавычки, если оно:
- начинается с буквы латинского алфавита и содержит только буквы латинского алфавита, цифры и знаки подчеркивания;
- является целым числом без знака.
TRUE, FALSE, true и false используются для логических значений. Нужно заключить их в кавычки, чтобы найти в тексте.
Доступные типы значений для параметров timestamp, ingested_at и saved_at:
- строка в формате RFC3339:
saved_at > "2023-05-28T15:20:31Z" - число секунд после 00:00 1970-01-01:
saved_at >= 1622198048
Поиск вхождений
Чтобы отфильтровать записи по нескольким значениям одного параметра, перечислите значения друг за другом:
параметр: "значение1" "значение2" "значение3"
Чтобы искать значения с учетом регистра, используйте оператор :!
параметр:! "знаЧеНие1" "значЕнИе2"
Поиск логических значений и чисел с плавающей и фиксированной точкой выполняется как поиск вхождения подстроки во множество строк.
Операции сравнения
Кроме проверки на точное совпадение, язык фильтрующих выражений поддерживает операции сравнения:
-
Равно
параметр = "значение" -
Не равно
параметр <> "значение" -
Больше, Меньше, Меньше или равно, Больше или равно
параметр > "значение" параметр < "значение" параметр >= "значение" параметр <= "значение"
Сравнение строк производится в лексикографическом порядке.
Фильтры с несколькими условиями
Объединить несколько условий в одном фильтре можно с помощью логических операторов:
-
AND— логический оператор И. Условия, объединенные таким оператором, должны выполняться одновременно.Пример:
параметр1: "значение1" AND параметр2: "значение2"Такой запрос выведет записи, у которых
параметр1имеетзначение1ипараметр2имеетзначение2. -
OR— логический оператор ИЛИ. Должно выполняться хотя бы одно из условий, объединенных таким оператором.Пример:
параметр1: "значение1" OR параметр2 > "значение2"Такой запрос выведет записи, у которых выполнено хотя бы одно из условий:
параметр1имеетзначение1илипараметр2большезначение2. -
NOT— логический оператор НЕ. Должно выполняться условие, обратное заданному.Пример:
NOT параметр1: "значение1"Такой запрос выведет записи, у которых
параметр1имеет значение, отличное отзначение1.
Создавать сложные фильтры можно, комбинируя несколько операторов в одном запросе:
параметр1: "значение1" AND параметр2: "значение2" OR параметр3: "значение3"
Порядок вычислений
- Поиск вхождений, операции сравнения, оператор
EXISTS - Логический оператор
NOT - Логический оператор
AND - Логический оператор
OR
Изменить порядок вычислений можно с помощью скобок:
параметр1: "значение1" AND (параметр2 = "значение2" OR параметр3 < "значение3")