【发布时间】:2012-03-13 11:04:53
【问题描述】:
我正在使用 Zabbix 监控应用程序,并定义了一个返回字符串值的自定义项。由于我的项目的值实际上是校验和,它们将只包含字符[0-9a-f]。为了冗余,我的应用程序的两个镜像副本在两台服务器上运行。我想创建一个触发器,该触发器将从两台机器中获取项目值并在它们不相同时触发。
让我们暂时忘记值更改的那一刻(这不是原子操作,因此系统可能会在短时间内看到不一致的状态,这不是真正的错误),因为我可以通过以下方式解决它查看之前的几个值。
关键是:如何编写一个 Zabbix 触发器表达式,它可以比较两个项目的字符串值是否相等(实际上是两个镜像主机上的相同项目)?
根据the fine manual 和我在实践中确认的那样,标准运算符= 和# 只适用于数值,所以我不能只写自然的{host1:myitem[param].last(0)} # {host2:myitem[param].last(0)}。 change()或diff()等函数只能比较同一项目在不同时间点的值。 regexp() 等函数只能将项的值与常量字符串/正则表达式进行比较,而不能与另一个项的值进行比较。这是非常有限的。
我可以将比较逻辑移动到我的自定义项执行的脚本中,但它有点凌乱且不优雅,所以如果可能的话,我希望在我的 Zabbix 触发器中包含这个逻辑。
也许尽管有上面列出的限制,有人可以想出一个解决方法吗?
【问题讨论】:
标签: linux string monitoring mirroring zabbix