elastalert 自学笔记(1)

elastalert是yelp开发的用来监控elasticsearch中数据变化的工具
项目地址
https://github.com/Yelp/elastalert

1、执行elastalert的方法

 #只要指定配置文件即可
 python elastalert/elastalert.py --config config.yaml

2、执行elastalert的可用参数:args

执行elastalert的时候可以使用的参数如下:


elastalert 自学笔记(1)_第1张图片
image.png
2.1 config

全局config文件的位置,这个文件是yaml格式的

2.2 debug

debug模式,该模式下不会发送真的alert,而是调用DebugAlerter,打印一行log

#这里的self.rule就是每个rule配置文件解析后的对象
elastalert_logger.info('Alert for %s at %s:' % (self.rule['name'], lookup_es_key(match, self.rule['timestamp_field'])))

在debug模式下监控结果不会writeback到es中去。

在debug模式下silence参数无效

2.3 rule

指定一个唯一的rule去执行,这个rule的配置文件必须要在rule folder中,rule folder在全局配置文件中指定。

--silence必须指定--rule

2.4 silence

执行的过程中,让这个rule在若干时间内silence

 --silence =, eg. --silence hours=2

silence具体做了什么呢?

  • silence其实主动调用了set_realert,设置在若干时间之后才能再次触发alert
2.5 start 和 end

start实际上设置了一个开始query的时间,默认是现在。
self.starttime会被设置为utc时间

实际上这两个值会一直传递到get_query函数

if starttime and endtime:
       es_filters['filter']['bool']['must'].insert(0, {'range': {timestamp_field: {'gt': starttime,'lte': endtime}}})

如果run_rule里面没有starttime,那么会调用set_starttime函数来设定一个starttime,在这个函数中还会调用get_starttime函数来获取上一次在哪各时候中断了这个rule,如果是全新的rule,会使用buffer_time(来自全局配置文件)

2.6 verbose

设置日志等级为INFO

2.7 patience

这个没有实现的感觉

2.8 pin_rules

elastalert有一个机制可以刷新rule_folder里面的rule配置,新增、删除里面的配置文件都可以立即生效,如果设置了pin_rules,那么就会固定跑最开始load的rule配置文件。

2.9 es_debug、es_debug_trace

会打开和es交互部分的log,debug用

你可能感兴趣的:(elastalert 自学笔记(1))