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:
- Mantenha o serviço SNMP do Windows em execução e instale o Net-SNMP ao lado dele
- 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