3 Dependências de trigger

Visão geral

Às vezes, a disponibilidade de um host depende de outro. Um server que está atrás de um roteador ficará inacessível se o roteador parar de funcionar. Com triggers configurados para ambos, você poderá receber notificações sobre dois hosts indisponíveis, embora apenas o roteador seja o responsável.

É nesse caso que alguma dependência entre hosts pode ser útil. Quando uma dependência é definida, as notificações dos dependentes podem ser retidas, enviando-se apenas a notificação sobre o problema raiz.

Embora o Zabbix não ofereça suporte direto a dependências entre hosts, elas podem ser definidas por meio de um método mais flexível: dependências entre triggers. Um trigger pode depender de um ou mais triggers.

Em nosso exemplo simples, abrimos o formulário de configuração do trigger do server e definimos que ele depende do trigger correspondente do roteador. Com essa dependência, o trigger do server não mudará de estado enquanto o trigger do qual depende estiver no estado 'PROBLEM' e, portanto, nenhuma ação dependente será executada e nenhuma notificação será enviada.

Se tanto o server quanto o roteador estiverem indisponíveis e uma dependência entre o trigger "server indisponível" e o trigger "roteador indisponível" estiver definida, o Zabbix não executará ações para o trigger dependente.

Enquanto o trigger pai estiver no estado PROBLEM, seus dependentes poderão reportar valores que não são confiáveis. Portanto, os triggers dependentes não serão reavaliados até que o trigger pai (o roteador, no exemplo acima):

  • volte do estado 'PROBLEM' para o estado 'OK';
  • mude seu estado de 'PROBLEM' para 'UNKNOWN';
  • seja fechado manualmente, por correlação ou com a ajuda das funções date and time e/ou nodata();
  • seja resolvido pelo valor de um item que não esteja envolvido no trigger dependente;
  • seja desabilitado, tenha um item desabilitado ou um host com item desabilitado

Em todos os casos mencionados acima, o trigger dependente (server) será reavaliado somente quando uma nova métrica para ele for recebida. Isso significa que o trigger dependente pode não ser atualizado imediatamente.

Além disso:

  • Uma dependência de trigger pode ser adicionada de qualquer trigger de host para qualquer outro trigger de host, desde que isso não resulte em uma dependência circular.
  • Uma dependência de trigger pode ser adicionada de um template para outro. Se algum trigger do template A depender de algum trigger do template B, o template A só poderá ser vinculado a um host (ou outro template) junto com o template B, mas o template B poderá ser vinculado sozinho a um host (ou outro template).
  • Uma dependência de trigger pode ser adicionada de um trigger de template para um trigger de host. Nesse caso, vincular esse template a um host criará um trigger de host que dependerá do mesmo trigger de template do qual o trigger original dependia. Isso permite, por exemplo, ter um template no qual alguns triggers dependam dos triggers do roteador (host). Todos os hosts vinculados a esse template dependerão desse roteador específico.
  • Uma dependência de trigger não pode ser adicionada de um trigger de host para um trigger de template.
  • Uma dependência de trigger pode ser adicionada de um protótipo de trigger para outro protótipo de trigger (dentro da mesma regra de descoberta de baixo nível) ou para um trigger real. Um protótipo de trigger não pode depender de um protótipo de trigger de uma regra LLD diferente nem de um trigger criado a partir de um protótipo de trigger. Um protótipo de trigger de host não pode depender de um trigger de um template.

Configuração

Para definir uma dependência:

  1. Abra a aba Dependências no formulário de configuração do trigger.

  2. Clique em Adicionar na seção Dependências e selecione um ou mais triggers dos quais o trigger dependerá.

  3. Clique em Atualizar.

Agora o trigger terá a indicação de sua dependência na lista.

Exemplo de várias dependências

Por exemplo, o Host está atrás do Router2 e o Router2 está atrás do Router1.

Zabbix - Router1 - Router2 - Host

Se o Router1 estiver inativo, então obviamente o Host e o Router2 também estarão inacessíveis, mas receber três notificações informando que o Host, o Router1 e o Router2 estão todos inativos é excessivo.

Portanto, neste caso, definimos duas dependências:

o trigger 'Host is down' depende do trigger 'Router2 is down'
o trigger 'Router2 is down' depende do trigger 'Router1 is down'

Antes de alterar o status do trigger 'Host is down', o Zabbix verificará as dependências correspondentes do trigger. Se forem encontradas e um desses triggers estiver no estado 'Problem', então o status do trigger não será alterado, as ações não serão executadas e nenhuma notificação será enviada.

O Zabbix realiza essa verificação recursivamente. Se o Router1 ou o Router2 estiver inacessível, o trigger do Host não será atualizado.