Логические выражения
Язык запросов 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
