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发送邮件告警_第1张图片
非阿里云:

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

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

set bsdcompat
set from=[email protected]   #如:[email protected]
set smtp="smtps://smtp.qq.com:465"  #发送邮箱smtp服务器地址(必须开启smtp服务)其实就是加了个465端口号
set smtp-auth-user=[email protected]  #如:zhangsan,跟发送邮箱填一样的也行
set smtp-auth-password=XXXXXXXXXXXX  #打开邮箱的pop3/smtp服务后提供的授权码
set smtp-auth=login
set ssl-verify=ignore

以上这部分配置好即可,亲测就可发送邮件,跑一下邮件发送测试即可,如果不行,确保smtp发件确定OK的前提下,做以下证书操作

创建ssl证书

cd /root
echo -n | openssl s_client -connect smtp.qq.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=[email protected]   #如:[email protected]
set smtp="smtps://smtp.qq.com:465"  #发送邮箱smtp服务器地址(必须开启smtp服务)
set smtp-auth-user=[email protected]  #如: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" [email protected]

二、编写发送脚本

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 [email protected] "测试邮件标题" "测试邮件内容"

三、zabbix服务端配置

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

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

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

zabbix4.0发送邮件告警_第5张图片
添加动作触发条件
zabbix4.0发送邮件告警_第6张图片
给动作添加操作
zabbix4.0发送邮件告警_第7张图片

标题内容:
故障{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发送邮件告警_第8张图片
添加发送到的组或者用户

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

四、测试发送邮件内容

可以关闭zabbix_agentd服务来激活邮件告警
也可以用其他监控项来测试,这里我用一个配置好的微服务监控的例子,直接杀掉微服务

killall java

zabbix4.0发送邮件告警_第10张图片
至此zabbix邮件告警就完结了,Docker部署的zabbix还有坑呢,我遇到了容器内zabbix服务端无法调用mailx导致无法执行mailx.sh脚本的情况,如果有大佬知道怎么解决欢迎给我评论留言

你可能感兴趣的:(zabbix,运维)