Então, aqui está o que acabei fazendo:
- Escreveu um script Python bastante simples que usa o pyzabbix para interrogar o Zabbix quanto ao conjunto de "triggers" que estão falhando (ver snippet abaixo). Isso é executado periodicamente em um thread de segundo plano (por isso, ele precisa ser thread-safe).
- Eu usei web.py para expor isso ao sistema de monitoramento externo.
Houve um soluço inesperado: a API do Zabbix ainda responde mesmo quando o servidor Zabbix está inativo e não há como interrogar o status do servidor - que era a principal coisa que eu queria monitorar. Felizmente, existe um patch para permitir essas consultas de status do servidor.
Aqui está o código para consultar o conjunto de gatilhos com falha do Zabbix (adaptado de um exemplo que vem com pyzabbix ). Se você precisar do código para o monitor completo, por favor, pergunte em um comentário e eu vou postar no 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,
)