邮件告警(脚本)

 

流程:
配置邮件系统(发件人)>>>创建报警媒介>>>为用户账号添加收件人信息>>>针对触发器警示程度而创建发送邮件的"动作"

 

1.安装邮件系统相关软件。

apt -y  install mutt msmtp

2.在 / 下创建 .msmtprc 配置文件以配置发件人信息。

vim .msmtprc
account default
host smtp.qq.com          #QQ邮件的smtp服务器,不同的邮件用不同的smtp服务器
from 1251618589@qq.com    #发件人QQ邮箱
auth plain
user 1251618589@qq.com    #自定义用户名
password tcnusqdqpmcqbahc #SMTP授权码
logfile ~/.msmtp.log      #手动创建msmtp邮件系统日志,与msmtprc处于同一目录下。

3. .msmtprc因为含有授权码因此权限要进行限制防止泄露,配置完后创建日志文件。

chmod 600 /var/lib/zabbix/.msmtprc

 touch .msmtp.log

 4.添加 vim /etc/Muttrc 配置文件。

vim /etc/Muttrc
#文件最后添加下面行

set sendmail="/usr/bin/msmtp"
set use_from=yes
set realname="1251618589"
set from=1251618589@qq.com     #发件人邮箱
set envelope_from=yes

5.编写邮件脚本,通过zabbix内置变量传参给脚本的变量进行赋值,从而实现有 目的 标题 信息 的邮件发送。PS:编写完勿忘对脚本添加X权限

vim /usr/lib/zabbix/alertscripts/mail.sh   #AlertScriptsPath    #zabbix-server配置文件中标注存放脚本的路径

 chmod +x /usr/lib/zabbix/alertscripts/mail.sh 

#!/bin/bash


SENDTO=$1    #发件方
SUBJECT=$2   #标题
MESSAGE=$3   #邮件信息


echo "$MESSAGE" | mutt -s "$SUBJECT" $SENDTO   #就是一个普通的发邮件命令只不过是zabbix定义的内容对变量进行参数传递。(客户端使用mutt)

6.创建报警媒介
1)
脚本参数:这三个zabbix的内置变量与mail脚本中的变量一一对应(发送方 标题 邮件信息),而这些变量的值由发送信息的“动作”生成。

{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

 2)测试配置的邮件系统是否能够发送邮件。

7.为用户添加"报警媒介"以及能够接收该"报警媒介"信息的账号(收件人)。注意:如果某个用户账号只接受相对重要的信息那么"严重性"需要响应调高。

 

 

 

8.根据触发器的报警程度创建"动作"以及发送消息的“操作”
1)动作
友情建议:触发器触发后再触发“动作”的条件如图所示,否则你会被后面定义的操作(发送邮件信息)给吵得睡不着觉。

2)定义发送报警邮件"操作"
"操作"中的 用户(收件人)、主题、消息 三个模块得参数会传到之前所定义“报警媒介”中三个变量,再传入邮件脚本中进行邮件发送。

主题:
故障:{TRIGGER.STATUS} 服务器:{HOSTNAME1} 事件:{TRIGGER.NAME}故障!

消息:
告警主机:{HOSTNAME1} 
告警时间:{EVENT.DATE} {EVENT.TIME} 
告警等级:{TRIGGER.SEVERITY} 
告警信息:{TRIGGER.NAME} 
告警项目:{TRIGGER.KEY1} 
问题详情:{ITEM.NAME}:{ITEM.VALUE} 
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1} 
事件ID:{EVENT.ID}

3)恢复“操作”

主题:
恢复:{TRIGGER.STATUS} 服务器:{HOSTNAME1} 事件:{TRIGGER.NAME}已恢复!

消息:
告警主机:{HOSTNAME1} 
告警时间:{EVENT.DATE} {EVENT.TIME} 
故障持续时间:{EVENT.AGE} 
恢复时间:{EVENT.RECOVERY.TIME} 
告警等级:{TRIGGER.SEVERITY} 
告警信息:{TRIGGER.NAME} 
告警项目:{TRIGGER.KEY1} 
问题详情:{ITEM.NAME}:{ITEM.VALUE} 
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1} 
事件ID:{EVENT.ID}

 

 

 

测试:
关闭与启动Nginx(事先已定义好Nginx的状态监控项、触发器)查看邮件信息。

systemctl stop nginx.service

 

systemctl start nginx.service

 

最终测试结果:
报警邮件:

 

 

 恢复邮件:

 

 总结:
1)创建发送邮件"操作"时,用户需事先添加能够接收该"报警媒介"邮件的收件人信息。
2)邮件报警的实现逻辑:通过监控项数据定义触发器的触发条件、再根据触发器的"警示度"创建发送邮件的"操作"。

posted on 2021-08-25 22:19  1251618589  阅读(9)  评论(0编辑  收藏  举报

导航