Monitorando software sob medida com o Zenoss

3

Temos muitos aplicativos de back-end que precisamos monitorar o desempenho de (métricas como pedidos aguardando para serem processados, tempo desde a última execução, etc.). Atualmente, isso é feito por um aplicativo de monitoramento interno que aciona os e-mails sempre que um limite é excedido, mas não há como confirmar um problema e silenciar esses alertas.

Em vez de criar nosso próprio sistema de alerta completo, gostaríamos de conectar à instalação do Zenoss que usamos para monitorar nossos servidores. Eu encontrei alguns poucos artigos na criação de eventos programaticamente, mas eu ' Em vez disso, o próprio Zenoss monitora os valores que o aplicativo de watchdog atual está observando (assim, também obtemos os benefícios da representação gráfica e do histórico).

É possível, então, fornecer programaticamente um feed de dados (em vez de um evento) para o Zenoss? Ou há outra maneira de fazer isso?

    
por Andy S 20.06.2011 / 11:43

2 respostas

5

A solução mais limpa, IMHO, é deixar o aplicativo fornecer informações via SNMP.

Depois, você pode monitorá-lo usando qualquer software que fale SNMP, incluindo, mas não limitado a Zenoss.

Existem várias maneiras de conseguir isso.

Eu mesmo fiz isso para alguns aplicativos personalizados:

Os aplicativos estavam sendo executados em um servidor Linux, que já executava o daemon Net-SNMP. Então eu escrevi um plugin para Net-SNMP (apenas um pequeno script Perl), que consultou os valores do aplicativo e o reportou ao Net-SNMP.

Eu usei o mecanismo exec do Net-SNMP para executá-lo ( link ). Basicamente você acabou de colocar

exec  [MIBOID] NAME PROG ARGS

no snmpd.conf . Em seguida, o Net-SNMP irá invocar seu script e relatar seus resultados de volta via SNMP. Seu script só precisa imprimir o (s) resultado (s) no stdout (um por linha se ele relata múltiplos valores), caso contrário ele não precisa fazer nada específico. Observação: Usar exec agora está obsoleto em favor de extend , mas o princípio é o mesmo.

Existem outros mecanismos de extensão mais poderosos (você pode escrever um plugin em Perl, ou um módulo dinâmico em C, ...), mas este é um bom lugar para começar.

Outros daemons SNMP terão mecanismo de extensão semelhante, isso depende apenas do que você está usando atualmente no servidor em que seu aplicativo é executado.

Além disso, existe um protocolo especial chamado AgentX para permitir que um aplicativo sirva como um "subagente" ( isto é, relatar dados para o daemon SNMP principal em um sistema). Você pode até mesmo implementar um subagente no seu aplicativo.

Em suma, existem muitas maneiras de obter relatórios de dados via SNMP; basta escolher a solução mais simples e, em seguida, estendê-la quando for necessário. De qualquer forma, você obtém uma solução extensível baseada em padrões, em vez de e-mails ad-hoc.

Editar:

Para fazer isso no MS Windows:

Uma possibilidade (pode haver outros, não sei) é instalar o Net-SNMP no Windows (eles têm uma versão do Windows). Você realmente tem duas opções:

  1. Mantenha o serviço SNMP do Windows em execução e instale o Net-SNMP ao lado dele
  2. Desative o serviço SNMP do Windows e execute o Net-SNMP

Na opção 1, você precisará permitir que o serviço SNMP do Windows use uma porta não padrão e solicitar o proxy do agente Net-SNMP. Na opção 2, o agente Net-SNMP carregará diretamente as DLLs que o agente do Windows usaria se fosse executado. Assim, em ambos os casos, você ainda deve obter as informações específicas do MS fornecidas pelo agente do Windows. Ambas as abordagens têm algumas desvantagens; veja o README.win32 para detalhes.

Uma vez que você tenha o Net-SNMP rodando, você pode usar toda a sua funcionalidade de extensão, como no Linux (veja acima).

Você também pode estender o agente SNMP do Windows diretamente (sem usar o Net-SNMP), mas não sei muito sobre isso. Existe uma "API do Windows SNMP", que aparentemente é uma forma: link

    
por 20.06.2011 / 13:04
0

Eu escrevi um artigo sobre algumas opções para o "monitoramento de processos" com o Zenoss - link .

Não muito mudou desde então, a não ser que o monitoramento do processo Zenoss embutido é um pouco menos peculiar e mais confiável. Ele discute várias maneiras, incluindo o uso do daemon net-snmp (que, por acaso, também está disponível para o Windows). Ele também discute a execução de scripts usando o ssh. De qualquer forma, você pode representar graficamente os dados coletados, além de alertar sobre os limites.

Felicidades, Jane

    
por 21.06.2011 / 09:57