Monitoring

外部監控zabbix server(本身)

  • February 28, 2016

我有一些由 Zabbix 伺服器監控的基礎設施(伺服器、交換機等),設置為在出現問題時發出警報;到目前為止,一切都很好。但是如果 Zabbix 伺服器本身(或任何底層基礎設施)遇到問題怎麼辦?

一個想法是發布某種心跳,可以由外部系統監控。我正在考慮使用 Zabbix API(可能使用 py-zabbix)通過 http 公開它,並使用諸如monitor.us之類的東西對其進行監控。

在我冒險之前,我不禁想知道是否已經存在一些簡單的東西來解決這個問題?或者這甚至是一個好方法?自定義 Python 腳本相比,monit 會是更好的方法嗎?(不確定這是否通過了“簡單性”測試)……

所以這就是我最終做的事情:

  1. 編寫了一個相當簡單的 Python 腳本,它使用pyzabbix向 Zabbix 詢問目前失敗的“觸發器”集(見下面的片段)。這會在後台執行緒上定期執行(因此它必須是執行緒安全的)。
  2. 我使用web.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,
   )

引用自:https://serverfault.com/questions/741064