Como configuro o zabbix para adicionar contêineres dinamicamente e monitorá-los em servidores que possuem agentes?

3

Estou lutando para descobrir e monitorar contêineres dinâmicos (ou seja, mover) em vários servidores físicos e associar os resultados ao serviço de contêiner, não ao servidor no qual o agente que o executa está sendo executado.

Eu tenho 2 servidores: A e B; Eu tenho um contêiner: C. C pode ser executado em A ou B, meu mecanismo de orquestração (Swarm, Kubernetes, Rancher, etc.) é responsável por garantir que ele seja executado em pelo menos um lugar.

Eu tenho um agente zabbix em A e B, então eu posso monitorar CPU, sistema de arquivos, memória, todas as coisas usuais.

Eu quero monitorar duas coisas:

  1. Disponibilidade de C. Eu não ligo para onde, mas quero saber se está funcionando.
  2. Verificações de processos dentro de C. Eu tenho um script que verifica o status.

Como configuro o Zabbix e os agentes para relatar o estado de C e seus processos, independentemente de onde ele está sendo executado?

Minhas suposições são:

  1. eu trato C como host, em vez de A ou B.
  2. Eu atribuo a descoberta de processos dentro de C e seu estado como Itens de C.

Minhas perguntas são:

  1. Como defino C para ser descoberto automaticamente como um host de A ou B? Eu posso usar meu próprio script ou link com filtros para pegar somente os contêineres que me interessam.
  2. Como defino a verificação do processo para ser executada nos agentes A e B?

Em suma, como configurá-lo para executar a detecção automática de contêiner como host e, em seguida, processar a verificação de cada um deles, de modo que eles sejam executados em todos os servidores com um agente em um determinado grupo / padrão. a saída para o contêiner C em vez do servidor A ou B no qual o agente está sendo executado?

EDIT: Graças ao primeiro socorrista, recebo a idéia de "meta-host". Mas isso cria novos problemas:

  1. Como eu crio um "host-host" C se eu tiver que adicionar um IP quando eu o criar? Pode ser o IP de A ou B!
  2. Como faço para criar automaticamente o C por descoberta, com base em regras?
  3. Como o Zabbix tenta dizer a cada um dos A e B, "execute esses testes", como saber se deve pedir A para executá-los ou B para executá-los?

Isso seria muito mais fácil se eu pudesse simplesmente dizer "execute a descoberta em todos os hosts no grupo 'Docker'", que descobriria todos os contêineres C (e D, etc.) e os adicionaria como hosts. Em seguida, diga também "executar script de verificação de processos em todos os contêineres que foram descobertos automaticamente", talvez sabendo qual agente atualmente tem acesso ao contêiner (ou seja, onde está sendo executado agora).

Estou começando a sentir cada vez mais que o Zabbix é ótimo para monitorar aplicativos que estão ligados a um servidor específico, e menos ainda para monitorar aplicativos que se movem por aí? Ou eu estou entendendo errado?

    
por deitch 03.02.2016 / 09:42

1 resposta

2

Aviso: Sou o autor do link

Configure o Monitoramento do Zabbix-Docker padrão em A e B.

Edite o modelo do Docker - filtre o contêiner descoberto conforme necessário + remova os protótipos do acionador.

Crie novos itens calculados, que agregarão cada item relacionado a C de A e B em novos itens calculados em C (você pode criar C "metahost" no Zabbix) - configurar novos gatilhos em cima dessas novas métricas C. / p>

Atualização: Use itens calculados para agregação - por exemplo, agregar sum(docker.up[cid]) de A e B - a condição de acionamento para "Contêiner cid não está em execução" será sum(docker.up[cid])<1 . Pls leu o Zabbix doc para a sintaxe correta.

O LLD descobre onde seu contêiner está em execução e atualizará os itens / acionadores de acordo. Se você quiser eliminar alertas falsos, não se esqueça de ajustar os tempos de LLD / acionadores.

    
por 03.02.2016 / 18:13