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

transaction

Описание

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

Синтаксис

transaction <field-list> [timefield=<timefield>] [maxspan=<span>] [maxpause=<span>] [maxevents=<int>] [startswith=<search-expression>] [endwith=<search-expression>] [<rawfield>=<field>] [keepevicted=<boolean>] 

Обязательные аргументы

ПараметрСинтаксисОписание
<field-list><field> [, <field>]Список полей для сравнения.

Опциональные аргументы

ПараметрСинтаксисПо умолчаниюОписание
timefieldtimefield=<field>@timestampИмя поля в котором хранится временная метка.
raweventrawevent=<field>Указывает имя поля, значения которого будут объединены в одну строку в том порядке, в котором события вошли в транзакцию. Полученная строка перезаписывает указанное поле.
maxspanmaxspan=<span>без ограниченийОграничивает максимальную длительность транзакции. Если разница между временем первого и последнего события превышает указанное значение, начинается новая транзакция.
maxpausemaxpause=<span>без ограниченийОграничивает максимальный разрыв между соседними событиями внутри транзакции. Если пауза между событиями превышает порог, новое событие начинает новую транзакцию.
maxeventsmaxevents=<int>без ограниченийМаксимальное количество событий в транзакции.
startswithstartswith=<search-expression>отсутствуетОпределяет условие, которому должно соответствовать событие, чтобы оно считалось началом транзакции. Транзакция создается только после появления подходящего события. Каждое такое событие начинает новую транзакцию.
endswithendwith=<search-expression>отсутствуетОпределяет условие, которому должно соответствовать событие, чтобы оно считалось завершением транзакции. После добавления такого события транзакция закрывается.
keepevictedkeepevicted=<boolean>falseОпределяет, нужно ли выводить отброшенные транзакции. Таковыми считаются транзакции, которые были начаты по условию startswith, но не завершены по условию endswith.

Допустим следующий формат временных параметров: (+|-)<int>(s|m|h|d|w|month):

  • s/sec/secs/second/seconds - секунды
  • m/min/mins/minute/minutes - минуты
  • h/hr/hrs/hour/hours - часы
  • d/day/days - дни
  • w/week/weeks - недели
  • mon/month/months - месяцы
предупреждение

Если в исходных событиях присутствуют поля duration, eventcount, closed_txn, они будут перезаписаны статистическими результатами transaction. Если в исходных событиях присутствуют поле rawevent и в команде указана опция rawevent, в результатах поле будет перезаписано.


Примеры запросов

Пример 1

Поиск медленных задач.

... | transaction job_id 
| where duration > 120

В транзакцию объединяются события с одинаковыми job_id. Далее проводится фильтрация по долго выполняющимся задачам.


Пример 2

Трекинг пользовательской сессии с ограничениями по времени.

... | transaction session_id maxspan=10m maxpause=30s

В транзакцию объединяются события с одинаковым session_id. Транзакция заканчивается если последовательность событий занимает больше 10 минут или интервал между событиями составляет больше 30 секунд.


Пример 3

Успешная покупка в интернет магазине.

... | transaction JSESSIONID, clientip startswith=(action="view") endswith="purchase" rawevent=action   

В транзакцию объединяются события с одинаковыми JSESSIONID и clientip. Транзакция должна начинаться с события, у которого поле action равно view, а заканчиваться событием, у которого любое поле равно purchase. Если транзакция началась, но дальше встретилось новое событие со значением view, транзакция завершится со статусом evicted и начнется новая транзакция. В результате вернутся только успешные транзакции. Все действия пользователя в успешных транзакциях объединятся в строку и запишутся в поле action.


Пример 4

Все действия в интернет магазине.

... | transaction JSESSIONID, clientip startswith=(action="view") endswith="purchase" maxspan=5m keepevicted=true   

В этом запросе, помимо условий startswith и endswith, определены максимальное время транзакции и параметр keepevicted. Как и в предыдущем примере, в успешную транзакцию объединяются только цепочки событий, которые начинаются с view и заканчиваются purchase. Дополнительно проверяется, что длительность транзакции должна быть не более 5 минут. Транзакции, которые начались, но прервались из-за ограничения по времени или нового события view, считаются отброшенными. Они попадут в результат запроса, так как параметр keepevicted равен true.