Логические выражения
Язык запросов Smart Monitor (SML) поддерживает следующие булевы операторы: AND
, OR
и NOT
.
Оператор | Предназначение |
---|---|
AND | Сочетание нескольких условий поиска |
OR | Связывание нескольких условий поиска |
NOT | Инвертирование поиска |
В Smart Monitor прямой поиск обычно более эффективен, чем поиск с отрицанием. Причина заключается в том, что при поиске с отрицанием просматриваются все события для дальнейшего их исключения.
Порядок выполнения
Порядок оценки булевых выражений в Smart Monitor зависит от того, используется ли выражение с командой search
или командой where
.
В следующей таблице описан порядок оценки булевых выражений:
Порядок | Команда search | Команда where |
---|---|---|
1 | Выражения в скобках | Выражения в скобках |
2 | Оператор NOT | Оператор NOT |
3 | Оператор AND | Оператор OR |
4 | Оператор OR | Оператор AND |
Примеры
В следующих примерах показано как SML
обрабатывает логические выражения.
Порядок операторов в командах search и where
Без указания значений в круглых скобок, поиск обрабатывается для search
таким образом:
Поисковый запрос:
source winlog_auth
| search event.code="4768" AND event.outcome="success" OR event.action="logged-in"
| table event.code, event.outcome, event.action
Порядок обработки по таблице:
(3) event.code="4768" AND (3) event.outcome="success" OR (4) event.action="logged-in"
Ситуация для команды where
складывается следующим образом:
Поисковый запрос:
source winlog_auth
| where event.code=="4768" AND event.outcome=="success" OR event.action=="logged-in"
| table event.code, event.outcome, event.action
Порядок обработки по таблице:
(4) event.code="4768" AND (3) event.outcome="success" OR (3) event.action="logged-in"
Использование оператора NOT и выражений в скобках
Поисковый запрос:
source winlog_auth
| search host.name="mail" AND NOT event.code="4625" OR event.code="4624"
| table event.code, event.action, event.outcome
В данном запросе:
- Мы включаем в результаты все события у которых имя хоста равен "mail" и код не равен "4625"
- Или отбираем события с кодом 4624
Если мы объединим в скобки выражения, объединенные OR
, то получится следующий результат:
source winlog_auth
| search host.name="mail" AND NOT (event.code="4625" OR event.code="4624")
| table event.code, event.action, event.outcome