elastalert 基于EFK环境的邮件报警
1.安装elastalert 安装的python必须是2.7以上的版本
安装的路径 /usr/local/src
安装依赖
|
1
|
yum -y install wget openssl openssl-devel gcc gcc-c++ |
下载pytho的安装包 下载在/usr/local/src
|
1
|
wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz |
解压压缩包 检查环境并编译安装
|
1
2
3
4
5
6
7
8
|
解压压缩包tar -zxf Python-3.6.2.tgz进入那个目录cd /usr/local/src/Python-3.6.2检查环境./configure --prefix=/usr/local/python --with-openssl编译安装make && make install |
删除系统自带的python (应为版本太低了)
|
1
|
rm -rf /usr/bin/python |
创建一个环境变量
|
1
2
3
4
5
|
vim /etc/profile在最后一行加入一行命令export export PATH=$PATH:/usr/local/python/binsource /etc/profile |
创建两条软连接
|
1
2
3
4
|
#创建两条软连接ln -s /usr/local/python/bin/python3.6 /usr/bin/pythonln -s /usr/local/python/bin/pip3 /usr/bin/pippip install --upgrade pip //升级pip |
输入python显示Python 3.6.2

退出quit()
vim /usr/bin/yum
vim /usr/libexec/urlgrabber-ext-down

下载elastalert的安装包 下载到得路径是/usr/local/src
|
1
2
3
|
wget https://github.com/Yelp/elastalert/archive/v0.2.1.tar.gztar xf v0.2.1.tar.gzcd elastalert-0.2.1 |
安装 cd elastalert-0.2.1
|
1
2
3
|
pip install "elasticsearch<7,>6"pip install -r requirements.txt python setup.py install |
|
1
|
ll /usr/local/python/bin/elastalert* 可以看到生成的几个命令 |

安装之后会自带三个命令
-
elastalert-create-index:ElastAlert会把执行记录存放到一个ES 索引中,该命令就是用来 创建这个索引的,默认情况下,索引名叫elastalert_status。其中有4个 _type,都有 自己的@timestamp字段,所以同样也可以用kibana,来查看这个索引的日志记录情况。
-
elastalert-rule-from-kibana:从Kibana3已保存的仪表盘中读取Filtering设置,帮助生成config.yaml里的配置。不过注意,它只会读取filtering,不包括queries。
-
elastalert-test-rule:测试自定义配置中的rule设置
(以下是帮助学委更新的日志)
|
1
|
ln -s /usr/local/python/bin/elastalert* /usr/bin |
以上操作完成后在root目录下输入ela按tab是否能补全在按tab是否能出现以下四个字母

输入elastalert-create-index

只需输入箭头对应的(host对应你的Elasticsearch的主机ip,port对应你的Elasticsearch的端口)
Use SSL? t/f:输入f 其他的一律都是回车 这是创建好的状态
返回到你的kibana浏览器页面出现以下三个代表创建成功(有些许的延迟)

进入elastalert-0.2.1拷贝一个配置文件
|
1
2
3
4
|
[root@kafka01 elastalert-0.2.1]# [root@kafka01 elastalert-0.2.1]# pwd/usr/local/src/elastalert-0.2.1[root@kafka01 elastalert-0.2.1]# cp config.yaml.example config.yaml |
vim config.yaml 进入配置文件注释空格全部干掉(/g^#/d)
|
1
2
3
4
5
6
7
8
9
10
11
|
rules_folder: wg_rules #规则目录,所有的规则放在这个目录下run_every: minutes: 1 #运行频率1分钟buffer_time: minutes: 15 #取值范围,15分钟以内的内容es_host: 10.0.0.73 #es的IP地址es_port: 9200 #es的端口writeback_index: elastalert_status #这是在kibana的里的索引writeback_alias: elastalert_alerts #别名alert_time_limit: days: 2 #运行失败重置的时间是2天 |
在当前目录下mv example_rules wg_rules
进入wg_rules
新建红框两个文件(注意格式)

vim nginx_007.yaml
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
es_host: 10.0.0.73 #es主机IP地址es_port: 9200 #es端口name: nginx rule #规则名字必须是唯一的type: frequency #类型为频率index: webnginx* ## 监控的索引(这里一定注意是你在kibana索引*代表以xxx的结尾)num_events: 5 ## 限定时间内,发生的次数timeframe: hours: 1 ## 一小时内有5个错误日志写进ES的话就发送邮件filter: - regexp: ##以正则的方式匹配, “.*” 就是已有日志写进es就算 message: ".*"alert: #方式(邮件)- "email"email:- "707132357@qq.com"smtp_host: smtp.qq.comsmtp_port: 25smtp_ssl: false#smtp_auth_file: /usr/local/src/elastalert-0.2.1/wg_rules/email_auth.yamlsmtp_auth_file: "email_auth.yaml"from_addr: 707132357@qq.com |
vim email_auth.yaml
|
1
2
|
user: '707132357@qq.com' #qq邮箱地址password: 'wvozyiwhymbhbdei' #此地方写你qq邮箱的授权码 |
启动elastalert
elastalert --config /usr/local/src/elastalert-0.2.1/config.yaml --rule /usr/local/src/elastalert-0.2.1/wg_rules/nginx_007.yaml --verbose
启动后会显示up启动成功
|
1
2
3
|
INFO:elastalert:Starting upINFO:elastalert:Disabled rules are: []INFO:elastalert:Sleeping for 59.999868 seconds |
如果没有命中每分钟会刷新一次
去有nginx机器上ab压测一些日志
显示

代表你创建规则成功匹配

这里表示你的规则成功命中
如果登陆qq右下角提示有新的邮件

打开邮件


浙公网安备 33010602011771号