首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在触发器上执行位于Zabbix服务器上的脚本

在触发器上执行位于Zabbix服务器上的脚本
EN

Stack Overflow用户
提问于 2015-07-17 21:00:02
回答 2查看 14.7K关注 0票数 1

我们正在使用Zabbix 2.4监控我们的生产环境。新实例配置了Ansible,它可以设置Zabbix代理。我们需要的是,如果主机已被终止,则将其从服务器中删除,以便我们只收到有关正在运行的实例变得不可用的消息。

为此,我编写了一个Python脚本,该脚本可以将zabbix主机名作为参数,通过调用awscli检查该主机是否在运行实例列表中,如果不在“未终止”列表中,则删除该主机。

我将脚本放在/usr/bin/delete_host.py中,并配置了一个操作,以便在激活"Agent not available“触发器时调用它。操作选项卡如link所示

这是操作日志link

我已经尝试了几种方法来编写命令,还将脚本放在ExternalScripts目录中。已打开服务器的调试日志,但其中没有提到错误或任何内容。实际上,它只显示命令正在执行且一切正常的消息,但主机仍然在那里。当我从Action Log复制命令并手动执行时,一切正常。

在这一点上,我真的没有办法进一步解决这个问题。我禁用了selinux,并使用nopasswd将zabbix用户添加到sudoers文件中。我在任何日志里都找不到任何东西。是否可以使用zabbix执行非消息脚本?

EN

回答 2

Stack Overflow用户

发布于 2015-07-22 23:39:58

尝试以这样一种方式编写脚本:如果运行正常,则输出"OK“或0;如果运行失败,则输出错误消息或错误代码。使用zabbix服务器主机上的活动Zabbix代理项运行脚本(使用函数system.run)。通过这种方式,您将能够创建一个触发器,该触发器将在脚本无法运行时引发错误。

您也可以使用不同的工具来调度它,比如Rundeck。

票数 0
EN

Stack Overflow用户

发布于 2016-06-22 16:17:55

该脚本不必位于ExternalScripts目录中,只有“外部检查”类型的项目才需要该目录。你链接的操作截图使用了delete_host.py的相对路径,这几乎可以保证不会起作用。您的操作日志屏幕截图显示了一些带有/usr/bin/前缀的条目,这样更好。

至少对于测试,请确保指定所有内容的完整路径,包括/full/path/to/python /full/path/to/delete_host.pypython二进制文件。

您还有一些条目将所有输出重定向到/tmp/中的一个文件,但是您没有提到在那里记录了什么。请使用该方法并检查潜在的错误消息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31476443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档