docker安装elastalert插件进行ElasticSearch邮件告警
一、环境介绍
ELK版本:7.7.1
elastalert版本:3.0.0-beta.1
注意:github上面要求安装环境python版本为3.6,但是用docker安装不受此限制,可直接安装
二、安装步骤
1、从git上下载项目并进入目录:
git clone https://github.com/bitsensor/elastalert.git; cd elastalert;
2、修改config目录下的配置文件:将其中的es的ip和端口进行修改,如果做了权限控制还需要修改es集群的用户名和密码
3、回到elastalert目录,然后docker启动elastalert,并将配置文件挂载出来
docker run -d -p 3030:3030 \ -v `pwd`/config/elastalert.yaml:/opt/elastalert/config.yaml \ -v `pwd`/config/config.json:/opt/elastalert-server/config/config.json \ -v `pwd`/rules:/opt/elastalert/rules \ -v `pwd`/rule_templates:/opt/elastalert/rule_templates \ --net="host" \ --name elastalert bitsensor/elastalert:3.0.0-beta.1
注意:最后一行的elastalert版本不要写latest,不然会报错。latest是2.4版本,es查询出来的结构不一致会报错,如果你用latest安装失败后注意要去ES上删除创建的关于elastalert的索引,不然也会报错
4、邮件告警规则配置(test-rule.yaml),文件放在rules目录下
es_host: 192.168.*.* es_port: 9200 name: my-rule type: frequency index: guangzhou-mtex-nop num_events: 5 timeframe: hours: 24 filter: - query: query_string: query: "ERROR" alert: - "email" email: - "shouJianRen@mastercom.cn" smtp_host: smtp.yeah.net smtp_port: 25 smtp_auth_file: /opt/elastalert/rule_templates/email_auth.yaml from_addr: faJianRen@yeah.net
注意:这里配置的时间hours范围只有24小时,配置更大的hours不会生效,我之前以为配置2400小时就是100天,结果一直Hits为0;天粒度就用days: 10
5、邮箱发件人账户配置:由于在rule中配置了email_auth.yaml的路径,而在启动docker时对/opt/elastalert/rule_templates目录进行了映射,因此在本地的/rule_templates目录下添加email_auth.yaml文件,并添加内容:
6、重启docker容器就可以去查看邮箱是否收到邮件啦
docker restart elastalert