Sumologic:如何获得两条消息之间的平均时间差
Posted
技术标签:
【中文标题】Sumologic:如何获得两条消息之间的平均时间差【英文标题】:Sumologic: How to get average time difference between two messages 【发布时间】:2021-03-06 21:17:57 【问题描述】:拥有一组日志,例如:
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
感谢任何线索。
【问题讨论】:
我不知道完整的答案,但它可能涉及使用应用于_messagetime
字段的diff
运算符。这将允许您找到后续消息之间的时间。
@chadoliver 是的,先生,做到了
【参考方案1】:
感谢@chadoliver,他向我指出了差异运算符。
* | keyvalue auto | diff _messagetime by requestId | where message = "End" | avg(_diff) | ceil(_avg)
【讨论】:
以上是关于Sumologic:如何获得两条消息之间的平均时间差的主要内容,如果未能解决你的问题,请参考以下文章
SumoLogic — 从日志中的“状态”json 消息中绘制数据