个人环境

(1)Centos 7.4
(2)zabbix
(3)LNMP/LAMP

1.zabbix服务器配置

zabbxi 邮件告警推送有两种方式:
1.使用外部邮箱指定为告警发送邮箱
2.使用zabbix服务端的本地邮箱账号发送,邮件名为:user@hostname.localadmain。其中:
user为发送邮件的用户;
hostname为zabbix-server的主机名,该邮箱只能发送,不能接收外部邮件;

我就采用第一种告警方式:

yum -y install sendmail    //邮件传送代理MTA
yum -y install mailx       //邮件用户代理MUA

标注:实际企业公司中,如果有外部邮箱地址,就不需要上述步骤,直接进行第(2)步操作:

(1)有限授权码的获取

zabbix6如何通过邮件通知告警 zabbix5.0邮箱告警_运维


注:(这里我选择了qq邮箱,当然网易邮箱也行,只要能获取授权码的都行)

(2)配置外部邮箱:vim /etc/mail.rc

[root@anliu ~]# vim /etc/mail.rc
set sendcharset=iso-8859-1,utf-8
set from=*******@qq.com  #注册的个人邮箱,用于zabbix服务端转发邮件到指定邮箱
set smtp=smtp.qq.com     #smtp地址,如果选择网易邮箱,smtp=smtp.163.com
set smtp-auth-user==*******@qq.com  #个人邮箱用户
set smtp-auth-password=******        #邮箱授权码(这里一定是你获取到的授权码,不是你邮箱登录的密码)
set smtp-auth=login
set nss-config-dir=/etc/pki/nssdb
set ssl-verify=ignore #ssl认证方式

(3)测试邮箱发送(查看邮箱是否收到邮件)

[root@anliu ~]# echo "This is a zabbix" |mail -s "zabbix" *******@qq.com

zabbix6如何通过邮件通知告警 zabbix5.0邮箱告警_运维_02


(4)编写邮件发送脚本

[root@zabbix-server ~]# cd /usr/lib/zabbix/alertscripts/ #进入zabbix默认存放脚本路径
[root@zabbix-server alertscripts ]# vim sendmail.sh #编写发送邮件脚本
#!/bin/bash
echo "$3" |mail -s "$2" $1 >> /tmp/sendmail.log 2>&1 #一定要把sendmail.log文件的属主属组改为zabbix
[root@zabbix-server alertscripts]# chown zabbix:zabbix sendmail.sh
[root@zabbix-server alertsctipts ]# chmod 755 sendmail.sh
[root@zabbix-server alertscripts ]# vim /etc/zabbix/zabbix_ server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts

zabbix6如何通过邮件通知告警 zabbix5.0邮箱告警_vim_03

2.zabbix后台web界面配置

(1)创建报警媒介类型 (脚本参数分别对应:收件人地址、主题、详细内容)

zabbix6如何通过邮件通知告警 zabbix5.0邮箱告警_vim_04


(2)管理------>用户------->选择admin用户(自己创建一个也可以)

zabbix6如何通过邮件通知告警 zabbix5.0邮箱告警_vim_05


(3)用户媒介------>添加

zabbix6如何通过邮件通知告警 zabbix5.0邮箱告警_zabbix6如何通过邮件通知告警_06


(4)类型输入刚刚创建的报警媒介类型sendmail脚本 -------> 输入个人邮箱用于接收报警邮件------>启动打勾------> 添加

zabbix6如何通过邮件通知告警 zabbix5.0邮箱告警_zabbix6如何通过邮件通知告警_07


(5)选择更新

zabbix6如何通过邮件通知告警 zabbix5.0邮箱告警_zabbix6如何通过邮件通知告警_08


(6)权限设置(管理员用户不用修改,权限默认所有服务器,如果要分类权限需要在用户组进行控制)

zabbix6如何通过邮件通知告警 zabbix5.0邮箱告警_服务器_09


(7)配置------>动作------>名称自定义------>设置------>条新的触发条件------>启用------>添加。(触发条件需要根据实际情况设置)

触发器类似:is unreachable for 5 minutes

#根据主机触发器Template, App Zabbix Agent: Zabbix agent on {HOST.NAME} is unreachable for 5minutes设置,主要监测zabbix_agentd客户端连接情况。

zabbix6如何通过邮件通知告警 zabbix5.0邮箱告警_linux_10


zabbix6如何通过邮件通知告警 zabbix5.0邮箱告警_运维_11


zabbix6如何通过邮件通知告警 zabbix5.0邮箱告警_zabbix6如何通过邮件通知告警_12


默认接收人:故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!

默认信息:

告警主机IP地址:{HOST.CONN}

告警主机:{HOSTNAME1}

告警时间: {EVENT.DATE}{EVENT.TIME}

告警等级: {TRIGGER.SEVERITY}

告警信息: {TRIGGER.NAME}

告警项目: {TRIGGER.KEY1}

问题详情: {ITEM.NAME}:{ITEM.VALUE}

当前状态: {TRIGGER.STATUS}:{ITEM.VALUE1}

(8)定义恢复操作

zabbix6如何通过邮件通知告警 zabbix5.0邮箱告警_linux_13


zabbix6如何通过邮件通知告警 zabbix5.0邮箱告警_服务器_14


默认接收人:恢复{TRIGGER.STATUS},服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!

恢复信息:

告警主机IP地址: {HOST.CONN}

告警主机: {HOSTNAME1}

告警时间: {EVENT.DATE} {EVENT.TIME}

告警等级: {TRIGGER.SEVERITY}

告警信息: {TRIGGER.NAME}

告警项目: {TRIGGER.KEY1}

问题详情: {ITEM.NAME}:{ITEM.VALUE} .

当前状态: {TRIGGER.STATUS}:{ITEM.VALUE1}

(9)测试

[root@zabbix-server alertscripts]# /etc/init.d/zabbix_agentd stop      #暂停zabbix_ agentd客户端服务。

zabbix6如何通过邮件通知告警 zabbix5.0邮箱告警_linux_15


下载打开文件(tcmime.1409.1409.1805.bin):

zabbix6如何通过邮件通知告警 zabbix5.0邮箱告警_vim_16

因为在操作的过程中,当前状态的变量“ {TRIGGER.STATUS}:{ITEM.VALUE1}”中的{TRIGGER.STATUS}中少了一个“.” ,导致出错,最后显示应该为“PEOBLEM:Up(1)”。不过不影响邮件发送,修改后即可。

[root@zabbix-server alertscripts]# systemctl restart zabbix-agent	 #重启zabbix-agentd

zabbix6如何通过邮件通知告警 zabbix5.0邮箱告警_zabbix6如何通过邮件通知告警_17


下载打开文件(tcmime.1404.1404.1784.bin):

zabbix6如何通过邮件通知告警 zabbix5.0邮箱告警_linux_18