ElasticAlert基于聚合告警
背景
最近公司网站经常被漏洞扫描,虽然并没有什么漏洞给对方利用,但是每次扫描我们也必须要察觉到,如果扫描的量太大,可以考虑从公有云的安全组上禁用掉这个IP,所以需要统计指定时间内每个IP的访问次数,这是一个手动的过程,非常麻烦。
ElasticAlert目前已经放弃维护了,如果不是依赖很重,建议直接使用新版本:https://github.com/jertel/elastalert2(看简介,支持Helm,对kubernetes更加友好)
elasticalert的基础配置可参考:https://www.cnblogs.com/GXLo/p/9230362.html
配置
name: Too Many Requests
# 告警类型
type: metric_aggregation
# 索引
index: web-nginx-access-*
# 指定聚合的key,这里用的是客户端的IP
metric_agg_key: remote_addr.keyword
# 聚合类型,支持avg,max,min等
metric_agg_type: value_count
# 只有日志中,存在这个key,才会被聚合进去
query_key: remote_addr.keyword
# 如果 5min中的聚合数据,大于这个,就会触发告警
max_threshold: 10000
# 缓存时间,每次会查询10min内的数据
buffer_time:
minutes: 10
# 桶的间隔时间
bucket_interval:
minutes: 5
sync_bucket_interval: true
# 查询DSL,这里还是查询所有,没有使用agg 查询语句
filter:
- query:
match_all: {}
具体参数详解,可查看官方文档
告警效果
to many request on 178.128.81.2
每天学习一点点,重在积累!