我这里以qq邮箱告警为主。

 

一、先开启qq邮箱的SMTP功能。

 

 

 

 

点击开启,我这是开启过的。然后按照步骤一路验证就行了。最后记得吧最后的哪个校验码拍照留下来。

 

 

二、在zabbix服务节点上面安装mailx

我这里是centos7的,所以yum安装就行了,装完也不需要启动什么的。

yum -y install mailx

 

[root@zabbix .certs]# cat /etc/mail.rc

。。。。。。在文件最后面加上。。。。
set from=1234567@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=1234567@qq.com
set smtp-auth-password=yafifta236wdcbhw   ---》开启SMTP的时候最后的那串认证码,不是qq密码
set smtp-auth=login
set smtp-use-starttls
set ssl-verify=ignore
set nss-config-dir=/cert/.certs

这里还需要一个证书的认证

mkdir -p /cert/.certs

echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /cert/.certs/qq.crt

certutil -A -n "GeoTrust SSL CA" -t "C,," -d /cert/.certs -i /cert/.certs/qq.crt
certutil -A -n "GeoTrust Global CA" -t "C,," -d /cert/.certs -i /cert/.certs/qq.crt
certutil -L -d /cert/.certs/
 
 
这里有个小bug;下面会给出解决方法。

 

发一份测试邮件试试水:

[root@zabbix .certs]#  echo "this is test mail" | mail -s "yang1" 345678@qq.com

 

 发现出错

[root@zabbix .certs]# echo "this is test mail" | mail -s "yang1" 567895@163.com
[root@zabbix .certs]# Error in certificate: Peer's certificate issuer has been marked as not trusted by the.

但是我们去邮箱看看,确实已经收到了,所以这个就不管了,就这么用着先。

 

三、配置一下zabbix服务端的文件

随意找个文件夹,也可以自己建一个。比如我就这么健的。

mkdir -p /usr/lib/zabbix/alertscripts  (这个目录大家可以随意创建,这个目录主要就是拿来存放发送邮件的监本的)

接着在这里目录下面编写一个mailx.sh的脚本。内容如下。

[root@zabbix ~]# cat /usr/lib/zabbix/alertscripts/mailx.sh
#!/bin/bash
messages=`echo $3 | tr '\r\n' '\n'`
subject=`echo $2 | tr '\r\n' '\n'`
echo "${messages}" | mail -s "${subject}" $1 >>/tmp/mailx.log 2>&1

[root@zabbix ~]#  touch /tmp/mailx.log

[root@zabbix ~]#  chown -R zabbix.zabbix  /tmp/mailx.log

[root@zabbix ~]#  chmod +x /usr/lib/zabbix/alertscripts/mailx.sh

[root@zabbix ~]#  chown -R zabbix.zabbix /usr/lib/zabbix/

[root@zabbix ~]#  ./mailx.sh 1234565@163.com "你写邮件的题目" "你的邮件内容"     //测试发邮件脚本是否可以正常工作

去你的邮箱里面看看,基本没什么意外都能收到的

 

 四、配置zabbix(这个很重要,因为你脚本放错了地方是没有用的)

我这里是自己编译安装的,所以我根据自己的情况在zabbix_server.conf文件里面配置包括上面编写的发送邮件的脚本。

[root@zabbix ~]# cat /usr/local/zabbix/etc/zabbix_server.conf

。。。。。。

LogSlowQueries=3000
ListenPort=10051
AlertScriptsPath=/usr/lib/zabbix/alertscripts  #主要是加上这么一条,因为这一条会告诉你的zabbix_server待会告警发送邮件的时候去哪里调动相应的脚本老操作

修改好了就可以重启zabbix_server了

[root@zabbix ~]# /etc/init.d/zabbix_server restart
Restarting zabbix_server (via systemctl):                  [  OK  ]

 

五、上面配置好了这些,接下载就要在zabbix的web界面配置一些正在的告警邮件。

a)、点击管理---->报警没接类型--->创建媒体类型

 

b)、步骤如下,选项那边不需要改动,直接忽略即可。

 

 

内容:{ALERT.SENDTO}

     {ALERT.SUBJECT}

   {ALERT.MESSAGE}

 

c)、看图的步骤

 

 

 

 

 

 

 到了这一步,直接点击更新即可

 d)、配置告警动作

 

 

 

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

 

 

 

 

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

 

 

 六、至此,zabbix的告警媒介算是部署好了

但是没有告警内容是万万不行的。接下来我们配置告警。

这里我自己配置了一个监控脚本,主要监控内存的使用率。超过90%就严重告警,低于80%就恢复告警。我这里之际内存512MB,所以很容易搞到90%以上。

 

 

 

 配置好这个就行了,只要她粗发告警,系统就会调用脚本给你发邮件了。

但是等到真的发送邮件的时候,你会看到好像真发不出邮件,还报下面的错误。

 

 这是因为啊:我们上面的哪个证书目录权限不够。那么我们给他足够权限就行了。

chmod -R 777 /cert/.certs      这就是上面聊到的bug。但是呢,改完这个之后还是会报下面的错

 

 

但是,不要紧了。因为此时你的邮箱已经能够收到zabbix发的告警邮件了。这些错误可以忽略,因为这是为了信任证书的标记操作而已。

 

最后,你想看zabbix都发了哪些邮件可以在这里查看。