Como posso monitorar se um aplicativo está sendo executado no Windows Server 2008?

3

Somos principalmente uma loja Linux, mas temos um servidor de impressão executando o Windows Server 2008 e usamos um aplicativo chamado Print Helper para imprimir faturas. Eu preciso encontrar uma maneira de verificar se este aplicativo está sendo executado e reiniciá-lo automaticamente se não for.

No Linux, provavelmente faria isso com um script de shell pequeno e um cron job, mas não sei como fazer isso no Windows Server. Estou bastante confiante de que poderia fazê-lo em Perl usando Proc :: Background, mas estou relutante em instalar o Perl apenas para um script, e embora tenha certeza de que isso pode ser feito usando algo como o PowerShell, não é realmente vale a pena uso do meu tempo para aprender PowerShell para uma pequena tarefa. A lista de tarefas parece fazer parte do que eu quero, pois permite que você saiba se um processo específico está sendo executado ou não, mas não tenho certeza de como eu poderia ir de lá para reiniciar automaticamente o aplicativo se ele falhou.

Qualquer ajuda recebida com gratidão!

    
por mattbd 20.10.2011 / 14:30

3 respostas

5

Uau. Acabei de responder uma pergunta diferente.

O que você deve fazer é "daemonizar" o processo do Auxiliar de Impressão usando sc.exe ou srvany.exe (que, acredito, está depreciado). Em seguida, você pode utilizar o serviço interno "Recovery" opções para lidar com eventos de falha (incluindo, acredito, executar um script, enviar uma armadilha snmp, enviar um email e, claro, reiniciar o serviço).

Como indicado:

sc create printhelper binpath= "c:\program files\Print Helper\phelper.exe" start= auto depend= Spooler/lanmanserver DisplayName= "Print Helper"

Isso criará um serviço chamado printerhelper , com um nome de exibição de Print Helper , executando "c:\program files\Print Helper\phelper.exe" automaticamente, com as dependências do spooler de impressão e do serviço Servidor SMB / CIFS, sendo executado como NT AUTHORITY\SYSTEM usuário incorporado.

    
por 20.10.2011 / 14:40
1

Se você estiver usando o Nagios, você pode fazê-lo com o addon NSClient ++.

No servidor de monitoramento, defina um serviço:

define service{
   use                 generic-printer
   host_name           hostname
   service_description appname
   check_command       check_nt!PROCSTATE!-d SHOWALL -l appname.exe
   contact_groups      admin-sms
   event_handler       autostart_appname!hostname
   }

O autostart_appname está definido em commands.cfg :

define command { 
    command_name    autostart_appname
    command_line    $USER1$/eventhandlers/autostart_appname.sh $SERVICESTATE$ $SERVICESTATETYPE$ $SERVICEATTEMPT$ $HOSTADDRESS$
}

O script do manipulador de eventos autostart_appname.sh :

#!/bin/sh

HOSTADDRESS=$4

case "$1" in
OK)
    ;;
WARNING)
    ;;
UNKNOWN)
    ;;
CRITICAL)
    case "$2" in
    SOFT)
    ;;  
    HARD)
        /usr/local/nagios/libexec/check_nrpe -H $HOSTADDRESS -c autostart_appname
        ;;
    esac
    ;;
esac
exit 0

No servidor Windows, defina um comando em NSC.ini :

[NRPE Handlers]
autostart_appname=C:\Program Files\NSClient++\scripts\autostart_appname.cmd

e o script em lote é simples assim:

net start "Application Name"
    
por 20.10.2011 / 14:52
0

Parece que você quer gastar o mínimo de tempo possível nessa tarefa. Todos nós odiamos servidores de impressão igualmente. Usando apenas as preferências incorporadas no Windows, você pode criar um serviço, recuperar automaticamente o serviço e implementar o monitoramento rudimentar do serviço.

Etapa 1 Crie um serviço

(Você pode pular esta etapa se já houver uma entrada de serviço no painel de controle Serviços)

Use sc.exe para criar um novo serviço.

sc.exe create PrintHelper start=auto binPath="C:\<Print Helper Path and Flags>" DisplayName="Print Helper"

Etapa 2 Configure seu serviço

No painel de controle de serviços, clique com o botão direito do mouse em suas novas propriedades de seleção de serviço e escolha a guia Recuperação. Configure conforme necessário.

Há muitas opções aqui, o que fazer na primeira falha, a segunda falha, você pode até mesmo executar outro aplicativo em caso de falha.

Etapa 3 Monitore seu serviço

Configure o Visualizador de Eventos para enviar um email sobre as falhas de eventos específicas do Auxiliar de Impressão (encontre o evento, clique com o botão direito do mouse sobre ele, selecione Anexar Tarefa para este evento).

Ou configure o Serviço para enviar um e-mail em caso de falha, usando um programa externo como mecanismo de recuperação.

Aviso de isenção

É claro que recomendo usar algo como nagios ou SCOM para uma solução de monitoramento real. Mas esse é um problema inteiramente novo em si.

    
por 20.10.2011 / 15:16