最近公司让做一个线上服务的邮件报警,自己没搞过运维,只能慢慢探索。
测试环境:
zabbix server部署于腾讯云ECS。
zabbix agent部署于一台阿里云ECS
zabbix server和agent安装好后设置邮件报警过程:
一、设置报警媒介类型
我这里设置的是邮箱报警,见下图
二、设置接收方邮箱
(1)点击”管理“-”用户“,在用户列表中选择报警用户
(2)进入用户后,切换到”报警媒介“选项卡,再该选项卡中点击”添加”,然后再弹出的对话框中输入接收邮箱
最后点击“报警媒介”选项卡中的“更新”按钮生效。
三、设置报警动作
报警动作就是触发zabbix通过发送方邮箱向你配置的接收方邮箱发送报警邮件的条件。
(1)点击“配置”-“动作”,再点击右上角的“创建动作”,进入创建动作界面
(2)配置动作详情,包括名称、触发器设置等
(3)配置操作
(4)配置发送方和接收方
(5)恢复操作和更新操作也与(4)一样
三、测试邮箱报警
点击”管理“-”报警媒介类型“,点击刚才配置的邮箱类型的右侧的”测试“,在弹出的对话框中输入收件人(这里的收件人可以是前面提到的接收方邮箱,也可以是其他邮箱),点击“测试”按钮。成功的话就会收到successful之类的提示,同时邮箱中也会看到来自发送方的邮件。
说说部署过程中遇到的坑吧。
坑一:25端口不能用
在配置“管理”-“报警媒介类型”时,SMTP服务器不管是用163还是qq,都不能使用25端口(可以通过telnet smtp.163.com 25或者telnet smtp.qq.com 25来验证,如果提示Trying 14.18.245.164...Connected to smtp.qq.com.则表示可以使用)
解决办法:改为使用465端口
提示:在使用465端口前,我在zabbix-server所在的服务器(腾讯云ECS)中按照文章https://me.jinchuang.org/archives/146.html/comment-page-2#comments的方法配置了465端口(不同的是文章中使用的是Centos,而我使用的是Ubuntu 16.04,但不影响),同时在腾讯云控制台的安全组规则中同时在入站规则和出站规则中打开了465端口。不知道这两个步骤是否起了作用,下一次验证一下再来更新。
为了备份原博客以免丢失,这里copy一下配置465端口的具体过程,再次感谢原作者!
(1)创建存放证书的文件夹
mkdir -p /root/.certs/
echo -n | openssl s_client -connect smtp.exmail.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qq.crt
certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
certutil -L -d /root/.certs
certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i ~/.certs/qq.crt
(2)配置mail.rc文件
新建mail.rc:
vim /etc/mail.rc
然后在mail.rc中输入如下内容:
set from=admin@jinchuang.org
set smtp="smtps://smtp.exmail.qq.com:465"
set smtp-auth-user=admin@jinchuang.org
set smtp-auth-password=password
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/root/.certs/
(3)验证是否能够发送邮件
echo "测试阿里云465smtp端口发信是否ok!,如果收到了此封邮件则说明ok了!" | mail -r "admin@jinchuang.org" -s "阿里云测试465发信端口" admin@jinchuang.org
我这里验证没有成功,可能是某个配置有问题。需要再次强调的是,上面成功发送报警邮件的操作过程中包含了这一步,至于是否必须,未来验证。
坑二:配置发送方和接收方邮箱后,还需要开启发送方邮箱的POP3/SMTP服务
在”管理“-”报警媒介类型“中设置的邮箱是发送方,即zabbix用这个邮箱来发送报警信息给你,而接收方邮箱在”管理“-”用户“-”报警媒介“中设置。比如,测试中我的发送方邮箱是qq邮箱,接收方邮箱是163邮箱。此时需要登录qq邮箱,在左上角的“设置”-“账户“-”POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务“中,开启POP3/SMTP服务,记住授权码,并且将”收取选项“置为”全部“。
坑三:”管理“-”报警媒介类型“中的用户名称必须是邮箱全名,密码是坑二中的授权码。例如对于qq邮箱,用户名是7548*****@qq.com,授权码是enhisrqyyq******。
坑四:采用qq邮箱作为发送方邮箱时,在”管理“-”报警媒介类型“中,”安全链接“中必须选择”SSL/TLS“,且必须勾选”SSL验证对端“和”SSL验证主机“。
这是个大坑,我是偶然发现的需要这么做的,参考腾讯云文档https://cloud.tencent.com/document/product/583/35399。