第一部分:Centos6.8上搭建Python环境
注:ElastAlert是用Python写的
参考网址:https://www.cnblogs.com/hengwei/p/5464678.html
第二部分:安装ElastAlert
1、安装最新发布的ElastAlert版本
pip install elastalert
或者
git clone https://github.com/Yelp/elastalert.git
2、进入到本地代码目录
cd elastalert
3、安装setuptools(根据elasticsearch版本)
pip install "setuptools>=11.3"
4、安装几个依赖
yum-y install glib gcc python-devel libffi-devel openssl-devel
5、安装 elastalert
python setup.py install
6、根据Elasticsearch的版本,需要手动安装正确版本的elasticsearch-py
Elasticsearch 5.0+: pip install"elasticsearch>=5.0.0"
Elasticsearch 2.X: pip install "elasticsearch<3.0.0"
7、Pip install -r requirements.txt (依赖)
第三部分:使用ElastAlert
1、创建索引
elastalert-create-index
可能需要在Python安装目录下执行该命令
2、修改的配置文件
cp config.yaml.example config.yaml
/home/shixf/Elastalert/elastalert/config.yaml
/home/shixf/Elastalert/elastalert/example_rules/my_rule.yaml
config.yaml:
rules_folder: example_rules
# 每隔一分钟查询一次elasticsearch
run_every:
minutes: 1
# 查询时间范围15分钟
buffer_time:
minutes: 15
# Elasticsearch集群IP
es_host: 10.111.9.196
# Elasticsearch集群端口
es_port: 8890
# 上一步创建的索引名称
writeback_index: elastalert_syatus_test
alert_time_limit:
days: 2
my_rule.yaml:
# Elasticsearch集群IP
es_host: 10.111.9.196
# Elasticsearch集群端口
es_port: 8890
#use_ssl: True
#es_username: someusername
#es_password: somepassword
# (Required)
# 是此规则的唯一名称。如果两个规则共享相同的名称,ElastAlert将不会启动。
name: XF_TEST1
# (Required)
# 当给定时间范围内至少有一定数量的事件时,此规则匹配
# 该规则需要两个附加选项:num_events、timeframe
type: frequency
# (Required)
# 要查询的索引的名称
# index: logstash-*
# index: event-security*
index: event-gdj-tsoc*
# 将触发警报的事件数量
# 此参数特定于频率类型,是触发警报时的阈值
num_events: 1
# um_events必须发生的时间
#(组合在一起的意思是:在4个小时内有一次触发报警的事件就会触发报警)
timeframe:
hours: 4
# 过滤器
filter:
- query_string:
query: "2018-06-27"
# 告警方式
alert:
- "email"
# (required, email specific)
#
# 要使用的SMTP主机
smtp_host: smtp.qq.com
# 要使用的端口。默认值是25,587也可以
smtp_port: 587
# 包含SMTP认证凭证的文件的路径。路径可以是绝对的或相对于给定的规则。
# 它应该是YAML格式并包含两个字段,user并且password。如果不存在,则不会尝试进行认证。
smtp_auth_file: smtp_auth_file.yaml
email_reply_to: 发送人的@qq.com
from_addr: 发送人的@qq.com
# 将警报发送到的地址或地址列表
email:
- "接收人的@qq.com"
新建文件smtp_auth_file.yaml
user: "发送人的@qq.com"
password: "byzmrsirxceebeeh"
注意:user填写qq邮箱就可以了,password不是我们qq密码
3、启动测试规则(这步可以省略)
cd /home/shixf/Elastalert/elastalert/example_rules
/usr/local/elastAlert/python2.7/bin/elastalert-test-rule --alert /home/shixf/Elastalert/elastalert/example_rules/my_rule.yaml
4、启动
python -m elastalert.elastalert --config /home/shixf/Elastalert/elastalert/config.yaml --verbose --rule /home/shixf/Elastalert/elastalert/example_rules/my_rule.yaml
第四部分:在Python的虚拟环境中运行ElastAlert
1、Centos6.8上安装virtualenv
virtualenv 是一个创建隔绝的Python环境的工具
参考网址:https://www.cnblogs.com/liuyansheng/p/6141197.html
https://blog.csdn.net/blueheart20/article/details/70598031
1、下载安装virutalenv
pip install virtualenv
我们这是 /usr/local/elastAlert/python2.7/bin/pipinstall virtualenv
2、测试是否安装成功:(这步有时会报错,不过不影响)
virtualenv –h
3、创建python虚拟环境
使用virtualenv命令创建python虚拟环境:virtualenv [虚拟环境名称]。
virtualenv env1
执行后,在本地会生成一个与虚拟环境同名的文件夹。
如果你的系统里安装有不同版本的python,可以使用--python参数指定虚拟环境的python版本:
virtualenv --python=/usr/local/elastAlert/python2.7/bin/python2.7 env1
4、启动虚拟环境
进入虚拟环境目录,启动虚拟环境,如下:
/home/shixf/virtualenv/sxfEnv1 --------------位置
cd env1/
source bin/activate
python -V
此时命令行前面会多出一个括号,括号里为虚拟环境的名称。以后easy_install或者pip安装的所有模块都会安装到该虚拟环境目录里。
5、退出虚拟环境
退出虚拟环境:deactivate
第五部分:在虚拟环境中离线安装ElastAlert插件需要的依赖
离线安装
1、 位置
/home/shixf/virtualenv20180625/env1
2、 安装
Cd /home/shixf/virtualenv20180625/env1
pip install --no-index --find-links=/home/shixf/Elastalert/loadPackage20180625 asn1crypto==0.24.0
注意:需要先把依赖包下载下来因为我们这里之前是在线安装过一次,所以可以直接生成requestments.txt文件,
然后通过该文件把依赖包下载下来。
可以搜索“Python依赖包迁移”和“通过requestments.txt文件离线安装依赖包”了解详情。
本想一次性导入所有的依赖包,但是没有成功,所以这里是一个个导的。