Перейти к основному содержимому
Версия: 9.0

MQL формат запросов логов

Список полей и операторов в конструкторе фильтра

  • Равно - по умолчанию
  • Не равно
  • Содержит
  • Не содержит
  • Непустой  (поле для значения отключено)
  • Пустой  (поле для значения отключено)

Поля определены из потоков, доступных контекстной РГ и РГ, пошаривших свои потоки контекстной РГ и отображаются в алфавитном порядке.

Список полей и операторов в поисковой строке

  • Равно - по умолчанию
  • Не равно
  • Содержит
  • Не содержит
  • Непустой
  • Пустой
  • Содержит все
  • Содержит любое (Равно одному из)
  • Не содержит любое (Не равно одному из)

Поля определены из потоков, доступных контекстной РГ и РГ, пошаривших свои потоки контекстной РГ и отображаются в алфавитном порядке.

Примечание 1. Обращение без кавычек можно использовать только для ключей, которые начинаются с буквы английского, русского алфавитов (a-z, A-Z, а-я, А-Я) или подчеркивания (_), и содержат в себе только:

  • буквы английского или русского алфавитов,
  • подчеркивания (_),
  • цифры (0-9),
  • знак доллара ($).

Для всех остальных ключей необходимо использовать кавычки, например:
alerts."this string has spaces".annotations.summary:!~ "LABELS"

Примечание 2. Если в значении ключа есть кавычки, то их нужно экранировать через \, например:
alerts.annotations.summary:!~ "LA\"BE\"LS".

Возможные варианты написания пользовательских запросов в строке запроса

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

ЗапросФильтр выведет все события, у которых...Примечание
*: "TestAlert" - минимально возможный текст запроса с *- Существует любое поле (имя не важно)
- Значение этого поля равно "TestAlert"
- * заменяет любое имя поля (или его часть) и уровень вложенности
- Все имена полей сравниваются с учетом регистра (testalertTestAlert), а значения - без учета
alerts.labels.alertname: "TestAlert"1. Корневой объект alerts
2. Вложенный объект labels внутри alerts
3. Поле alertname внутри labels со значением "TestAlert"
- Не допускаются массивы на пути поиска
- Все промежуточные элементы должны быть объектами
- Все имена полей сравниваются с учетом регистра (testalertTestAlert), а значения - без учета
*.labels.alertname: "TestAlert"- Есть любое вложенное свойство (обозначено *)
- Внутри этого вложенного свойства есть объект labels
- В объекте labels есть поле alertname со значением "TestAlert"
- Поддерживаются вложенные структуры любой глубины
- Имя промежуточного поля (*) может быть любым, но структура после него должна строго соответствовать *.labels.alertname
- Все имена полей сравниваются с учетом регистра (testalertTestAlert), а значения - без учета
alerts[*].labels.alertname: "TestAlert"- В массиве alerts есть хотя бы один элемент (обозначено [*])
- В этом элементе есть объект labels
- В объекте labels есть поле alertname со значением "TestAlert"
- [*] означает "любой элемент массива"
- Массив alerts может содержать другие поля, но должен иметь хотя бы один элемент с нужной структурой
- Если alerts не является массивом, запись не подходит
- Все имена полей сравниваются с учетом регистра (testalertTestAlert), а значения - без учета
ale*.alertname: "TestAlert"- Поле начинается на ale (* заменяет любую последовательность символов)
- В этом поле есть непосредственное подполе alertname
- Значение alertname в точности равно "TestAlert"
- * заменяет любую последовательность символов (включая пустую строку)
- Префикс ale должен точно соответствовать (регистрозависимо)
- Между ale* и alertname могут быть промежуточные уровни вложенности 
- Все имена полей сравниваются с учетом регистра (testalertTestAlert), а значения - без учета

Операторы для строки запроса

Название оператораОбозначение оператораПримерРезультатПримечание
ИлиORlevel: "warning" OR alertname: "Alert"События, содержащие пару ключ/значение level/warning ИЛИ alertname/AlertОператоры используются для выстраивания логики между запросами.
С их помощью можно создавать сложные фильтры, комбинируя несколько операторов в одном запросе.
ИANDlevel: "warning" AND alertname: "Alert"События, содержащие пару ключ/значение level/warning И alertname/AlertПримечание: При вычислении сложных фильтров сначала применяются операторы AND
Для изменения порядка действий пользуйтесь круглыми скобками ( )
Равно(нет оператора)alertname: "Alert"События, содержащие пару ключ/значение alertname/AlertОператоры работают везде и только с одиночными значениями.
Не равно!alertname:!"Alert"События, которые не содержат пару ключ/значение alertname/AlertЧисла можно использовать без кавычек, текст и время/даты - только в кавычках
Пустой<название ключа>:!exists()alertname:!exists()События, у которых отсутствует поле alertnameОператор-функция работает везде, где это предусмотрено.
Непустой<название ключа>:exists()alertname:exists()События, у которых есть значение у ключа alertnameОператор-функция не может помещаться в массив
Содержит~alertname: ~"Alert"События, в ключе alertname которых присутствует слово или вхождение "Alert"Операторы работают для текстовых полей, где это предусмотрено
Не содержит!~alertname: !~"Alert"События, в ключе alertname которых отсутствует слово или вхождение "Alert"Числа можно использовать без кавычек, текст - только в кавычках
Содержит все<название ключа>:["<Значение1>","<Значение2>"]level:["warning","fatal"]События, в которых содержатся ключи level со значениями "warning" и "fatal"Операторы работают с массивами и множественными значениями
Не содержит любое (Не равно одному из)<название ключа>:!~["<Значение1>","<Значение2>"]level:!~["warning","fatal"]События, в которых не содержатся ключи level со значениями или вхождениями "warning" или "fatal"Числа можно использовать без кавычек,
Содержит любое (Равно одному из)<название ключа>:~["<Значение1>","<Значение2>"]level:~["warning","fatal"]События, в которых содержатся ключи level со значениями или вхождениями "warning" или"fatal"текст - только в кавычках