zabbix邮件脚本路径错误,导致无法发送邮件的问题处理
2,939 total views, 5 views today
公司zabbix主要用于监控MySQL数据库及操作系统的运行状态及性能状况。前两天,zabbix莫名其妙不发送邮件了,幸好及时查看zabbix界面,才避免了一次无空间可用的事故。
排查思路:zabbix涉及到邮件配置、zabbix media types、以及action等环节,所以采取排除法的策略来确定问题。
zabbix发送邮件采用mutt+msmtp方式,直接调用mutt命令或者发送邮件的mail脚本,都可以正常发送邮件。至此,可以确定问题出在了zabbix自身配置。
1 2 3 |
#mutt和mail脚本都可正常发送邮件 echo "helloworld" | mutt -s "mutt_smstp_sendmail" 463725310@QQ.COM /usr/local/zabbix/share/zabbix/alertscripts/mail 463725310@QQ.COM test_subject test_contents |
然后,查看了zabbix的media types和actions,都没有发现异常。一筹莫展时,突然觉得zabbix应该有发送邮件的记录。可是这个记录在什么地方,见下图(如果看不清,请点击这里查看大图)。
该页面路径 Monitoring>>Events>>根据Description列描述,然后点击Time列,看到的就是发送有邮件的动作(action)的详细信息,其中包含了邮件是否正常发送出去,还有未发送出邮件的错误所在。
上图中文字有些模糊,红框内文字是为“/usr/local/zabbix/share/zabbix/alertscripts/mail/mail: [20] Not a directory”。
这个错误引起了我的警觉,因为它显示的是错误的发送邮件mail脚本的路径,正确路径为”/usr/local/zabbix/share/zabbix/alertscripts/mail”,这里多出一个mail,肯定是zabbix_server.conf配置错误导致。查看zabbix_server.conf文件,确实是多了mail,删除mail。
1 2 3 4 5 6 7 8 9 |
# 修改前 # cat /usr/local/zabbix/etc/zabbix_server.conf AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts/mail ExternalScripts=/usr/local/zabbix/share/zabbix/alertscripts/mail # 修改后 # cat /usr/local/zabbix/etc/zabbix_server.conf AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts ExternalScripts=/usr/local/zabbix/share/zabbix/alertscripts |
注意,一定要重启zabbix服务重新加载配置文件才能生效,否则依然出现上面的错误。至此,问题解决。
特别说明:
zabbix_server.conf中,AlertScriptsPath和ExternalScripts后面跟的是路径,不是发送邮件脚本的名字。