一、配置规则
规则类型
- 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。
二、frequency类型演示
1、复制frequency模板信息
[root@k8s-slave1 example_rules]# cd /usr/local/elastalert/example_rules/
[root@k8s-slave1 example_rules]# cp example_frequency.yaml test.yaml
2、修改test.yaml监控规则
[root@k8s-slave1 example_rules]# cat test.yaml | grep -v ^# | grep -v ^$
es_host: 10.3.153.200
es_port: 9200
name: frequency test rule
type: frequency
index: logstash-nginx-*
num_events: 1
timeframe:
minutes: 4
filter:
- query_string:
query: "status: >=500"
smtp_host: smtp.163.com
smtp_port: 465
smtp_auth_file: /usr/local/elastalert/smtp_auth_file.yaml
email_reply_to: [email protected]
from_addr: [email protected]
alert:
- "email"
email:
- "[email protected]"
3、创建smtp_auth_file.yaml文件
[root@k8s-slave1 ~]# cat /usr/local/elastalert/smtp_auth_file.yaml
#邮箱用户名
user: [email protected]
##不是邮箱密码,是设置的SMTP密码
password: xxxxxx
三、启用该规则
1、启用规则
备注:当前为展示效果,启动方式--verbose模式,正常情况下应为后台启动,同时可以对整个rules文件夹的所有规则进行统一加载。
elastalert --config /usr/local/elastalert/config.yaml --rule /usr/local/elastalert/example_rules/test.yaml &
2、使用代码往该索引插入数据(制造错误信息)
3、发现匹配信息
备注:我们在排查的过程中,可以使用debug模式启动,可获取的日志信息更多,如下:
4、查看邮件内容