zabbix4.0发送邮件告警

一、安装mailx

mailx是centos下的一种处理邮件的工具。

yum -y install mailx

然后对mail.rc文件进行配置

vim /etc/mail.rc

在配置文件末尾添加如下内容,这里阿里云有坑,先说非阿里云服务器都添加哪些内容

此处smtp-auth-password项不是邮箱密码,而是打开邮箱的pop3/smtp服务后提供的授权码
QQ邮箱的获取方式是登陆QQ邮箱mail.qq.com,设置=>账户往下拉POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务中将POP3/SMTP服务打开(需要用账号绑定手机发请求短信获取)
zabbix4.0发送邮件告警
非阿里云:

set bsdcompat
set from=XXXXXXX@qq.com   #如:zhangsan@163.com
set smtp=smtp.qq.com  #发送邮箱smtp服务器地址(必须开启smtp服务)
set smtp-auth-user=XXXXXXXX@qq.com  #如:zhangsan,跟发送邮箱填一样的也行
set smtp-auth-password=XXXXXXXXXXXX  #打开邮箱的pop3/smtp服务后提供的授权码
set smtp-auth=login  

阿里云
如果是阿里云等服务器,由于屏蔽了25号端口,会导致连接超时,所以我们需要配置465端口,配置如下

创建ssl证书

cd /root
echo -n | openssl s_client -connect smtp.126.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qqmail.crt     //如果是126或者qq邮箱,把smtp.qq.com:465中的qq改掉即可
certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qqmail.crt
certutil -L -d /root/.certs

信任证书

cd  /root/.certs
certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i qqmail.crt

这里在/etc/mail.rc的配置中比非阿里云多两行

set bsdcompat
set from=XXXXXXX@qq.com   #如:zhangsan@163.com
set smtp=smtp.qq.com  #发送邮箱smtp服务器地址(必须开启smtp服务)
set smtp-auth-user=XXXXXXXX@qq.com  #如:zhangsan,跟发送邮箱填一样的也行
set smtp-auth-password=XXXXXXXXXXXX  #打开邮箱的pop3/smtp服务后提供的授权码
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/root/.certs

测试邮件发送

echo "zabbix test mail" | mail -s "zabbix" yyy@yyy.com

二、编写发送脚本

zabbix默认的脚本位置是/usr/lib/zabbix/alertscripts/
如果是编译安装的自行查找zabbix/alertscripts位置

vim /usr/lib/zabbix/alertscripts/
#!/bin/bash

messages=`echo $3 | tr '\r\n' '\n'`

subject=`echo $2 | tr '\r\n' '\n'`

echo "${messages}" | mail -s "${subject}" $1 >>/var/log/mailx.log 2>&1

修改权限

touch /tmp/mailx.log
chown -R zabbix.zabbix /tmp/mailx.log
chmod +x /usr/lib/zabbix/alertscripts/mailx.sh
chown -R zabbix.zabbix /usr/lib/zabbix/

测试脚本发送邮件

/usr/lib/zabbix/alertscripts/mailx.sh xxxxx@126.com "测试邮件标题" "测试邮件内容"

三、zabbix服务端配置

管理=>报警媒介类型=>创建新媒介类型
zabbix4.0发送邮件告警
zabbix4.0发送邮件告警
名称:mailx
类型:脚本
脚本名称:mailx.sh (此处务必与/usr/lib/zabbix/alertscripts 中的脚本名称一致)

脚本参数:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

配置用户权限,在管理=>用户=>选中Admin=>报警媒介
zabbix4.0发送邮件告警
配置动作

zabbix4.0发送邮件告警
添加个动作触发条件zabbix4.0发送邮件告警
给动作添加操作
zabbix4.0发送邮件告警

标题内容:
故障{TRIGGER.STATUS},服务器名:{HOSTNAME1}发生: {TRIGGER.NAME}
消息内容:
告警主机:{HOSTNAME}
告警主机IP地址:{HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

zabbix4.0发送邮件告警
添加发送到的组或者用户

如果需要恢复也发邮件的话别忘了在恢复操作中照葫芦画瓢
zabbix4.0发送邮件告警

四、测试发送邮件内容

可以关闭zabbix_agentd服务来激活邮件告警
也可以用其他监控项来测试

killall java

zabbix4.0发送邮件告警

上一篇:以Python为例查询学校图书馆剩余书籍信息,挂在云服务器上并定时发送邮件提醒


下一篇:python高级教程