邮件告警(脚本)
流程:
配置邮件系统(发件人)>>>创建报警媒介>>>为用户账号添加收件人信息>>>针对触发器警示程度而创建发送邮件的"动作"
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) 编辑 收藏 举报