получение средней длительности по группе спланковых транзакций - PullRequest
0 голосов
/ 26 марта 2020

Таким образом, у меня есть некоторые данные в формате

Time                | UUID           |  event_name_status            | actual_important_log_time 
---------------------------------------------------------------------------------------------------------------
2020-03-26T12:00:00 | 123456789      |  car_end                      | 2020-03-25T16:50:30
2020-03-26T12:00:00 | 123456789      |  car_mid                      | 2020-03-25T16:40:30
2020-03-26T12:00:00 | 123456789      |  car_start                    | 2020-03-25T16:30:30
2020-03-26T12:00:00 | 123456788      |  car_end                      | 2020-03-25T15:50:30
2020-03-26T12:00:00 | 123456788      |  car_mid                      | 2020-03-25T15:20:30
2020-03-26T12:00:00 | 123456788      |  car_start                    | 2020-03-25T14:50:30

, что является непротиворечивым шаблоном, в котором каждая транзакция имеет начальный, средний и конечный значения с разными UID для каждой транзакции (также различные механизмы для других транзакций) .

В настоящее время я группирую их в транзакции, используя следующую команду поиска.

* | transaction UUID startswith="car_start" endswith="car_end"

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

Мне нужно получить продолжительность каждой транзакции, используя поле actual_important_log_time , а затем использовать эти значения, чтобы получить среднее значение

1 Ответ

0 голосов
/ 05 апреля 2020
| makeresults
| eval _raw="Time,UUID,event_name_status,actual_important_log_time
2020-03-26T12:00:00,123456789,car_end,2020-03-25T16:50:30
2020-03-26T12:00:00,123456789,car_mid,2020-03-25T16:40:30
2020-03-26T12:00:00,123456789,car_start,2020-03-25T16:30:30
2020-03-26T12:00:00,123456788,car_end,2020-03-25T15:50:30
2020-03-26T12:00:00,123456788,car_mid,2020-03-25T15:20:30
2020-03-26T12:00:00,123456788,car_start,2020-03-25T14:50:30"
| multikv forceheader=1
| table Time,UUID,event_name_status,actual_important_log_time
| foreach *time [ eval <<FIELD>> = strptime('<<FIELD>>', "%FT%T")]
| stats range(actual_important_log_time) as duration by UUID Time
| eval duration=tostring(round(duration),"duration")
| rex field=duration mode=sed "s/(\d+):(\d+):(\d+)/\1h \2m \3s/g"

Этот запрос задает длительность для каждого UUID. Теперь я делаю длительность для чтения. Если вы хотите агрегировать среднее значение, измените Time на эпоху и переименуйте в _time после stats. и использовать timechart

...