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

Использование подзапросов

Применение подзапроса для поиска

Ниже представлен запрос, который осуществляет поиск событий входа и выхода в источнике данных winlog_auth, а затем выводит результаты в виде таблицы с указанием типа действия, имени пользователя и временной метки события.

source winlog_auth
| search
[ source winlog_auth
| search (event.action.keyword="logged-out" OR event.action.keyword="logged-in")
| table event.action.keyword, user.name
| format ]
| stats values(user.name) by event.action

  1. source winlog_auth: Указывает, что мы хотим проанализировать данные из источника winlog_auth.
  2. | search [source winlog_auth | search (event.action.keyword="logged-out" OR event.action.keyword="logged-in") | table event.action.keyword, user.name | format ]: Это подзапрос, который фильтрует данные, чтобы оставить только события входа и выхода. Затем он выводит только два поля: действие event.action.keyword и имя пользователя user.name. Результаты подзапроса форматируются с помощью команды format, чтобы их можно было использовать во внешнем запросе. | stats values(user.name) by event.action: В этой части запроса мы используем команду stats, чтобы агрегировать данные. Мы группируем результаты по действию (вход или выход) и для каждого действия находим все соответствующие имена пользователей. Это позволяет нам увидеть, какие пользователи выполняли каждое действие.

Добавление событий с помощью append

Одним из способов использования подзапросов в Smart Monitor является добавление дополнительных событий к исходному результату с помощью команды append. Однако, помимо этого, подзапросы также могут использоваться для более сложных задач. Это особенно полезно, когда вам нужно объединить результаты двух или более запросов в одном результате. Подзапрос, используемый с командой append, выполняется отдельно от исходного запроса, и его результаты добавляются к результату основного запроса.

Давайте рассмотрим пример, чтобы лучше понять, как работает добавление событий с помощью append:

source winlog_auth
| search user.name="AllenLaura"
| append [source winlog_auth | search user.name="BakerBrian"]
  1. | search user.name="AllenLaura": Эта часть запроса фильтрует данные так, чтобы остались только события, связанные с пользователем AllenLaura. Это означает, что будут выбраны только те события, в которых поле "user.name" соответствует значению AllenLaura.
  2. | append [source winlog_auth | search user.name="BakerBrian"]: Это подзапрос, который выполняет похожий поиск, но для пользователя BakerBrian. Результаты этого подзапроса добавляются к результатам исходного запроса с помощью команды append.
Обратите внимание!

Более подробно о том как использовать команду append можно прочитать в разделе Smart Monitor Language

Обогащение данных с помощью join

Команда join позволяет объединять результаты двух запросов на основе общих полей. Подзапрос, используемый в команде join, предназначен для того, чтобы предоставить дополнительные данные, которые могут быть добавлены к исходному результату.

Рассмотрим пример:

source winlog_auth
| join type=inner event.action event.code [source winlog_auth | search event.action.keyword="logged-out"]
  1. |join type=inner event.action event.code [source winlog_auth | search event.action.keyword="logged-out"]: Это операция объединения join, которая соединяет результаты двух запросов по общим полям. Мы указываем тип объединения inner, означает, что выбираются только совпадающие по условию объединения данные. Поэтому мы указываем поля, по которым будем объединять данные: event.action и event.code.
  2. [source winlog_auth | search event.action.keyword="logged-out"]: Это подзапрос, который фильтрует события журнала на основе действия action, чтобы оставить только события выхода из системы logged-out. Результаты этого подзапроса будут использоваться для объединения с исходным запросом.
Обратите внимание!

Более подробно о том как использовать команду join можно прочитать в разделе Smart Monitor Language