答案1
因此,这就是我最终做的事情:
- 编写了一个相当简单的 Python 脚本,使用pyzabbix询问 Zabbix 当前失败的“触发器”集(见下面的代码片段)。该操作在后台线程上定期运行(因此必须是线程安全的)。
- 我用了网页.py将其暴露给外部监控系统。
出现了一个意外问题:即使 Zabbix 服务器宕机,Zabbix API 仍然会响应,而且无法查询服务器的状态 - 而这正是我想要监控的主要内容。幸运的是补丁已存在允许此类服务器状态查询。
以下是查询失败的 Zabbix 触发器集的代码(改编自pyzabbix 自带的一个例子)。如果您需要完整监视器的代码,请在评论中询问,我会将其发布在github上。
def __query_unacked_triggers(self):
""" queries for currently tripped _triggers which haven't been acked """
return self._zapi.trigger.get(
only_true = 1,
filter = { 'value': 1 },
skipDependent = 1,
monitored = 1,
active = 1,
output = 'extend',
expandDescription = 1,
expandData = 'host',
withLastEventUnacknowledged = 1,
)
答案2
外部心跳才是最佳途径。
我不知道有任何这样的工具,我有自己的用于我使用的监控系统的工具。只需确保它是心跳而不是故障报告即可。例如,您总是报告一切正常,并且当监控系统长时间没有收到您的心跳时,它应该会通知您。