Zabbix 没有运行自定义警报脚本

Zabbix 没有运行自定义警报脚本

我正在运行 Debian 8 和 Zabbix 3.2。

我制作了一个自定义警报脚本,它在终端中运行时运行良好:

/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

但脚本未被调用。我有一个电子邮件通用媒体类型,可以正确触发。

我对该脚本的权限是:

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/ 目录中查找“send_sms”,看看是否发生任何错误。没有。

我的剧本以

exit 0

如何调试?

答案1

a) 您引用的权限仅允许用户(脚本所有者)-rwxr--r-- 1 root root 165 Mar 9 09:12 send_sms.sh执行脚本。Zabbix 守护程序通常以用户身份运行,因此该用户无权运行脚本。由于脚本已经是全局可读的,因此将权限更改为 755 应该是可以接受的,并将允许 Zabbix 运行脚本rootzabbix

b)如果您的脚本依赖于任何环境变量,请确保在脚本本身中设置这些变量 - Zabbix 不会获取配置文件或您可能期望设置这些变量的任何其他内容

答案2

您可以创建一个 sudoers 文件,允许 zabbix 用户运行脚本,而不是开放权限。Sudoers 语法非常复杂,如果您搞砸了,它会完全破坏 sudo,除非您删除不正确的文件或行,所以要小心。

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

例如,删除该行/etc/sudoers.d/zabbix。以 root 身份执行此操作,这样如果您不小心破坏了 sudo,就不会被锁定。之后您可以使用 测试语法visudo -cf /etc/sudoers.d/zabbix

编辑:再说一次,我的用例是使用 apt-get 检查与更新相关的更新,这需要 root 权限。Twilio 可能仍然有效,只是需要读取/执行文件。

答案3

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

相关内容