ELK告警设置-Elastaler2

发布时间 2023-04-28 14:18:01作者: 自行车骑手

一、环境说明

机器:172.26.8.146
系统:Centos7.9
ELK:7.6版本

 

二、部署安装

2.1  镜像下载
文档:https://elastalert2.readthedocs.io/en/latest/index.html

docker pull jertel/elastalert2

 

2.2 配置文件配置

可参考 https://github.com/jertel/elastalert2       目录中的examples/config.yaml.example

mkdir -p /opt/elastalert2/{data,rules}

vim /opt/elastalert2/elastalert.yaml

es_host: 172.26.8.146
es_port: 9210
rules_folder: rules
run_every:
  minutes: 5
buffer_time:
  minutes: 10
#es_username: elastic 
#es_password: password
writeback_index: elastalert_status
alert_time_limit:
  days: 2

 

 2.3 启动

# elastalert2
docker run -d  --name elastalert2 \
--restart=always --cpus=2 -m 1g \
-e TZ=Asia/Shanghai \
-v /opt/elastalert2/data:/opt/elastalert/data \
-v /opt/elastalert2/elastalert.yaml:/opt/elastalert/config.yaml \
-v /opt/elastalert2/rules:/opt/elastalert/rules \
jertel/elastalert2

启动完后会自动创建告警索引

 三、Rule规则配置

提前准备好一个发告警的邮箱。
当message日志文件出现 Out of memory,table full,oom 时,通过邮件方式发送给 "test@qq.com"。
创建规则,在配置文件中,有一个参数是rules_folder,该参数指定了规则文件存放的位置,根据配置文件,需要把规则文件放到该目录下,在rules目录下,新创建一个system_message.yaml文件,并写入如下内容:

es_host: 172.26.8.146
es_port: 9210
#es_username: elastic
#es_password: password


name: 服务器messages日志告警
use_strftine_index: true
type: frequency

#监控索引
index: prod_messages* 

# 此参数特定于频率类型,是触发警报时的阈值
num_events: 1

#(组合在一起的意思是:在10分钟内有一次触发报警的事件就会触发报警)
timeframe:
  #hours: 1
  minutes: 10

#  词组要在\"  \"里面,否则只要匹配到其中一个单词则触发报警

filter:
- query_string: 
    query: "message: failed OR 
            message: \"Out of memory\" \"table full\" \"oom\"
           " 

alert:
    - "email"

email:
    - "test@qq.com"
#邮箱设置    
smtp_host: smtp.126.com
smtp_port: 465
smtp_ssl: true
smtp_auth_file: /opt/elastalert/data/email_auth.yaml
from_addr: test@126.com

## 自定邮件格式
alert_subject: "{0} message告警"
#
alert_subject_args:
  - host

alert_text_type: alert_text_only
#
alert_text: " 
  主机ip: {} \n
  message: {} \n
  发生时间UTC: {} \n
  id: {} \n
  index: {} \n
  num_hits: {} \n
  num_matches: {}
"
alert_text_args:
    - host
    - message
    - "@timestamp"
    - _id
    - _index
    - num_hits
    - num_matches


smtp_auth_file:该参数指定了邮箱登录的认证文件
vim /opt/elastalert/data/email_auth.yaml
user: "test@126.com"
passowrd: "password"


 四、测试效果

 echo "`date +%b" "%d" "%T` oom" >> /var/log/message
 静等几分钟,查看test@qq.com 是否收到告警邮件