要求html
1. 下載安裝
可使用pip安裝最新發布的ElastAlert版本:python
pip install elastalert
或者從github克隆ElastAlert項目並安裝git
cd /opt/ git clone https://github.com/Yelp/elastalert.git pip install "setuptools>=11.3" python setup.py install
2. 修改配置文件github
cd /opt/elastalert cp config.yaml.example config.yaml
[root@elk elastalert]# cat config.yaml ------------------------------------------------------------------------------------------------------- rules_folder: example_rules #ElastAlert加載規則配置文件的目錄位置。它將嘗試加載此文件夾中的每一個.yaml文件。 run_every: #ElastAlert查詢Elasticsearch的頻率 minutes: 1 buffer_time: #結果緩存時間,從每一個查詢運行的時間向後延伸。use_count_query或use_terms_query設置爲true的規則,將忽略此值。 minutes: 15 es_host: elasticsearch.example.com #Elasticsearch集羣的地址 es_port: 9200 #Elasticsearch集羣的端口 #es_url_prefix: elasticsearch #可選的; Elasticsearch端點的URL前綴。 #es_send_get_body_as: GET #可選的; 查詢Elasticsearch方法- GET,POST或source #es_username: someusername #可選的; 用於鏈接es_host的用戶名。 #es_password: somepassword #可選的; 用於鏈接es_host的密碼。 #use_ssl: True #可選的; 鏈接es_host是否使用TLS; 設爲True或False。 #verify_certs: True #可選的; 是否驗證TLS證書; 設爲True或False。 #ca_certs: /path/to/cacert.pem #可選的; 用於驗證SSL鏈接的CA證書捆綁包的路徑 #client_cert: /path/to/client_cert.pem #可選的; PEM證書的路徑,用做客戶端證書 #client_key: /path/to/client_key.key #可選的; 私鑰文件的路徑,用做客戶端密鑰 writeback_index: elastalert_status #ElastAlert將存儲數據的索引的名稱。下一步會建立這個索引。 alert_time_limit: #若是報警失敗,會在兩天內重試 days: 2
3. 設置Elasticsearch
ElastAlert將其查詢及其警報的有關信息和元數據保存回Elasticsearch。這對於審計,調試很是有用,它容許ElastAlert從新啓動並從中斷的位置恢復。這不是ElastAlert運行所必需的,但強烈建議。其中有 4 個 _type,都有本身的 @timestamp 字段,因此一樣也能夠用 kibana 來查看這個索引的日誌記錄狀況。數組
首先,咱們須要爲ElastAlert建立一個索引:緩存
[root@elk elastalert]# elastalert-create-index Elastic Version:6 Mapping used for string:{'type': 'keyword'} New index elastalert_status created Done!
有關此處將包含哪些數據的信息,請參閱ElastAlert元數據索引。app
[root@elk example_rules]# cat /opt/elastalert/example_rules/autoDispatchAdvanceJob.yaml ------------------------------------------------------------------------------------------ es_host: 10.x.x.x # Elasticsearch的地址 es_port: 9200 name: autoDispatchAdvanceJob Stop # 規則名稱,不能重複,郵件標題就是這個名字 type: flatline # 每一個規則都有不一樣的類型,可能採用不一樣的參數。詳細說明:https://elastalert.readthedocs.io/en/latest/ruletypes.html#rule-types index: elastalert_status # Elasticsearch中的索引名稱,須要報警的日誌 #num_events: 50 #此參數特定於frequency類型,是觸發警報時的閾值。 threshold: 1 # 35分鐘內查詢內容須要出現的次數 timeframe: minutes: 35 # 時間間隔 filter: - query: query_string: # 須要日誌出現的字符串 query: "autoDispatchAdvanceJob" alert: # 告警方式,這裏使用QQ郵箱 - "email" smtp_host: smtp.qq.com smtp_port: 587 #用戶認證文件,須要user和password兩個屬性 smtp_auth_file: /ELK/elastalert/smtp-file.yaml # 這個文件包含發件郵箱的帳號密碼 email_reply_to: "my_test@qq.com" from_addr: "my_test@qq.com" email: # 能夠有多個接收郵箱 - "123456789@qq.com" - "987564321@qq.com"
[root@elk example_rules]# cat /opt/elastalert/example_rules/smtp-file.yaml ---------------------------------------------------------------------------------------------------- #發送郵件的郵箱 user: "123333321@qq.com" ##不是郵箱密碼,是設置的POP3密碼 password: "sdffnddflcvdhbi"
ElastAlert 有如下幾種自帶 ruletype:elasticsearch
# cd /opt/elastalert # python -m elastalert.elastalert --config ./config.yaml --verbose
//或者單獨執行 rules_folder 裏的某個 rule:# python -m elastalert.elastalert --config ./config.yaml --rule ./examele_rules/autoDispatchAdvanceJob.yaml
ide
參考:https://elastalert.readthedocs.io/en/latest/running_elastalert.html#downloading-and-configuring
https://blog.csdn.net/mayifan0/article/details/78023783ui