ELK服务器设置

安装邮件发送工具mailx

yum install -y mailx

修改 Elasticsearch 配置文件

vim /etc/elasticsearch/elasticsearch.yml

给 Elasticsearch 添加邮箱配置,在最后面加上以下配置

xpack.notification.email.account:
work:
profile: standard # 采用默认的邮件模板
email_defaults: # 设置默认发件箱
from: monster@sz-ysxd.com # 发件箱
smtp:
auth: true # 开启账号验证
starttls.enable: false # 关闭ssl
starttls.required: false # 不要ssl
host: smtp.exmail.qq.com # 腾讯企业邮箱smtp地址
port: 25 # 端口
user: monster@sz-ysxd.com # 发件箱

保存后设置发件箱的密码,执行下面命令设置

/usr/share/elasticsearch/bin/elasticsearch-keystore add xpack.notification.email.account.work.smtp.secure_password

​提示后输入你的密码

注意这里不是邮箱的登陆密码,在企业邮箱的设置-邮箱绑定-生成新密码,生成一个新密码直接粘贴过来即可(不嫌麻烦的自己手打)普通QQ邮箱就是那个设置里面开启POP3/​​SMTP​​服务生成的授权码​

ELK之Watcher邮件告警_elasticsearch

重启 Elasticsearch 服务

systemctl restart elasticsearch

Kibana页面设置

回到 Kibana - 管理 - Watcher - 创建高级监视

ELK之Watcher邮件告警_Elastic_02

注意 ID 只能英文、横杠、下划线且唯一,名称随便取

ELK之Watcher邮件告警_elasticsearch_03

监视JSON配置在下面 这里我是模拟一分钟内172.16.10.126这台电脑访问Nginx就发送邮件告警

“interval”: “1m” :一分钟执行一次

“indices”: [ “*” ] :查询所有的引擎

“message”: “172.16.10.126 ” :message里面匹配到172.16.10.126信息的

“gte”: “now-1m”,“lte”: “now” :时间从现在到过去1分钟时间内

“gte”: 1 :只要查询到1条或大于1条信息就执行

“to” : 接受告警的邮箱,支持同事发送给多个邮箱,逗号隔离即可

“subject” :邮件标题

“body” : 邮件内容

{
"trigger": {
"schedule": {
"interval": "1m"
}
},
"input": {
"search": {
"request": {
"search_type": "query_then_fetch",
"indices": [
"*"
],
"types": [],
"body": {
"size": 0,
"query": {
"bool": {
"must": [
{
"match": {
"message": "192.168.159.236"
}
},
{
"range": {
"@timestamp": {
"gte": "now-1m",
"lte": "now"
}
}
}
]
}
}
}
}
}
},
"condition": {
"compare": {
"ctx.payload.hits.total": {
"gte": 1
}
}
},
"actions": {
"send_email": {
"email": {
"profile": "standard",
"to": [
"monster@sz-ysxd.com"
],
"subject": "邮件告警测试",
"body": {
"html": "警告:一分钟内192.168.159.236在访问nginx!!!"
}
}
}
}
}

创建成功

ELK之Watcher邮件告警_企业邮箱_04

测试告警

​我们通过IP地址为172.16.10.126这台电脑去访问Nginx

访问后我们需要等待一分钟,你想快点可以在上面的配置里面把1m改成1s​