如何建立持续的警报,以捕获某些HTTP错误代码的突然尖峰?

时间:2018-07-26 09:46:05

标签: splunk splunk-query

我真的可以使用持续的警报来捕获某些错误代码(例如404或502等)的突然上升(峰值)。 我尝试过考虑如何实现这一目标,然后...嗯...我真的可以在脚本中使用您的帮助:-)

据我了解,搜索查询应“知道”或“感知”正常流量(不确定持续多长时间,可能持续1小时,2小时),并在错误代码与1-2相比出现峰值时发出警报几个小时前。 我认为错误代码峰值阈值应超过总流量的5%,而发生时间超过90秒。

这是我今天使用的Splunk查询,感谢您的帮助将其调整为我上面描述的内容:

tag=NginxLogs host=www1 OR host=www2 |stats count by status|eventstats sum(count) as total|eval perc=round((count/total)*100,2)|where status="404" AND perc>5

1 个答案:

答案 0 :(得分:0)

top命令自动提供计数和百分比。 http://docs.splunk.com/Documentation/Splunk/7.1.2/SearchReference/Top

tag=NginxLogs host=www1 OR host=www2  
| top status
| search percent > 5 AND status > 399

如果splunk日志中包含url,http请求方法和用户,则可以将其添加为此警报的一部分。示例:

tag=NginxLogs host=www1 OR host=www2  
| eventstats distinct_count(userid) as NoOfUsersAffected by requestUri,status,httpmethod
| top status,httpmethod,NoOfUsersAffected by requestUri
| search NoOfUsersAffected > 2 AND ((status>499 AND percentage > 5) OR (StatusCode=400 AND percentage > 95))

您可以使用以下警报消息:

$result.percent$ % ($result.count$ calls) has StatusCode $result.status$  for 
$result.requestUri$ - $result.httpmethod$.
$result.NoOfUsersAffected$ users were affected

您将收到以下警报:

21.19 % (850 calls) has StatusCode 500  for https://app.test.com/hello - GET.
90 users are affected