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
每天学习一点点,重在积累!
原文地址:https://www.cnblogs.com/GXLo/p/15259082.html