Использование подзапросов
Применение подзапроса для поиска
Ниже представлен запрос, который осуществляет поиск событий входа и выхода в источнике данных 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
source winlog_auth: Указывает, что мы хотим проанализировать данные из источника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 ]: Это подзапрос, который фильтрует данные, чтобы оставить только события входа и выхода. Затем он выводит только два поля: действие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"]
| search user.name="AllenLaura": Эта часть запроса фильтрует данные так, чтобы остались только события, связанные с пользователемAllenLaura. Это означает, что будут выбраны только те события, в которых поле "user.name" соответствует значениюAllenLaura.| 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"]
|join type=inner event.action event.code [source winlog_auth | search event.action.keyword="logged-out"]: Это операция объединенияjoin, которая соединяет результаты двух запросов по общим полям. Мы указываем тип объединенияinner, означает, что выбираются только совпадающие по условию объединения данные. Поэтому мы указываем поля, по которым будем объединять данные:event.actionиevent.code.[source winlog_auth | search event.action.keyword="logged-out"]: Это подзапрос, который фильтрует события журнала на основе действияaction, чтобы оставить только события выхода из системыlogged-out. Результаты этого подзапроса будут использоваться для объединения с исходным запросом.
Более подробно о том как использовать команду join можно прочитать в разделе Smart Monitor Language