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

时间:2018-03-18 12:35:22

标签: c# asp.net-web-api sumo sumologic

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

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

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

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

3 个答案:

答案 0 :(得分:1)

我不熟悉SumoLogic,所以不知道是否有办法让它在日志中搜索具有相同id的StartedEnded事件(即表示结束的事件)发现与“开始”相同的查询然后比较时间。

但是,它似乎允许您根据单个日志条目触发警报: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代码中的其他逻辑来处理这个问题。可悲的是,我无法看到任何明显的文档。

答案 1 :(得分:0)

请原谅我,但是是什么阻止了你编码呢?你不能只从结束时间中减去开始时间并根据结果的秒数采取行动吗?

答案 2 :(得分:0)

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

Example
输入

* | 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

<强>结果
<p-table [value]="teamList" [(selection)]="selectedTeam" [resizableColumns]="true" selectionMode="single" [paginator]="teamList.length > 5" [rows]="5" [scrollable]="true" (onRowSelect)="onTeamSelected($event)"> ..... </p-table> private onTeamSelected(event: any) { if (this.team.unsavedWork) { if (!!this.prevSelectedTeam) { this.selectedTeam = this.prevSelectedTeam; return; } } // do implementation // in case of saved work, to select the team back // the previous selected team is being set this.prevSelectedTeam = this.selectedTeam; }