我真的可以使用持续的警报来捕获某些错误代码(例如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
答案 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