Zabbix不运行自定义的alertscript

我正在运行Debian 8和Zabbix 3.2。

我做了一个自定义警报脚本,运行在terminal时运行良好:

/bin/sh /usr/lib/zabbix/alertscripts/send_sms.sh 4483222740 Hello 

这通过Twilio发送短信,工作正常。

在我的zabbix_server.conf中有:

 AlertScriptsPath=/usr/lib/zabbix/alertscripts 

我已经按照https://www.zabbix.com/documentation/3.2/manual/config/notifications/media/script创build了自定义媒体types

但脚本没有被调用。 我有一个正常触发的电子邮件的一般媒体types。

我对脚本的权限是:

 ls -alh total 12K drwxr-xr-x 2 root root 4.0K Mar 9 09:04 . drwxr-xr-x 4 root root 4.0K Feb 3 13:36 .. -rwxr--r-- 1 root root 165 Mar 9 09:12 send_sms.sh 

我试着在/ var / log /目录下grep for“send_sms”来查看是否有错误发生。 没有。

我正在结束我的脚本

 exit 0 

如何debugging?

a)你引用的权限, -rwxr--r-- 1 root root 165 Mar 9 09:12 send_sms.sh ,只允许执行脚本到root用户(脚本的所有者)。 Zabbix守护进程通常以zabbix用户身份运行,所以用户没有权限运行脚本。 由于脚本已经是世界可读的,将权限更改为755应该是可以接受的,并且允许Zabbix运行脚本

b)如果您的脚本依赖于任何环境variables,请确保将其设置在脚本本身中 – Zabbix不会获取configuration文件或其他您可能期望设置的variables

而不是打开权限,你可以做一个sudoers文件,允许zabbix用户运行脚本。 Sudoers语法真的很挑剔,如果你搞砸了,它会完全打破sudo,直到你删除文件或行不正确,所以要小心。

zabbix ALL=NOPASSWD: /usr/lib/zabbix/alertscripts/send_sms.sh *需要在zabbix和ALL之间有一个制表符,而不是空格,所以请确保你的编辑器不能替代它。 这个网站似乎这样做,所以不要直接复制和粘贴。

例如, /etc/sudoers.d/zabbix行放在/etc/sudoers.d/zabbix中。 以root身份执行此操作,以防止您不小心破坏sudo。 之后可以用visudo -cf /etc/sudoers.d/zabbix来testing语法。

编辑:然后再次,我的用例是一个检查与使用apt-get更新需要根。 Twilio可能仍然有效,只是读取/执行文件的问题。

我解决了这个问题,而不是关于权限,写在这里可能会帮助别人。 因为zabbix运行你的脚本不在你的Alertscript中,所以你只需要添加一个命令:cd $ Alertscriptpath(基于你的环境),这只是工作