0

拥有一组日志,例如:

Log10:[requestId=2][taskId=C][message='End']
Log9: [requestId=2][taskId=C][message='Start']
Log8: [requestId=2][taskId=B][message='End']
Log7: [requestId=1][taskId=B][message='End']
Log6: [requestId=1][taskId=B][message='Start']
Log5: [requestId=1][taskId=A][message='End']
Log4: [requestId=2][taskId=B][message='Start']
Log3: [requestId=2][taskId=A][message='End']
Log2: [requestId=2][taskId=A][message='Start']
Log1: [requestId=1][taskId=A][message='Start']

首先,我想计算完成每个任务所需的平均时间。我能够通过 transactionize 做到这一点:

* | concat(requestId,":",taskId) as transactionKey | transactionize transactionKey avg(_group_duration) group by taskId

现在,我愿意知道一个任务完成和下一个任务开始之间发生了多少时间(平均)。

在这个具体的例子中,我想要的输出是:

((Log9 - Log8) + (Log4 - Log3) + (Log6 - Log5)) / 3

任何线索表示赞赏。

4

1 回答 1

0

感谢@chadoliver,他向我指出了差异运算符。

* | keyvalue auto | diff _messagetime by requestId | where message = "End" | avg(_diff) | ceil(_avg)
于 2021-03-08T15:09:50.873 回答