美文网首页ELK stack
elastalert 自学笔记(2)

elastalert 自学笔记(2)

作者: Stansosleepy | 来源:发表于2018-01-11 05:52 被阅读32次

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

    1、全局配置文件

    在执行elastalert主进程的时候需要指定一个全局配置文件,config.yaml,在这个全局配置文件中会有一个rule_folder的字段会指定rule的配置文件所在的文件夹。

    2、全局配置文件 config.yaml

    全局配置文件是在args中输入的,解析是在config.py的load_rules中开始的,整个配置文件会被load成一个字典对象,然后很多全局的东西都会被“挂载”在这个conf对象中。

    image.png
    2.1 conf['rules']

    conf['rules']不是在配置文件中生成的,他是在load_rules函数中,通过解析rule_folder中所有的rule配置文件,返回的ruletype对象,组成的一个列表。

    如果在args里面指定了--rule的参数,那么只会在rulefolder里面加载那个指定的rule

    2.2 config中的rules_folder

    指定rule配置文件的位置,这个参数最终在config.py的get_file_paths中使用,如果配置了scan_subdirectories,那么会把所有子文件中的rule都load进来,最终返回一个rule配置文件的列表。


    image.png
    2.3 config中的run_every

    run_every是指elastalert会每隔若干时间去检查一遍数据,是监控数据的采样间隔时间。在config.py会将run_every转换成datetime.timedelta对象,真正的使用是在elastalert.py。


    image.png

    可以看到在这个while循环中run_every会决定下一次run_all_rules的执行时间。

    2.4 config中的buffer_time

    这个在长期运行的elastalert中,为了对比过往一段时间的数据,会暂存一些查询结果,暂存时间由buffer_time控制,还有如果第一次运行一个新的rule,这个rule会往前追溯一段时间的结果,这个时间也由buffer_time决定。

    2.5 config中的es_host、es_port、es_url_prefix、use_ssl、verify_certs、es_send_get_body_as、es_username、es_password

    这些参数都和连接es实例有关,相关的函数。

    • wait_until_responsive(self, timeout, clock=timeit.default_timer)
    • elasticsearch_client(conf): 建立elastalert和es的连接


      image.png
    2.6 config中的writeback_index

    在elastalert运行的时候也要在es中创建一个index去存储一些元数据,包括每一次query的结果,发送alert的信息等。这个index名字由这个字段来设置。

    2.7 config中的alert_time_limit

    如果alert发送失败,elastalert会在这个limit时间之内retry
    这个参数在find_recent_pending_alerts函数中会用到


    image.png

    相关文章

      网友评论

        本文标题:elastalert 自学笔记(2)

        本文链接:https://www.haomeiwen.com/subject/sazanxtx.html