Elastalert Spike 配置说明

最近在部署ELK,对业务日志进行监控分析。之前的小米的的open-falcon倒是也能用,但是对于我们的业务来说,不够细粒度。open-falcon还是挺不错的,报警什么的都比较及时。不过of还是偏向于系统级的性能及硬件监控,对于业务上的还得用ELK。

ELK 倒是部署完了,但是没有报警,他的watcher没法进行spike(峰值)判断。于是在调研yelp的开源报警系统elastalert,python写的。但是文档里写的也不是太清楚,只是解释了各个参数的含义,使用起来还是比较费劲的。结合这两天的google和不断尝试,总算是对各个参数有了一个了解,记录一下,以便有同行需要。

这里只对 spike 进行解释,其他的模式我尚未有需求,未有涉猎。可能以后会有。

参考着官方的spike文档:http://elastalert.readthedocs.io/en/latest/ruletypes.html#spike


一些话:

运行ea的时候,对于我们新人来说,最好加上参数“--verbose”和“--es_debug_trace /home/tanxiaolong/software/tanxiaolong.txt”。“verbose”不用说,有开发经验的都知道verbose是干啥的,就是唠唠叨叨啥细枝末节都stdout出来;“--es_debug_trace”的是把ea对es的请求都记录在后面的参数文件里,方便之后查阅。

我运行的时候,完整的命令是:python -m elastalert.elastalert --config ./config.yaml --rule my_rules/tt.yaml --verbose --es_debug_trace /home/tanxiaolong/software/tanxiaolong.txt


对于ea,最最主要的两个文件就是config.yaml和rule文件。

config.yaml 没啥好说的,看官方文档就可以配置个大概,有一点需要注意的就是“writeback_index”这个参数。这里的“writeback_index”的index名称需要通过“elastalert-create-index”命令来进行创建(ea安装好之后自带3个命令:elastalert-create-index、elastalert-rule-from-kibana、elastalert-test-rule)。

比如你创建一个“logstash-ea-test”的index,此时就会在es里创建好一个名为“logstash-ea-test”的index,然后你在config.yaml里面修改为“writeback_index: logstash-ea-test”。否则会报错,说是找不到index。


rule的话,config.yaml第一行就是要配置rule的目录,这里你可以选择默认的example_rules目录,也可以自己创建一个folder,我创建的是“my_rules”,然后所有的rule yaml文件都放到里面。

关于rule的yaml文件,你随便取一个名字,./my_rules/test.yaml。配置一个spike的配置文件。


name: tanxiaolongspiketest
type: spike
index: logstash-sso-*
threshold_cur: 1000
#threshold_ref: 2
timeframe:
  minutes: 2
spike_height: 2
spike_type: "both"
filter:
- query:
    query_string:
      query: "action_type:login_succ"
alert:
- "email"
email:
- "tanxiaolong@qq.com"
use_count_query: true
doc_type: logs

name:就是你rule的名称,这个最后会显示到你的email里。

type:type种类很多,我的需求只是spike,你可以参考官方文档看看其他类型是不是你们的需求。

index:这个index和之前config.yaml的index是两码事,这个index是你要查询的index,在安装ea之前就已经存在于es的index。

filter和use_count_query:这两个参数配合使用,有了use_count_query说明该查询是count查询,只返回数量。你看我的filter的query也能猜出来,我需要count login_succ的数量。

alert:报警方式,官方文档里有几种,我选择email形式。

email:就是email。

doc_type:是logstash-sso index的type类型,这个知道是不是可有可无,这个是自己设置的。搞过logstash的知道。


下面主要讲一下threshold_cur、threshold_ref、timeframe、spike_height和spike_type,他们需要结合起来讲。


首先说一下spike的判断原则,他会比较相邻两个timeframe的值得大小,如果超过spike_height倍,那么就发出警报。


spike_type:有几种,up、down、both,意思是你想监听哪种类型,峰值,低谷,还是二者都有。

ea的spike有两个概念需要知道一下,就是cur窗口和ref窗口,翻译过来就是“当前窗口”和“参照窗口”,而这个“窗口”就是一个时间段(timeframe)。

比如说:

timeframe是minute: 2,意思是我的窗口是2分钟的,以2分钟为一个时间窗口做一次ref和cur的比较


以2分钟为一个周期的话,那么10:22到10:23这2分钟肯定是current,也就是当前时间,当前窗口;相邻的2分钟(10:20和10:21)便是reference,也就是参照时间,参照窗口。

那么对这两个2分钟分别进行求和,得出ref是30,cur是44,此时cur=1.47*ref。

接下来看几个微妙的数字:



图可以看不懂,或者慢慢品味。

只要记住这两句话就行:

1、如果设置了threshold_ref或者threshold_cur,那么比较对应的ref或cur是否大于threshold_ref或者threshold_cur,如果大于,接着看2,否则不警报;

2、是否满足公式 ref * spike_height < cur ,如果是则警报,否则不警报。

threshold_ref和threshold_cur往往只设置一个,至于设置哪个,那就看你咯。


欢迎留言交流。


ref:

1.qiita.com/AknYk416/items/e9e0e2132f6996735ec9

2.engineeringblog.yelp.com/2015/10/elastalert-alerting-at-scale-with-elasticsearch.html

3.elastalert.readthedocs.io/en/latest/ruletypes.html#spike






  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值