我们正在使用Zabbix 2.4监控我们的生产环境。新实例配置了Ansible,用于设置Zabbix代理。我们需要的是,如果主机已被终止,则从服务器中删除主机,以便我们只接收有关运行实例变为不可用的消息。
为此,我编写了一个Python脚本,可以将zabbix主机名作为参数,通过调用awscli检查该主机是否在运行实例列表中,如果主机不在&上,则删除主机#34;未终止"列表。
我将脚本放在/usr/bin/delete_host.py中并配置了一个操作,当一个"代理不可用时#34;触发器被激活。这是“操作”选项卡的外观link
这是行动日志link
我尝试了几种编写命令的方法,也将脚本放在ExternalScripts目录中。打开服务器的调试日志,但其中没有提到错误或任何内容。事实上,它只显示正在执行命令的消息,一切正常,但主机仍在那里。当我从Action Log复制命令并手动执行它时,一切正常。
此时我真的没有选择如何进一步解决这个问题。我禁用了selinux,并使用nopasswd将zabbix用户添加到sudoers文件中。我无法在任何日志中找到任何内容。是否甚至可以使用zabbix执行非消息传递脚本?
答案 0 :(得分:0)
尝试以打印" OK"的方式编写脚本。如果运行正常则为0或错误消息或错误代码如果失败。使用Zabbix服务器主机上的活动zabbix代理项运行脚本(使用函数system.run)。通过这种方式,您将能够创建一个触发器,如果脚本无法运行,将触发错误。
您也可以使用其他工具(如Rundeck)安排它。
答案 1 :(得分:0)
脚本不必位于ExternalScripts目录中,只有类型为"外部检查"的项目才需要。您链接到的操作屏幕截图使用delete_host.py
的相对路径,几乎可以保证不起作用。您的操作日志屏幕截图显示了一些/ usr / bin / prefixed的条目,这样更好。
至少在测试时,请务必指定所有内容的完整路径,包括python
二进制文件,例如/full/path/to/python /full/path/to/delete_host.py
。
您还有一些条目将所有输出重定向到/tmp/
中的文件,但您没有提到登录的内容。请使用该方法并检查潜在的错误消息。
答案 2 :(得分:0)