Monitorando o zabbix server (próprio) externamente

1

Tenho alguma infra-estrutura (servidores, switches etc) monitorada por um servidor Zabbix, configurado para alertar em caso de problemas; Por enquanto, tudo bem. Mas e se o próprio servidor Zabbix (ou qualquer infra subjacente) tiver um problema?

Uma ideia seria publicar algum tipo de pulsação, que pode ser monitorada por um sistema externo. Estou pensando em usar a API do Zabbix (provavelmente usando o py-zabbix) para expor isso em http e tê-lo monitorado usando smth como monitor.us .

Antes de eu mergulhar, não posso deixar de me perguntar se algo simples existe para cobrir isso? Ou isso é mesmo uma boa abordagem? O monit seria uma abordagem melhor se comparado a um script Python personalizado? (não tenho certeza se isso passa no teste de "simplicidade") ...

    
por sxc731 06.12.2015 / 09:58

2 respostas

1

Então, aqui está o que acabei fazendo:

  1. 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).
  2. 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,
    )
    
por 28.02.2016 / 17:40
0

Batimentos cardíacos externos é o caminho a percorrer.

Eu não estou ciente de tais ferramentas, eu tenho o meu próprio para o sistema de monitoramento que eu uso. Apenas certifique-se de que é uma batida do coração e não um relatório de falha. Por exemplo. você sempre informa que está tudo bem e quando o sistema de monitoramento não recebe o seu batimento cardíaco por um período maior, então deve avisá-lo.

    
por 06.12.2015 / 10:08