日誌內容分析
INFO:elastalert:Ran mgt-nginx-error-4xx from 2020-03-30 21:45 CST to 2020-03-30 21:54 CST: 240 query hits (240 already seen), 0 matches, 0 alerts sent
時間區間說明:
2020-03-30 21:45 CST to 2020-03-30 21:54 CST 爲A區間
A區間是由buffer_time來控制的,該區間是若buffer_time是15,那麼是滾動式的,比如當前時間是21:50
那麼當前的時間區間就是21:35-21:50 ,若當前時間是21:51則時間區間爲21:36-21:51
各項字段說明:
240 query hits 表示在A區間,累計有240個請求滿足匹配條件
240 already seen 表示在A區間前滾動一分鐘(21:45-21:53)已經處理過的
0 matches 表示條數爲,不滿足閾值條件。若閾值爲200次/1分鐘,那麼實際請求300次/1分鐘,matches的值爲1(300/200去小數點),實際請求700次/1分鐘則matches的值爲3(700/200去小數點)
0 alerts sent 表示本次是否觸發警報,0表示未觸發。1表示觸發一次警報
兩個注意事項:
- Elastalert在維護過程中,中斷時間期間的數據若大於buffer_time,則elastaler只會採集最近buffer_time區間的數據,然後進行評估,評估的方式依然根據日誌實際訪問時間評估每分鐘是否滿足報警條件,而不是期間累計得到總數去匹配規則
- 不滿足Query的查詢條件的將不會被hit所計算
釘釘報警推送參考
es_host: mgt-elk-esmaster1
es_port: 9200
name: online-nginx-error-5xx
type: frequency
index: online-nginx-access-*
num_events: 600
timeframe:
minutes: 1
filter:
- query:
query_string:
query: "status>= 500 AND status < 600"
alert:
- "elastalert_modules.dingtalk_alert.DingTalkAlerter"
dingtalk_webhook: "https://oapi.dingtalk.com/robot/send?access_token=xxx"
dingtalk_msgtype: "text"
realert:
minutes: 1
exponential_realert:
hours: 1
alert_subject: "[ElastAlert] online-nginx-5xx overload"
alert_text_type: alert_text_only
alert_text: |
[ElastAlert] online-nginx-5xx overload
索引: online-nginx-access-*
描述: 5xx >=600次/每分鐘
Elastalert啓動管理腳本
[root@mgt-elastalert-server1 elastalert]# cat elastalert.sh
#!/bin/bash
case "$1" in
start)
/usr/bin/cd /data1/elastalert/
/usr/bin/nohup python3 -m elastalert.elastalert --verbose &
;;
stop)
/usr/bin/pkill python3
;;
restart)
/usr/bin/pkill python3
/usr/bin/cd /data1/elastalert/
/usr/bin/nohup python3 -m elastalert.elastalert --verbose &
;;
*)
echo " input [start/stop/restart]"
esac