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 数组拆分为多条记录

SumoLogic — 从日志中的“状态”json 消息中绘制数据

如何获得 PostgreSQL 中的两个平均值之间的差异,平均值在列上,最终表按两列分组?

点到固定目标点的平均距离

如何在 Tableau 中添加两条单独的平均线

如何获得每个特定时间范围熊猫的平均值