Sumo Logic 计算两个日志事件之间的时间

Sumo Logic Calculate time between two log events

我在 .NET Web API 中有一个控制器操作方法,在方法的开头有一个日志语句,它只记录 Started,这意味着执行已经开始了。

然后,就在返回响应之前,还有另一个日志语句记录 Finished,这意味着执行已完成。

现在,我想在两个日志事件之间的时间差超过特定数字时设置 Sumo Logic 通知警报,例如10 秒。

基本上,我想由此实现的是,如果我的 API 端点花费的时间超过特定持续时间来发送响应,我希望得到通知。

请原谅我这么问,是什么阻止了您对它进行编码?您不能只用结束时间减去开始时间,然后根据结果的秒数采取行动吗?

我不熟悉 SumoLogic,所以不知道是否有办法让它在日志中搜索具有相同 ID 的 StartedEnded 事件(即要指示的内容Ended 发现与 Started 相关的查询)然后比较时间。

但是它看起来允许您根据单个日志条目触发警报:https://help.sumologic.com/Dashboards-and-Alerts/Alerts/03-Create-a-Real-Time-Alert

public T MyApiFunction()
{
    T result;
    var id = Guid.NewGuid(); //id used so we can tie up related start and end events if that option's possible
    var startedAt = DateTime.UtcNow;
    logger.Log("Started", id, startedAt);

    //...

    var completedAt = DateTime.UtcNow;
    logger.Log("Completed", id, completedAt);
    var secondsTaken = end.Subtract(start).TotalSeconds;
    if (secondsTaken > AlertThresholdSeconds)
    {
        logger.Error(String.Format("API call time exceeded threshold: {0} seconds", secondsTaken),id);
    }
    return result;
}

我怀疑那里有更好的选择/SumoLogic 提供了从外部监视调用的选项,而不是在 API 的代码中需要额外的逻辑来处理这个。遗憾的是,我看不到任何明显的文档。

这可以通过 join 运算符实现。
实际上,如果您有 2 次搜索(一次用于开始事件,一次用于结束事件),您可以将它们连接在一起,然后从开始时间减去结束时间以获得增量并从中触发事件。

Example
输入

starting stream from stream-2454 starting stream from stream-7343 starting search search-733434 from parent stream stream-2454 starting search search-854343 from parent stream stream-7343 starting stream from stream-6543 starting search search-455563 from parent stream stream-6543 starting search search-32342 from parent stream stream-7343

代码
* | join (parse "starting stream from *" AS a) AS T1, (parse "starting search * from parent stream *" AS b, c) AS T2 on T1.a = T2.c

结果
a b c stream-2454 search-733434 stream-2454 stream-7343 search-854343 stream-7343 stream-7343 search-32342 stream-7343 stream-6543 search-854343 stream-6543