我有一些Zabbix服务器监视的基础设施(服务器,交换机等),设置为在发生问题时提醒; 到现在为止还挺好。 但是,如果Zabbix服务器本身(或任何底层的下层)遇到问题呢?
一个想法是发布某种心跳,可以通过外部系统进行监控。 我正在考虑使用Zabbix API(可能使用py-zabbix)通过http公开它,并使用像监视器 .us一样的监视器进行监视。
在我冒险之前,我不禁想知道是否已经有了一些简单的东西来掩饰这个问题? 或者这是一个好方法? 与自定义Python脚本相比, monit会是更好的方法吗? (不知道这是否通过了“简单”testing)…
所以这就是我最终做的事情:
出现了一个意想不到的问题:即使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, )
外在的心跳是要走的路。
我不知道有任何这样的工具,我有我自己的监视系统,我使用。 只要确保这是一个心跳,而不是一个失败的报告。 例如。 你总是报告一切正常,当监控系统长时间没有收到你的心跳,那么它应该让你知道。