Splunk自定义触发条件告警:15分钟内失败率升1%的配置咨询
Splunk告警触发条件配置方案
基础绝对值告警设置(失败率超过1%触发)
1. 优化查询(可选,提升稳定性)
先调整查询语句,处理无数据或总请求为0的异常场景,避免告警逻辑出错:
index=*apiGateway* Consumer=* ServiceName=creditcard.* host=*gateway* HTTPStatus=* earliest=-15m@s | stats count as Total count(eval(HTTPStatus > 499)) as Failure | eval failureThreshold=round(Failure*100/Total, 2) # 保留两位小数,避免精度干扰 | eval failureThreshold=if(isnull(failureThreshold) OR Total=0, 0, failureThreshold) # 处理空值/无请求场景 | table failureThreshold
2. 配置触发条件
进入告警的触发条件配置页,选择「自定义」模式,直接输入判断逻辑:
failureThreshold > 1
根据你的告警执行频率(每5分钟一次),可设置「连续1次满足条件即触发」,或根据需求调整触发次数。
进阶环比告警设置(失败率较前15分钟上升1%触发)
如果需求是失败率相对上升1%(而非绝对值超过1%),需要修改查询引入历史数据对比:
# 先查询前15分钟的历史失败率 index=*apiGateway* Consumer=* ServiceName=creditcard.* host=*gateway* HTTPStatus=* earliest=-30m@s latest=-15m@s | stats count as Total_Hist count(eval(HTTPStatus > 499)) as Failure_Hist | eval failureThreshold_Hist=round(Failure_Hist*100/Total_Hist, 2) # 再查询当前15分钟的失败率并合并结果 | append [ search index=*apiGateway* Consumer=* ServiceName=creditcard.* host=*gateway* HTTPStatus=* earliest=-15m@s | stats count as Total_Curr count(eval(HTTPStatus > 499)) as Failure_Curr | eval failureThreshold_Curr=round(Failure_Curr*100/Total_Curr, 2) ] # 计算失败率差值 | eval rateIncrease=failureThreshold_Curr - failureThreshold_Hist | table rateIncrease
此时触发条件设置为:
rateIncrease > 1
注意事项
- 确保查询返回结果中包含对应字段(
failureThreshold或rateIncrease),否则触发条件无法识别 - 测试时可手动构造高失败率请求,验证告警是否正常触发
内容的提问来源于stack exchange,提问作者SachinKakkar
相关产品推荐
相关产品推荐

