Elastalert 报警规则

  • name:名称,每个rule需要有自己独立的name,一旦重复,进程将无法启动。

  • type:规则匹配类型,选择某一种数据验证方式,下文会详解。

  • index:ES索引,从某类索引里读取数据,目前已经支持Ymd格式,需要先设置 use_strftime_index:true,然后匹配索引,配置形如:index: logstash-es-test%Y.%m.%d,表示匹配logstash-es-test名称开头,以年月日作为索引后缀的index。

  • filter:基于ES的条件筛选,设置向ES请求的过滤条件。

  • timeframe:时间段选择,累积触发报警的时长。

  • alert:配置,设置触发报警时执行哪些报警手段。不同的type还有自己独特的配置选项,下文中会有提及。

规则type详解:

  • 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

  • Percentage Match: 在buffer_time 中匹配所设置的字段的百分比高于或低于阈值时,此规则将匹配。默认情况下为全局的buffer_time。