我这里以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/
发一份测试邮件试试水:
[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都发了哪些邮件可以在这里查看。