es_host: 100.76.37.64
es_port: 9200
name: 配置保存测试
type: any
index: logstash_network*
realert:
minutes: 0
timeframe:
minutes: 1
num_events: 1
filter:
- query:
query_string:
query: message:"SHELL_CMD_CONFIRM"
smtp_host: smtp.163.com
smtp_port: 25
smtp_auth_file: /etc/elastalert/rules/smtp_auth_file.yaml
email_reply_to: rrx_hostmonitor@163.com
from_addr: rrx_hostmonitor@163.com
alert:
- "email"
- "post"
http_post_url: "http://100.76.37.79/recevice_api/"
http_post_static_payload:
rule_name: 配置保存测试
alarm_level: P2
# (required, email specific)
# a list of email addresses to send alerts to
email:
- "magj@jiedaibao.com"
- "suohw@jiedaibao.com"
- "hanyu@jiedaibao.com"
=====================================================================================
Elastalert的rule规则详解
name:配置,每个rule需要有自己独立的name,一旦重复,进程将无法启动。
type:配置,选择某一种数据验证方式。
index:配置,从某类索引里读取数据,目前已经支持Ymd格式,需要先设置 use_strftime_index:true,然后匹配索引,配置形如:index: logstash-es-test%Y.%m.%d,表示匹配logstash-es-test名称开头,以年月日作为索引后缀的index。
filter:配置,设置向ES请求的过滤条件。
timeframe:配置,累积触发报警的时长。
alert:配置,设置触发报警时执行哪些报警手段。不同的type还有自己独特的配置选项。目前ElastAlert 有以下几种自带ruletype:
any:只要有匹配就报警;
blacklist:compare_key字段的内容匹配上 blacklist数组里任意内容;
whitelist:compare_key字段的内容一个都没能匹配上whitelist数组里内容;
change:在相同query_key条件下,compare_key字段的内容,在 timeframe范围内 发送变化;
frequency:在相同 query_key条件下,timeframe 范围内有num_events个被过滤出 来的异常;
spike:在相同query_key条件下,前后两个timeframe范围内数据量相差比例超过spike_height。其中可以通过spike_type设置具体涨跌方向是up,down,both 。还可以通过threshold_ref设置要求上一个周期数据量的下限,threshold_cur设置要求当前周期数据量的下限,如果数据量不到下限,也不触发;
flatline:timeframe 范围内,数据量小于threshold 阈值;
new_term:fields字段新出现之前terms_window_size(默认30天)范围内最多的terms_size (默认50)个结果以外的数据;
cardinality:在相同 query_key条件下,timeframe范围内cardinality_field的值超过 max_cardinality 或者低于min_cardinality