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" | - * заменяет любое имя поля (или его часть) и уровень вложенности - Все имена полей сравниваются с учетом регистра ( testalert ≠ TestAlert ), а значения - без учета |
alerts.labels.alertname: "TestAlert" | 1. Корневой объект alerts 2. Вложенный объект labels внутри alerts 3. Поле alertname внутри labels со значением "TestAlert" | - Не допускаются массивы на пути поиска - Все промежуточные элементы должны быть объектами - Все имена полей сравниваются с учетом регистра ( testalert ≠ TestAlert ), а значения - без учета |
*.labels.alertname: "TestAlert" | - Есть любое вложенное свойство (обозначено * ) - Внутри этого вложенного свойства есть объект labels - В объекте labels есть поле alertname со значением "TestAlert" | - Поддерживаются вложенные структуры любой глубины - Имя промежуточного поля ( * ) может быть любым, но структура после него должна строго соответствовать *.labels.alertname - Все имена полей сравниваются с учетом регистра ( testalert ≠ TestAlert ), а значения - без учета |
alerts[*].labels.alertname: "TestAlert" | - В массиве alerts есть хотя бы один элемент (обозначено [*] ) - В этом элементе есть объект labels - В объекте labels есть поле alertname со значением "TestAlert" | - [*] означает "любой элемент массива" - Массив alerts может содержать другие поля, но должен иметь хотя бы один элемент с нужной структурой - Если alerts не является массивом, запись не подходит - Все имена полей сравниваются с учетом регистра ( testalert ≠ TestAlert ), а значения - без учета |
ale*.alertname: "TestAlert" | - Поле начинается на ale (* заменяет любую последовательность символов) - В этом поле есть непосредственное подполе alertname - Значение alertname в точности равно "TestAlert" | - * заменяет любую последовательность символов (включая пустую строку) - Префикс ale должен точно соответствовать (регистрозависимо) - Между ale* и alertname могут быть промежуточные уровни вложенности - Все имена полей сравниваются с учетом регистра ( testalert ≠ TestAlert ), а значения - без учета |
Операторы для строки запроса
Название оператора | Обозначение оператора | Пример | Результат | Примечание |
---|---|---|---|---|
Или | OR | level: "warning" OR alertname: "Alert" | События, содержащие пару ключ/значение level /warning ИЛИ alertname /Alert | Операторы используются для выстраивания логики между запросами. С их помощью можно создавать сложные фильтры, комбинируя несколько операторов в одном запросе. |
И | AND | level: "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" | текст - только в кавычках |