1. 环境准备
- Python 3.9
- pip 21.1.2
- CentOS 7.x: python3-pip python36 python3-devel python3-libs python3-setuptools libffi-devel openssl-devel
(以上是官网要求的环境,官网地址:https://elastalert2.readthedocs.io/en/latest/ )
查看版本:
由于centos7自带python2.7.5 所以我这里替换了软连接
2. 开始安装
#clone 项目地址git clone https://github.com/jertel/elastalert2.git#安装模块pip install "setuptools>=11.3"python setup.py install#es版本5+执行的命令pip install "elasticsearch>=5.0.0"
执行的时候你可能会遇到一些报错,无非就是缺少相关依赖,google or baidu 一下 很快就能解决。
3. 配置文件详解
elastalert 主要有两个重要的配置文件:全局配置和告警规则配置
全局配置文件:
cp config.yaml.example config.yaml
vim config.yaml
# 告警规则的文件夹路径
rules_folder: example_rules
# 每1分钟检测一次
run_every:
minutes: 1
# 拉取15分钟的日志
buffer_time:
minutes: 15
# 这里是es的地址和端口,以及账号密码的配置(如果有)
es_host: 127.0.0.1
es_port: 9200
es_username: elastic
es_password: changeme
# elastalert索引的名称
writeback_index: elastalert_status
# 失败重试的时间限制
alert_time_limit:
days: 2
告警规则配置:
vim ./example_rules/example_frequency.yaml
# Elasticsearch host
es_host: 127.0.0.1
# Elasticsearch port
es_port: 9200
# (Optional) basic-auth username and password for Elasticsearch
es_username: elastic
es_password: changeme
# 规则名称
name: Example frequency rule
# 告警规则类型,官方提供了多种告警类型详情参考:
# https://elastalert2.readthedocs.io/en/latest/ruletypes.html#rule-types
type: frequency
# 指定es索引
index: nginx-*
# 超过5次
num_events: 5
# 5分钟内
timeframe:
minutes: 5
# 过滤规则,详情参考官网地址:
# https://elastalert2.readthedocs.io/en/latest/recipes/writing_filters.html
filter:
- query:
query_string:
query: "message: GET"
# 发送告警的邮箱配置
smtp_host: smtp.163.com
smtp_port: 25
#存放邮箱账号密码的文件,密码为三方登录密码
smtp_auth_file: /home/elk-filebeat-kafka/docker-elk-master/elastalert2/smtp_auth.yaml
email_reply_to: 182****6991@163.com
from_addr: 182****6991@163.com
alert:
- "email"
email:
- "182****6991@163.com"
4. 开始使用
# 创建elastalert的es索引
elastalert-create-index
# 执行命令
python -m elastalert.elastalert --verbose --rule example_frequency.yaml
我们的例子中的规则是5分钟内索引为nginx-*日志,出现5次以上message包含GET字段就触发告警,
如图为邮件收到的告警信息:
