我们正在使用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执行非消息脚本?
发布于 2015-07-22 23:39:58
尝试以这样一种方式编写脚本:如果运行正常,则输出"OK“或0;如果运行失败,则输出错误消息或错误代码。使用zabbix服务器主机上的活动Zabbix代理项运行脚本(使用函数system.run)。通过这种方式,您将能够创建一个触发器,该触发器将在脚本无法运行时引发错误。
您也可以使用不同的工具来调度它,比如Rundeck。
发布于 2016-06-22 16:17:55
该脚本不必位于ExternalScripts目录中,只有“外部检查”类型的项目才需要该目录。你链接的操作截图使用了delete_host.py
的相对路径,这几乎可以保证不会起作用。您的操作日志屏幕截图显示了一些带有/usr/bin/前缀的条目,这样更好。
至少对于测试,请确保指定所有内容的完整路径,包括/full/path/to/python /full/path/to/delete_host.py
等python
二进制文件。
您还有一些条目将所有输出重定向到/tmp/
中的一个文件,但是您没有提到在那里记录了什么。请使用该方法并检查潜在的错误消息。
https://stackoverflow.com/questions/31476443
复制相似问题