Primeiro, uma breve explicação:
Usando o Zabbix para monitoramento do sistema, estou tentando entender se/como ele pode ser usado para executar tarefas importantes e agendadas para as quais preciso de um valor OK/PROBLEM relatado (por exemplo: via e-mail).
Já utilizo um script customizado, chamado por cron
, para reportar erros na execução do programa. No entanto, essa abordagem está aberta a ser "inundada" por uma tarefa agendada de repetição rápida, mas com falha. O que eu realmente quero é ser notificado sobre uma "mudança de borda" - ou seja: de execuções normais (OK) para com falha (PROBLEMA), e vice-versa.
A partir daqui, tive a ideia de experimentar o Monit - e funciona muito bem. No entanto, já tendo o Zabbix implantado, eu gostaria de evitar o uso de outras ferramentas se eu puder razoavelmente atingir meu objetivo usando a configuração existente.
OK, de volta ao problema principal:
Das minhas pesquisas/testes, a abordagem básica é tratar a tarefa a ser executada como uma verificação/consulta de dados recorrente. Existem duas possibilidades:
- configure uma verificação SSH para executar o comando;
- estendendo o agente Zabbix com o comando específico a ser executado.
A primeira abordagem requer um login para cada execução de comando, o que tende a "poluir" os logs com entradas desnecessárias, então eu sugiro a segunda abordagem. Dito isto, ambos os métodos têm um problema significativo: eles apenas capturam a saída do comando, não capturando o valor de saída do comando
Então, minhas perguntas são:
- alguém sabe como capturar o valor de saída do comando? Nota: Eu gostaria de evitar scripts de wrapper.
- alguém está usando uma abordagem semelhante? Se sim, você tem algum feedback?
- devo simplesmente "renunciar" para usar o Monit?
Em geral, o Zabbix não é um agendador de tarefas - Rundeck, Ansible/AWX ou outra solução pode ser mais adequado. Dito isso, ainda é possível usar o Zabbix para isso, principalmente se for uma tarefa pontual.
A solução para sua preocupação com o código de saída é usar um script wrapper. Faça esse script capturar a saída, o código de saída e o que mais você precisar (talvez o tempo que levou para executar seu comando). Este script pode enviar todos esses valores para os itens do Zabbix trapper sobre os quais você pode alertar.
Tenha em mente que tarefas de longa duração não devem ser executadas como parâmetros de usuário do Zabbix diretamente. Se o seu comando puder ser executado por mais de alguns segundos, execute-o com
atd
ou com uma abordagem semelhante.Os tempos limite padrão são:
Max é de 30 segundos, mas você realmente não deve aumentar os padrões.