阅读 248

Elasticsearch 之 elastalert监控告警通知

一、配置规则

规则类型

  • 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监控规则

es_host: 10.3.153.200        #elasticsearch 主机es_port: 9200                     #主机监听端口name: frequency test rule     #规则名,同时也是邮件的标题type: frequency                     #规则才用的规则index: logstash-nginx-*        #检查那个索引信息的内容num_events: 1                     #在timeframe时间内,出现了多少次,才发送告警timeframe:
  minutes: 1                          #统计1分钟内的数据#以下为过滤匹配的规则,关于具体的查询匹配方法,基本于本博客上的elasticsearch 查询方法文章一致。filter:                      - query_string:
    query: "status: >=500"      #status大于500以上#邮件连接的信息smtp_host: smtp.163.comsmtp_port: 465smtp_ssl: Truesmtp_auth_file: /usr/local/elastalert/smtp_auth_file.yaml    #密码信息#回复那个邮箱email_reply_to: ibm.chick@163.com#用那个邮箱帐号发送from_addr: ibm.chick@163.comalert:- "email"email:- "ibm.chick@163.com"     #要接受该邮件的人员

3、创建smtp_auth_file.yaml文件

[root@k8s-slave1 ~]# cat /usr/local/elastalert/smtp_auth_file.yaml #邮箱用户名user: ibm.chick@163.com##不是邮箱密码,是设置的SMTP密码password: xxxxxx

三、启用该规则

1、启用规则
Elasticsearch 之 elastalert监控告警通知
备注:当前为展示效果,启动方式--verbose模式,正常情况下应为后台启动,同时可以对整个rules文件夹的所有规则进行统一加载。

elastalert --config /usr/local/elastalert/config.yaml --rule /usr/local/elastalert/example_rules/test.yaml &

2、使用代码往该索引插入数据(制造错误信息)
Elasticsearch 之 elastalert监控告警通知

3、发现匹配信息
Elasticsearch 之 elastalert监控告警通知

备注:我们在排查的过程中,可以使用debug模式启动,可获取的日志信息更多,如下:
Elasticsearch 之 elastalert监控告警通知

4、查看邮件内容
Elasticsearch 之 elastalert监控告警通知

四、使用技巧与排错方法

1、在用python插入数据时,需使用@timestamp字段,此字段数据,是通过--debug模式的检查时间,复制到程序上,并多加1分钟内进行插入数据(后期用上logstash后不需要使用)
2、字段过滤filter,可参考elasticsearch 条件查询文档方法,同时要注意索引下的字段类型,究竟是数字还是字符,可以通过mapping映射查询。
3、在测试验证环节上,可以通过debug模式运行规则,可便于整个过程的排查调试。
4、关于elastalert运行情况与日志信息,可以在elasticsearch上进行查看。
Elasticsearch 之 elastalert监控告警通知

©著作权归作者所有:来自51CTO博客作者wx592bc92b285c7的原创作品,如需转载,请注明出处,否则将追究法律责任


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐