Zabbix是一个强大的监控系统,但真正的目的是可以在出现故障时能及时的通知我们,所以配置报警功能就会非常重要。报警的方式有邮件、企业微信、钉钉、短信等,使用较多的还是邮件报警。这节针对邮件报警进行配置。使用mutt调用msmtp客户端进行邮件报警。
1. 安装msmtp客户端
(1) 下载msmtp客户端
wget https://marlam.de/msmtp/releases/msmtp-1.6.8.tar.xz
(2) 解压msmtp软件
tar -xvJf msmtp-1.6.8.tar.xz
(3) 进入解压的软件包
cd msmtp-1.6.8
(4) configure安装
./configure --prefix=/usr/local/msmtp
make && make install
(5) 新建一个etc目录
mkdir /usr/local/msmtp/etc
(6) 新建一个配置文件
touch /usr/local/msmtp/etc/msmtprc
(7) 在/usr/local/msmtp/etc/msmtprc中写入如下内容,将
defaults
account <邮件显示名称,例如Zabbix报警>
host <邮件服务器地址>
domain <域名地址,例如:qq.com>
from <发件人地址>
auth login
user <邮箱登陆账号>
password <邮箱登陆密码>
account default:<邮件显示名称,同上>
logfile /var/log/maillog
保存退出
2. 使用mutt调用msmtp发送邮件
mutt默认会安装,如果没有安装请使用 yum -y install mutt.x86_64 来进行安装
(1) 修改mutt的配置文件/etc/Muttrc,一定要注意这里的Muttrc首字母是大写的M
set from="发件人的邮件地址" # 发送邮件地址
set sendmail="/usr/local/msmtp/bin/msmtp" # msmtp运行程序的目录
set use_from=yes # 开启发送消息时生成From:标题字段
set realname="Zabbix告警" # 默认显示发件人名称
set editor="vi" #设置默认使用哪种编辑器
保存退出
(2) 测试一下mutt是否有效,格式:echo "邮件内容" | mutt -s "主题" 收件人邮箱地址
echo "测试测试" | mutt -s "测试邮件" [email protected]
3. 创建邮件报警脚本
(1) 进入Zabbix源码安装默认脚本存放路径,脚本文件必须放在这个位置,Zabbix才找的到。若是RPM包可查看/etc/zabbix/zabbix_server.conf配置文件,RPM默认脚本存放路径为/usr/lib/zabbix/alertscripts
cd /usr/local/zabbix/share/zabbix/alertscripts
(2) 新建vim email.sh报警脚本并添加以下内容
#!/bin/bash
echo "$3" | mutt -s "$2" $1 # $3表示邮件内容、$2表示邮件标题、$1表示收件人
(3) 将脚本文件加入执行权限,并更改属主和属组
chmod a+x email.sh
chown zabbix:zabbix email.sh
(4) 修改msmtprc的默认权限
chmod 600 /usr/local/msmtp/etc/msmtprc
chown zabbix:zabbix msmtprc
4. 设置Zabbix邮件报警
(1) 创建Meida types
Administration ——> Meida types ——> Create media type
这里选择创建一个新的报警类型,Zabbix自带的类型我们不去管它或者选择禁用也都是可以的
在Media types选项卡中有两个地方需要注意。
第一个是Type(类型),因为是调用脚本来发送邮件,所有类型这里我们要选择Script(脚本)
第二个是参数,对应位置按顺序填写三个脚本参数:
{ALERT.SENDTO} 代表收件人地址
{ALERT.SUBJECT} 代表邮件主题
{ALERT.MESSAGE} 代表邮件内容
(2) 创建Actions
Configuration ——> Actions ——> Create actions
选择新建一个动作
操作细节部分,如果是发送单个用户可以在<发送到用户>处添加用户。若是多个用户,建议使用<发送到用户群组>。<仅送到>这里选择之前创建的脚本报警类型
注意注意,最后千万不要忘记点击更新,不然是不会保存的
报警内容分为告警内容和恢复内容,可参考文章的最后给出的示例。
(3) 配置Users
Adimistration ——> Users ——> 选择需要收信的用户
最后,进入要接收邮件的用户设置中,可配置报警的类型、接收报警的邮件地址、什么时间端接收报警邮件、接收那种级别的报警邮件
至此,Zabbix配置邮件报警任务完成,报警的邮件内容可参考下面格式
告警主题:
[{TRIGGER.SEVERITY}]服务器:{HOSTNAME1}发生:{TRIGGER.NAME}故障!
告警内容:
地址:{HOST.IP}
告警主机: {HOSTNAME1}
主机分组: {TRIGGER.HOSTGROUP.NAME}
告警时间: {EVENT.DATE} {EVENT.TIME}
告警等级: {TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目: {TRIGGER.KEY1}
问题详情: {ITEM.NAME}:{ITEM.VALUE}
当前状态: {TRIGGER.STATUS}
事件ID: {EVENT.ID}
恢复主题:
[{TRIGGER.SEVERITY}]服务器:{HOSTNAME1}{TRIGGER.NAME}已恢复!
恢复内容:
告警主机: {HOSTNAME1}
主机分组: {TRIGGER.HOSTGROUP.NAME}
告警时间: {EVENT.DATE} {EVENT.TIME}
告警等级: {TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目: {TRIGGER.KEY1}
问题详情: {ITEM.NAME}:{ITEM.VALUE}
当前状态: {TRIGGER.STATUS}
事件ID: {EVENT.ID}