本文已参与「新人创作礼」活动,一起开启掘金创作之路。
一、mailx安装配置(zabbix-server服务器)
(1)安装mailx
yum -y install mailx

(2)检查其他邮件服务器状态
服务器上如果安装了sendmail及postfix,需要确保是关闭状态并关掉开机自启
(3)配置mailx
以QQ邮箱为例
vim /etc/mail.rc
set sendcharsets=iso-8859-1,utf-8 #设置字符,防止乱码
set smtp=smtp.qq.com #邮箱的smtp服务器地址,一般在邮箱的设置中寻找
set from=xxxxx@qq.com #设置发件人邮箱
set smtp-auth-user=xxxxx@qq.com #邮箱登录账号,即发件人邮箱
set smtp-auth-password=xxxxx #邮箱密码或者授权码
set smtp-auth=login #设置进行验证登录

(4)测试邮件发送
尝试给一个地址为“xxxxxx@qq.com”的邮箱发送一封测试邮件
echo "HEllo_test_test1" | mailx -v -s "zabbix_test_mail" xxxxxx@qq.com
如下提示即为发送成功,并且检查邮箱也能收到邮件,如找不到可能在垃圾箱内


二、编写zabbix调用脚本(zabbix-server服务器)
一般编译安装的zabbix,调用脚本默认路径为/usr/local/share/zabbix/alertscripts/,如不是这个目录,find一下即可,根据实际情况编写
(1)编写脚本
进到脚本目录,编写一个名字为sendmail.sh的脚本
cd /usr/local/share/zabbix/alertscripts/
touch sendmail.sh
写入如下内容,附带说明
#!/bin/bash
#export.UTF-8
#zabbix sendmail scripts
messages=`echo $3 | tr '\r\n' '\n'`
subject=`echo $2 | tr '\r\n' '\n'`
echo "${messages}" | mailx -s "${subject}" $1 >>/tmp/sendmail.log 2>&1
#说明:
#export.UTF-8 防止出现乱码
#$1表示收件人的地址 $2表示邮件的标题 $3表示邮件的正文
#添加变量的原因:防止邮件发送后正文不显示或正文被当做附件发送
#在tmp下添加一个日志文件
(2)日志文件创建及权限添加
创建日志文件,与上面脚本文件中的目录及名字对应
cd /tmp
touch sendmail.log
分别给脚本及日志文件添加权限
chmod 777 sendmail.sh
chmod 777 sendmail.log
如果没权限,后期再zabbix报警发送邮件时,会报没有权限的错误

(3)测试脚本
sh /usr/local/share/zabbix/alertscripts/sendmail.sh xxxxxx@qq.com "zabbix_test_scripts" "zabbix_test_mail"

三、zabbix页面配置
(1)创建报警媒介类型

添加报警媒介类型,分别选择或填入如下信息

(2)添加报警媒介,也就是添加收件人地址

点开后,点“报警媒介”,添加

类型选我们自己添加的脚本类型,收件人写收件邮箱地址


(3)配置报警动作

分别按照自己的需求设置




四、测试
模拟一个报警,如硬盘占用超过了80%,I/O异常这种,我们可以在zabbix页面看到正常的报警,同时会看到zabbix会将报警信息通过邮件发送到我们事先设置好的邮箱中

