У меня есть файл журнала, в котором записывается время начала и окончания обработки файлов. Записи содержат строки, которые выглядят так:
=============== STARTED PROCESSING FILE filename at Thu Jul 19 00:03:55 2018 EDT===============
=============== FINISHED PROCESSING FILE filename at Thu Jul 19 00:04:05 2018 EDT===============
Изначально я придумал запрос, используя _time:
processing.log "FINISHED PROCESSING FILE" OR "STARTED PROCESSING FILE" | rex field=_raw "(?<filename>\S*)" | stats count first(_time) as start last(_time) as finished by filename | eval duration = abs( finished - start)
Это, казалось бы, работало очень хорошо, пока я не понял, что _time завершения и запуска может быть с разницей в часы, даже если фактическая обработка составляет 10 секунд (как в приведенном выше примере. Поэтому сейчас я пытаюсь выполнить этот запрос:
processing.log "FINISHED PROCESSING FILE" OR "STARTED PROCESSING FILE" | rex field=_raw "(?<filename>\S*) at (?<ptime>.*) EDT" | eval stime=strptime(ptime,'%a %B %d %Y %H:%M:%S')| stats count first(stime) as start last(stime) as finished by filename | eval duration = abs( finished - start)
Однако он не дает желаемых результатов, показывающих продолжительность обработки каждого имени файла. Что я делаю не так / как я могу это исправить?