1

如果在 60 分钟内记录了超过 10 个错误,我们会发出 SumoLogic 警报。
我更喜欢这样的东西: 

  1. 如果出现峰值并且所有错误都在例如 1 分钟内发生(认为问题已自动解决),则不生成警报。

如何设置这样的 sumoLogic 查询?

要求的差异:

  1. 日志有 clientIp 字段,如果所有错误都是针对同一个客户端报告的,则不生成警报(特定客户端的问题,而不是应用程序的问题)

  2. 如果 60 分钟内记录的错误超过 10 个,则发送警报,除非错误是 A 类错误,但如果 A 类错误超过 100 个,则发送警报。(可以接受 A 类日志错误,除非错误数量太大了)

  3. 如果在 60 分钟内记录了超过 10 个错误,则发送警报仅当最后一个错误发生在 30 分钟之前(否则视为自动修复)

4

1 回答 1

1

我不完全确定您的数据是如何形成的,但是...

如果出现峰值并且所有错误都在例如 1 分钟内发生(认为问题已自动解决),则不生成警报。

这可以通过汇总来解决:

| timeslice 1m
| count by _timeslice
| where _count > 1

或类似的。

如果针对同一客户端报告所有错误,则不生成警报

这听起来像:

| count by _timeslice, clientIp

会做的工作。

如果在 60 分钟内记录了超过 10 个错误,则发送警报,除非错误是 A 类错误,但如果有超过 100 个 A 类错误,

查询子句的粗略草图将是:

| if(something, 1, 0) as is_of_type_A
| count by is_of_type_A, ...
| where (is_of_type_A = 1 and _count > 100)
       OR (is_of_type_A = 0 and _count > 10)

免责声明:我目前受雇于 Sumo Logic。

于 2020-08-24T04:51:34.803 回答