Splunk零事件告警配置求助:无事件时未触发告警问题
Splunk无事件告警配置解决方案
修改后的搜索语句
index="abc" sourcetype=abc:Prod_logs (host="abc*") | bin span=15m _time | stats count BY _time URL | eval Avg_count_15m = count // 原搜索两次stats avg(count)冗余,单组count的平均值等于自身 | append [ // 生成需要监控的URL列表 | makeresults | eval URL = split("/abc/summary,/xyz/billing", ",") | mvexpand URL // 生成告警时间范围内所有15分钟时间桶 | addinfo | eval _time = info_min_time | bin span=15m _time | eval end_time = info_max_time | append [| makeresults | eval _time=end_time | bin span=15m _time] | dedup _time | sort _time | streamstats current=f last(_time) as next_time | where next_time!=_time OR _time=end_time | fields _time URL ] // 合并实际计数与空组合,填充0值 | stats sum(count) as Avg_count_15m BY _time URL | fillnull value=0 Avg_count_15m // 提取小时字段 | eval eventHour=strftime(_time,"%H") // 阈值判断逻辑 | where ( (URL="/abc/summary" AND Avg_count_15m < 1000 AND eventHour>02 AND eventHour<=05) OR (URL="/abc/summary" AND Avg_count_15m < 22000 AND eventHour>05 AND eventHour<=24) OR (URL="/xyz/billing" AND Avg_count_15m < 50 AND eventHour>=02 AND eventHour<=05) OR (URL="/xyz/billing" AND Avg_count_15m < 110 AND eventHour>=05 AND eventHour<=24) )
核心修改说明
- 补全缺失的URL-时间桶组合:通过
makeresults生成监控URL列表,结合addinfo获取告警时间范围,生成该范围内所有15分钟时间桶,两者做笛卡尔积得到所有可能的_time+URL条目,确保无事件时也能生成对应记录。 - 合并统计并填充0:用
stats sum(count)合并实际计数与空组合,再通过fillnull把空计数补为0,满足阈值判断的触发条件。 - 简化冗余统计:原搜索中两次
stats操作冗余,单_time+URL组的count值平均值等于自身,直接复用count即可。
额外优化建议
若监控URL数量较多,建议用lookup表管理规则:
- 新建CSV文件(如
url_thresholds.csv),包含字段:URL, low_hour_start, low_hour_end, low_threshold, high_hour_start, high_hour_end, high_threshold - 上传至Splunk作为lookup表
- 修改搜索语句,用
inputlookup引入规则,替换硬编码的where条件,提升维护效率
内容的提问来源于stack exchange,提问作者Nisheeth
相关产品推荐
相关产品推荐

