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}