Язык поисковых запросов

Язык поисковых запросов позволяет:

  • искать по одному или нескольким фильтрующим выражениям;
  • применять логические операции и операции сравнения.

Для фильтрации логов используйте параметры фильтров в поисковой строке.

Параметр

Формат

Описание

Пример

message

message: "значение"

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

message: "Hello world!"

timestamp

timestamp <ОПЕРАТОР_СРАВНЕНИЯ> "<ЗНАЧЕНИЕ>"

Поиск записей, отправленных в заданный промежуток времени

timestamp >= "2022-04-10T00:00:00Z"

level

level <ОПЕРАТОР_СРАВНЕНИЯ> <ЗНАЧЕНИЕ>

Поиск записей с заданными уровнями логирования. Доступные уровни логирования — DEBUG, INFO, WARN, ERROR, CRITICAL

level = INFO

json_payload

json_payload: <ЗНАЧЕНИЕ>

Поиск по тексту записей, в json_payload которых есть заданные значения. Вместо json_payload можно использовать сокращение payload

json_payload: warning

json_payload.field.search

json_payload.<ПОЛЕ>: <ЗНАЧЕНИЕ>

Лексикографический поиск записей по элементам json_payload. Префикс json_payload можно не указывать, если корневой элемент дерева не совпадает ни с одним из параметров. Вместо json_payload можно использовать сокращение payload.

Проверить существование элемента в json_payload можно с помощью оператора EXISTS: json_payload.result EXISTS. Такой фильтр выведет записи, в json_payload которых есть элемент result

json_payload.status: created

Для фильтрации списка записей в журнале используйте в поисковой строке пары <ИМЯ_ПАРАМЕТРА>/<ЗНАЧЕНИЕ_ПАРАМЕТРА>.

Особенности поиска

  1. Символы ", ' и в строке поиска экранируются с помощью .

  2. Значение можно не брать в кавычки, если оно:

    • начинается с буквы латинского алфавита и содержит только буквы латинского алфавита, цифры и знаки подчеркивания;
    • является целым числом без знака.
  3. Формат значений времени: RFC3339.

Операторы сравнения

Оператор

Описание

Пример

=

Равно

message="ИСКОМЫЙ_ТЕКСТ"

<>

Не равно

message<>"ИСКОМЫЙ_ТЕКСТ"

>

Больше

level > DEBUG

<

Меньше

level < DEBUG

>=

Больше либо равно

timestamp >= "2023-04-10T10:20:00Z"

<=

Меньше либо равно

timestamp <= "2023-04-10T10:20:00Z"

:

Содержит

message: "ИСКОМЫЙ_ТЕКСТ"

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

Объединить несколько условий в одном фильтре можно с помощью логических операторов.

Оператор

Описание

Пример

AND

Удовлетворяет всем условиям

service_id=databases AND severity=ERROR

OR

Удовлетворяет как минимум одному условию

severity=ERROR OR status.code=500

NOT

Не удовлетворяет этому условию

NOT message: hello

EXIST

Запись содержит этот параметр

subject.metadata.email EXIST

Порядок вычислений

Используйте скобки для задания определенного порядка вычислений, например:

ПАРАМЕТР_1: "ЗНАЧЕНИЕ_1" AND (ПАРАМЕТР_2 = "ЗНАЧЕНИЕ_2" OR ПАРАМЕТР_3 "ЗНАЧЕНИЕ_3")

В этом примере будут найдены записи, в которых параметр ПАРАМЕТР_1 содержит подстроку "ЗНАЧЕНИЕ_1" и выполнено хотя бы одно из двух условий:

  • Значение параметра ПАРАМЕТР_2 равно "ЗНАЧЕНИЕ_2".
  • Значение параметра ПАРАМЕТР_3 меньше, чем "ЗНАЧЕНИЕ_3" в лексикографическом смысле.