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

Логические выражения

Язык запросов 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