Zabbix邮件报警配置看似简单,实则存在诸多细节问题,尤其是邮箱设置部分,需深入研究和反复调试才能成功。
1、 首先确保Zabbix已正确配置,随后开始搭建监控功能。需下载sendemail工具,注意区分名称,切勿误下为sendmail,两者仅一字之差,但功能不同,务必确认软件名称无误后再进行安装与后续设置。
2、 功能差异较大,需安装两个依赖包,具体命令如下:
3、 解压下载的软件包,将sendemail文件移至/usr/local/bin目录,赋予可执行权限,并更改其所属用户与组。
4、 修改Zabbix服务器配置文件,指定报警脚本存放路径。打开zabbix_server.conf文件,定位到AlertScriptsPath参数(在Zabbix 3.0.2版本中位于第448行),将其值更改为所需的脚本目录路径,确保Zabbix服务能正确调用报警脚本。保存后重启服务使配置生效。
5、 新建一个目录,并在该目录中创建名为sendmail.sh的报警脚本文件。
6、 以下是脚本内容(其中涂黑部分为邮箱与密码,-f及-xu后接邮箱地址,-xp后接授权码)
7、 此处需格外留意安全事项。
8、 需修改sendemail中的某一行代码。
9、 配置完毕后,首次测试发邮件即出现报错。
10、 经百度查询确认,此问题由sendemail软件与perl5中的SSL版本不兼容引起,可通过修改sendemail内部代码暂时解决。根本性的兼容问题需等待perl5后续版本更新升级后才能彻底修复,当前仅能采取局部调整方式应对。
11、 sendemail第1906行内容如下所示
12、 修改为
13、 不指定SSL版本,由程序自动选择,修改后可正常发送邮件,虽有提示信息,但不影响邮件功能使用,接下来进入第二个问题。
14、 测试发现,QQ邮箱发送邮件必须启用SSL加密,因此需添加-o tls=yes或-o tls=auto参数之一,才能确保邮件正常发送。
15、 无论使用163邮箱还是QQ邮箱,均需开启POP3服务。其中,QQ邮箱在通过第三方客户端发送邮件时,必须使用授权码登录,若直接使用账户密码验证,将出现所示的错误提示。邮箱授权码的获取方式请用户自行在邮箱设置中完成相关配置即可。
16、 完成上述两项配置,包括调整sendemail代码、设置TLS及授权码后,即可进行邮件发送测试,具体测试命令如下所示。
17、 运行脚本发送邮件:邮箱地址、标题和内容作为参数输入。
18、 例如
19、 执行脚本发送测试邮件至指定邮箱,主题为测试邮件,正文内容为测试内容。
20、 发送成功后将出现类似提示信息
21、 邮箱中同样可查看邮件内容
22、 配置完邮件脚本后,需登录Web端,在管理界面的报警媒介类型页面,点击右侧创建媒体类型按钮进行添加操作。
23、 进入创建页面,输入名称邮件报警脚本,类型选择脚本,脚本名称选择mail.sh。随后点击添加按钮,依次添加三个参数:{ALERT.SENDTO}、{ALERT.SUBJECT} 和 {ALERT.MESSAGE},分别对应 mail.sh 脚本中的收件人(to)、主题(subject)和正文(body)。参数设置完毕后,点击页面下方的更新按钮,完成配置。至此,邮件报警媒介已成功创建,可投入使用。
24、 创建报警媒介后,需将其与用户进行关联。进入管理菜单,选择用户,找到目标用户linux,点击用户名进入配置页面。在报警媒介选项中,点击添加按钮,选择之前创建的邮件报警脚本,填写收件人邮箱,设置报警触发时间和类型,确认无误后点击更新。系统保存配置后,该报警媒介即成功绑定至指定用户,后续报警信息将按设定规则发送。
25、 当系统发生故障时,需设置触发动作以发送报警邮件至邮箱。进入配置页面,选择动作选项,点击右侧的创建动作按钮,按提示完成设置即可实现故障报警功能。
26、 在动作配置页面的名称栏中输入预设的动作名称,并勾选恢复通知选项,确保系统恢复正常时也能发送邮件提醒。接着在条件设置中添加触发警报的规则,此处设定为当被监控设备发生严重故障或更高级别异常时才触发报警。进入操作配置界面后,保持默认步骤执行时长为60秒,共设置三个步骤,每个步骤持续60秒。接收对象选择Zabbix administrator用户组,并指定此前已关联报警媒介的Linux用户,通知方式限定为邮件脚本告警。完成配置后,点击添加按钮保存该动作,系统将按设定执行报警流程。
27、 添加完成后,即可查看所添加的动作名称及其启用状态。
28、 当系统检测到严重故障时才会触发报警动作。为模拟这一情况,我们手动关闭其中一台服务器的zabbix-agent服务。所示,agent已成功停止运行。系统将在一段时间后检测到该异常状态,并自动触发相应的报警机制,从而验证报警功能的准确性和及时性。
29、 在监控页面等待约5分钟后,系统出现报警提示,稍后也收到了邮件正常发送的通知。需特别注意的是,若修改了报警脚本的存储路径,必须重启zabbix_server服务进程。否则,系统将无法正确调用新路径下的脚本,导致报警功能失效。这是由于Zabbix默认仅在/usr/local/zabbix/share/zabbix/alertscripts/目录下查找脚本文件,路径变更后若未重启服务,配置不会生效,从而引发脚本找不到的问题。
30、 打开邮箱查看,确认已收到报警邮件。
