我在 sumologic 上完成了日志记录。日志 JSON 包含请求的响应时间。让它成为一个名为“response_time”的 JSON 键。每个请求都由唯一 ID 标识,由 JSON 键“request_id”表示。和一个由 JSON 键“url”表示的 URL。我需要根据以下条件在松弛通道上发出警报。
1) 在 10 分钟的窗口内,如果有 100 个请求,并且超过 5% 的请求的响应时间超过 100ms,则提醒所有这些请求的“url”、“request_id”和“response_time”。2) 如果小于或等于 5% 的请求的响应时间超过 100 毫秒,则根本不要发出警报。我写了一个这样的查询。
_sourceName=<my_source_name>
| json field=_raw "response_time" as response_time
| json field=_raw "request_id" as request_id
| if (num(response_time) > 100, 1, 0) as higher
| if (num(response_time) <= 100, 1, 0) as lower
| count as total_requests, sum(higher) as
response_time_greater_than_100, sum(lower) as
response_time_less_than_100
| (response_time_greater_than_100/total_requests) as failure_ratio
| where (failure_ratio > 0.05)
当超过 5% 的请求的 response_time 超过 100 毫秒时,上面的查询给了我所有的请求。但无论响应时间如何,它都会给我所有请求。否则不返回任何结果。
除了这个结果,我想进一步过滤上面的查询,请求“response_time”> 100 ms。只要有结果,它就会提供两个选项卡。一个用于“消息”,另一个用于“聚合”。我想将“消息”选项卡中的字段发送到松弛频道。如何做到这一点?