elastalert是yelp開發(fā)的用來監(jiān)控elasticsearch中數(shù)據(jù)變化的工具
項目地址
https://github.com/Yelp/elastalert
1特占、全局配置文件
在執(zhí)行elastalert主進程的時候需要指定一個全局配置文件抠刺,config.yaml屈溉,在這個全局配置文件中會有一個rule_folder的字段會指定rule的配置文件所在的文件夾。
2、全局配置文件 config.yaml
全局配置文件是在args中輸入的助琐,解析是在config.py的load_rules中開始的烙丛,整個配置文件會被load成一個字典對象舅巷,然后很多全局的東西都會被“掛載”在這個conf對象中。
2.1 conf['rules']
conf['rules']不是在配置文件中生成的河咽,他是在load_rules函數(shù)中钠右,通過解析rule_folder中所有的rule配置文件,返回的ruletype對象忘蟹,組成的一個列表飒房。
如果在args里面指定了--rule的參數(shù),那么只會在rulefolder里面加載那個指定的rule
2.2 config中的rules_folder
指定rule配置文件的位置媚值,這個參數(shù)最終在config.py的get_file_paths中使用狠毯,如果配置了scan_subdirectories,那么會把所有子文件中的rule都load進來褥芒,最終返回一個rule配置文件的列表嚼松。
2.3 config中的run_every
run_every是指elastalert會每隔若干時間去檢查一遍數(shù)據(jù),是監(jiān)控數(shù)據(jù)的采樣間隔時間锰扶。在config.py會將run_every轉(zhuǎn)換成datetime.timedelta對象献酗,真正的使用是在elastalert.py。
可以看到在這個while循環(huán)中run_every會決定下一次run_all_rules的執(zhí)行時間坷牛。
2.4 config中的buffer_time
這個在長期運行的elastalert中罕偎,為了對比過往一段時間的數(shù)據(jù),會暫存一些查詢結(jié)果京闰,暫存時間由buffer_time控制颜及,還有如果第一次運行一個新的rule痴怨,這個rule會往前追溯一段時間的結(jié)果,這個時間也由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
這些參數(shù)都和連接es實例有關(guān),相關(guān)的函數(shù)雷则。
- wait_until_responsive(self, timeout, clock=timeit.default_timer)
-
elasticsearch_client(conf): 建立elastalert和es的連接
2.6 config中的writeback_index
在elastalert運行的時候也要在es中創(chuàng)建一個index去存儲一些元數(shù)據(jù)辆雾,包括每一次query的結(jié)果,發(fā)送alert的信息等月劈。這個index名字由這個字段來設(shè)置度迂。
2.7 config中的alert_time_limit
如果alert發(fā)送失敗,elastalert會在這個limit時間之內(nèi)retry
這個參數(shù)在find_recent_pending_alerts函數(shù)中會用到