如何在主机上运行的操作在给定触发器已经“真实”的情况下运行?

设置:Zabbix 2.4 | RHEL 6.4

我正在configuration一个方法来允许Zabbix Agentd服务在抛出触发器时(使用Git作为容器)自动更新它们自己的二进制文件。 两个触发器到位:

  1. 触发器1:“Git repo不存在” – 确保有一个存放Zabbix Agentd二进制文件的git存储库。
    一个。 {Template App Zabbix Agent:vfs.file.exists[/opt/zabbix/.git/config].last()}=0
  2. 触发器2:“Zabbix代理版本不正确。” – 如果代理不是预期的编译版本,则触发。 这被设置为一个用户macros。
    一个。 {Template App Zabbix Agent:vfs.file.cksum[/opt/zabbix/sbin/zabbix_agentd].last()}<>{$LATESTAGENT}
    $LATESTAGENT是已编译的zabbix_agentd二进制文件的cksum()值。
    C。 取决于触发器1

触发器1只是确保触发器2是否触发,代理将能够运行远程命令来执行git pull并获取最新的二进制文件。


现在的情况

触发器运行正常,并显示我的系统代理版本不alignment。 从那以后,我configuration了几个动作去跟他们做肮脏的工作。

  1. 触发器1>在Zabbix Agentd安装path中运行git init
  2. 触发器2>运行git pull origin master来获取最新的bin。

这些只是我创build的全局脚本,所以我可以通过单击任何主机并为主机select适当的脚本来手动testing其工作。


问题

由于我先创build了触发器,它们已经被“触发”了。 然而,现在我已经采取行动去处理这些触发器,我希望这些触发器能够“重新触发”(或者重新初始化或者重新触发或者其他),以使这些行为能够完成它们的事情。 不幸的是,我真的找不到一个办法来做到这一点。 关注触发器1(git repo exists),我尝试清除vfs.file.cksum[/opt/zabbix/sbin/zabbix_agentd]键上的历史logging,但是这并不影响触发器的状态。 我已经看到一些人提到一些SQL或API的工作来手动修改触发器的状态,但感觉应该有比这更简单的东西!


概要

  • 创build触发器来部署更新的Zabbix Agentd二进制文件。
  • 创build了触发器的操作。
  • 无法获得已在“真”的触发器上运行的操作

任何人都知道如何让我的触发器“再次触发”,让行动做他们的事情? 感谢您的帮助!

注意事项

  • 系统CM工具(例如Puppet)不是一个选项。 我需要在Zabbix和Git中执行此操作。
  • 克朗解决scheme已经出来。 大量的服务器正在发挥作用,所以pipe理这些cron作业和更改(再次,没有sysCM工具)将是一个手动的噩梦。

作为一种解决方法,您可以暂时将触发器更改为“生成多个PROBLEM事件”,等到您需要的所有操作都被执行,然后再切换回来。