本次zabbix邮件报警时通过sendEmail这一个轻量级的命令行的smtp电子邮件客户端,使用脚本的方式实现邮件报警。

此次使用的Linux发行版是CentOS 6.5,zabbix版本为3.0.3

Zabbix监控之不发送邮件异常【附属】

一、下载sendEmail

wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz

sendEmail安装方法:

1

2

3

shell# tar xvzf sendEmail-v1.56.tar.gz

shell# cp sendEmail-v1.56/sendEmail /usr/local/bin/

shell# chmod 755 /usr/local/bin/sendEmail

二、zabbix服务器端发送邮件脚本

假如zabbix 配置目录位置在/etc/zabbix/

1.创建/etc/zabbix/alertscripts目录

shell# mkdir -p /etc/zabbix/alertscripts

shell# chown -R zabbix:zabbix /etc/zabbix/alertscripts

2.修改邮件脚本配置目录/etc/zabbix/zabbix_server.conf

AlertScriptsPath=/etc/zabbix/alertscripts

修改后重启zabbix server。

三、 创建发送邮件脚本

#!/bin/bash
# 脚本的日志文件
LOGFILE="/tmp/Email.log"
:>"$LOGFILE"
exec 1>"$LOGFILE"
exec 2>&1

SMTP_server='smtp.163.com'    # SMTP服务器,变量值需要自行修改
username='xxx@163.com'     # 用户名,变量值需要自行修改
password='xxxxxx'             # 密码,变量值需要自行修改
from_email_address='xxx@163.com' # 发件人Email地址,变量值需要自行修改
to_email_address="$1"               # 收件人Email地址,zabbix传入的第一个参数
message_subject_utf8="$2"           # 邮件标题,zabbix传入的第二个参数
message_body_utf8="$3"              # 邮件内容,zabbix传入的第三个参数

# 转换邮件标题为GB2312,解决邮件标题含有中文,收到邮件显示乱码的问题。
message_subject_gb2312=`iconv -t GB2312 -f UTF-8 << EOF
$message_subject_utf8
EOF`
[ $? -eq 0 ] && message_subject="$message_subject_gb2312" || message_subject="$message_subject_utf8"

# 转换邮件内容为GB2312,解决收到邮件内容乱码
message_body_gb2312=`iconv -t GB2312 -f UTF-8 << EOF
$message_body_utf8
EOF`
[ $? -eq 0 ] && message_body="$message_body_gb2312" || message_body="$message_body_utf8"

# 发送邮件
sendEmail='/usr/local/bin/sendEmail'
set -x
$sendEmail -s "$SMTP_server" -xu "$username" -xp "$password" -f "$from_email_address" -t "$to_email_address" -u "$messag
e_subject" -m "$message_body" -o message-content-type=text -o message-charset=gb2312
shell# touch /tmp/Email.log
shell# chown zabbix:zabbix /tmp/Email.log
shell# chown zabbix:zabbix /etc/zabbix/alertscripts/SendEmail.sh
shell# chmod +x /etc/zabbix/alertscripts/SendEmail.sh
=================================================================
shell# touch /tmp/Email.log
shell# chown zabbix:zabbix /tmp/Email.log
shell# chown zabbix:zabbix /etc/zabbix/alertscripts/SendEmail.sh
shell# chmod +x /etc/zabbix/alertscripts/SendEmail.sh

测试发送邮件

shell# /etc/zabbix/alertscripts/SendEmail.sh xxxxxx@qq.com "测试邮件标题" "测试邮件内容 。

四、WEB页面报警配置

点击管理->报警媒介类型 点击最右边的创建媒体类型

wKioL1i45xrwN2jAAABUmn2UxfM547.png-wh_50

注:安装zabbix 3.0之后,需要填写这3个参数,2.x不需要

ALERT注意别写错

点击Admin用户,添加报警媒介

wKiom1i45y2zres5AAAtDj9Nppg896.png-wh_50


选择sendEmail.sh脚本,输入收件人的邮箱地址

wKioL1i45zeALJIvAAAz9_-VMo4019.png-wh_50


点击用户群组,点击zabbix administrator后面的调用模式,点击一下,就启用了

wKiom1i45z_Qw_75AABdc-2b858379.png-wh_50


点击Zabbix用户群组->权限,全部选择添加

wKiom1i450nCURbvAACwT6K7F4U152.png-wh_50



点击配置->动作 点击默认的动作

wKioL1i451izIUZLAABEAfJtUZE830.png-wh_50


点击配置->动作->动作 设置邮件发送格式

wKioL1i452Cz1QPoAADHOScmdQY007.png-wh_50


默认接收人:故障{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}

恢复信息:打钩

恢复主旨:恢复{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}

已启用:打钩



wKioL1i452yR7fnYAAMZLhykRUM183.png-wh_50

注:默认的步骤是1-1,也即是从1开始到1结束。一旦故障发生,就是执行sendEmail.sh脚本发生报警邮件给Admin用户   和zabbix administrator组。

  假如故障持续了1个小时,它也只发送一次。如果改成1-0,0是表示不限制.无限发送

  间隔就是默认持续时间60秒。那么一个小时,就会发送60封邮件。


测试邮件报警

随便添加一台不存在的主机,几分钟后显示红色状态


wKiom1i453uCvyuvAAB0hiQcoVE061.png-wh_50

再过几分钟后,收到了邮件,说明设置成功

wKioL1eYEp-BeWONAABnOmF0jl0188.png

wKioL1i4552gHQjGAABnPO5IaeY943.png-wh_50