Использование подзапросов
Применение подзапроса для поиска
Ниже представлен запрос, который осуществляет поиск событий входа и выхода в источнике данных 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