Como posso executar uma ação em hosts em que um determinado disparador já é “verdadeiro?”

1

Configuração: Zabbix 2.4 | RHEL 6.4

Estou configurando um método para permitir que os serviços do Zabbix Agentd atualizem automaticamente seus próprios binários quando um acionador é acionado (usando o Git como embarcação). Dois gatilhos estão em vigor:

  1. Gatilho 1: "O repositório do Git não existe" - Certifique-se de que existe um repositório git no local onde os binários do Zabbix Agentd estão armazenados.
    uma. %código%
  2. Disparador 2: "A versão do Agente do Zabbix está incorreta." - Disparar se o agente não for a versão esperada e compilada. Isso é definido como uma macro de usuário.
    uma. {Template App Zabbix Agent:vfs.file.exists[/opt/zabbix/.git/config].last()}=0
    b. {Template App Zabbix Agent:vfs.file.cksum[/opt/zabbix/sbin/zabbix_agentd].last()}<>{$LATESTAGENT} é o valor $LATESTAGENT do binário zabbix_agentd compilado.
    c. Dependente do gatilho 1

O gatilho 1 apenas garante que, se o Trigger 2 disparar, o agente poderá executar um comando remoto para executar um git pull e buscar os binários mais recentes.

Situação atual

Os gatilhos funcionam bem e mostram meus sistemas onde as versões do agente não se alinham. Desde então, eu configurei algumas ações para ir com eles para fazer o trabalho sujo.

  1. Acionador 1 > Execute cksum() no caminho de instalação do Zabbix Agentd.
  2. Disparador 2 > Execute git init para obter as últimas posições.

Estes são apenas Scripts Globais que criei, por isso pude testar manualmente se funcionam ao clicar em qualquer host e selecionar o script apropriado para o host.

O problema

Como criei os gatilhos primeiro, eles já estão "acionados". no entanto, agora que tenho ações com esses gatilhos, gostaria que esses gatilhos "reativassem" (ou reinicializassem ou reativassem novamente) para permitir que as ações fizessem as coisas deles. Infelizmente, não consigo encontrar uma maneira de fazer isso. Concentrando-me no Trigger 1 (git repo exists), tentei limpar o histórico nessa git pull origin master key, mas isso não afetou o estado do trigger. Já vi algumas pessoas mencionarem algum trabalho de SQL ou API para modificar manualmente o estado do acionador, mas parece que deveria haver algo muito mais simples que isso!

Resumo

  • Disparadores criados para implantar binários atualizados do Zabbix Agentd.
  • Ações criadas para usar gatilhos.
  • Não é possível executar ações em acionadores que já são "verdadeiros"

Alguém tem alguma ideia de como eu poderia fazer com que meus gatilhos "acionassem novamente" para permitir que as ações fizessem as coisas deles? Obrigado por qualquer ajuda sobre isso!

Advertências

    As ferramentas do
  • System CM (por exemplo, Puppet) não são uma opção. Eu preciso fazer isso dentro do Zabbix e do Git.
  • As soluções do Cron estão fora. Toneladas de servidores estão em jogo, portanto, gerenciar esses cron jobs e alterações (novamente, nenhuma ferramenta sysCM) seria um pesadelo manual.
por BrM13 09.04.2015 / 21:33

1 resposta

2

Como solução alternativa, você pode alterar temporariamente o gatilho para "Geração de vários eventos PROBLEM", aguardar até que todas as ações necessárias sejam executadas e, em seguida, voltar.

    
por 10.04.2015 / 08:19