elastalert 自學筆記(2)

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
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容