ELK日志监控告警 elastalert 部署及配置

环境

centos7.6
ELK:日志收集框架,elastalert 从其中的es查询告警。
python3.6:或以上,一般系统都自带了

安装elastalert

下载

git clone https://github.com/Yelp/elastalert.git

安装

cd elastalert/
pip install -r requirements.txt
python setup.py install -i https://pypi.tuna.tsinghua.edu.cn/simple
ln -s /usr/local/python3/bin/elastalert* /usr/bin

-i https://pypi.tuna.tsinghua.edu.cn/simple指定源,加快下载速度。如果出现超时,重试即可

安装完成后,会看到四个命令:

  • elastalert:主执行程序
  • elastalert-create-index:创建一个索引,elastalert会把执行记录放到这个索引中,默认情况下,索引名为elastalert_status.
  • elastalert-rule-from-kibana:从Kibana3已保存的仪表盘中读取Filtering设置,帮助生成config.yaml里的配置。不过注意,它只会读取filtering,不包括queries
  • elastalert-test-rule:测试自定义配置中的rule设置。

配置elastalert

主配置文件config.yml

# 用来加载rule的目录,默认是example_rules
rules_folder: rules
# 用来设置定时向elasticsearch发送请求,也就是告警执行的频率
run_every:
  seconds: 30
# 用来设置请求里时间字段的范围
buffer_time:
  seconds: 30
# elasticsearch的host地址,端口
es_host: 192.168.1.89
es_port: 9200
# elastalert产生的日志在elasticsearch中的创建的索引
writeback_index: elastalert_status
writeback_alias: elastalert_alerts
# 失败重试的时间限制
alert_time_limit:
  days: 2

创建索引

elastalert-create-index

在ELK中查看索引

curl 192.168.1.89:9200/_cat/indices?v

创建告警规则

es_host: 192.168.1.100
es_port: 9200
name: warning rule
type: frequency
index: filebeat-* #我这里是filebeat直接保存日志到es
num_events: 5
timeframe:
  minutes: 10
filter:
- query:
    query_string:
      query: "message: WARN OR ERROR" #查询warn和error日志
smtp_host: smtp.exmail.qq.com
smtp_port: 25
smtp_auth_file: /data/elastalert/example_rules/smtp_auth_file.yaml
from_addr: xxx@xx.com
alert:
- "email"
email:
- "dev@dev.com" #接收告警邮件的邮箱

smtp_auth_file.yaml

user: "*****@**********.com"
password: "********"

测试规则配置

通过下面的命令测试配置是否正确

elastalert-test-rule --config ../config.yaml my_rule.yaml

启动

前台启动

elastalert --verbose --config config.yaml --rule example_rules/my_rule.yaml

系统服务启动

[root@docker-server system]# cat /usr/lib/systemd/system/elastalertd.service
[Unit]
Description=elastalertd
[Service]
Type=simple
User=root
Group=root
Restart=on-failure
WorkingDirectory=/data/elastalert
ExecStart=/usr/bin/elastalert --configconfig.yaml --rule rules/my_rule.yaml
[Install]
WantedBy=multi-user.target

systemctl restart elastalertd.service

systemctl stop elastalertd.service

systemctl daemon-reload


版权声明:本文为xgw1010原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。