Opções de recuperação para serviços do Windows com status incorreto

2

Eu sou compatível com um aplicativo que usa dois serviços do Windows para executar duas tarefas muito diferentes. Um controla execuções programadas de um aplicativo, um é executado continuamente escutando mensagens HL7 sendo transmitidas em uma porta específica. Ambos têm uma propensão a falhar. Nós identificamos que conexões com falha para servidores de banco de dados, compartilhamentos de rede e similares são as prováveis culpadas das falhas e os serviços, na maioria das vezes, reiniciados sem nenhum problema. O problema é que, às vezes, os serviços param de funcionar, mas continuam a exibir um status de 'Executando' no gerenciador de serviços do Windows. e se você usar a consulta de linha de comando do serviço. É somente quando você tenta, de forma proativa, interromper e reiniciar o serviço que percebe que o serviço foi interrompido quando tentar interrompê-lo do console do Service Manager atinge o tempo limite e retorna um serviço genérico "O serviço não está respondendo em tempo hábil". mensagem. Você então tem que matar o thread do processo em que está sendo executado para pará-lo.

Eu gostaria de saber duas coisas: Um: Existe uma maneira de monitorar serviços que poderiam retornar mais informações do que apenas o status relatado do serviço? Aberto a opções de terceiros.

Dois: É possível usar as opções padrão de recuperação de serviço do Windows para fazer uma reinicialização agendada do serviço que funcionaria durante o tempo limite e uma mensagem de erro ao tentar interromper o serviço se ele estivesse no estado de status de registro incorreto?

Desculpas pela palavrinha. Tentando equilibrar tanta informação quanto útil versus cuspir as horas passadas, passei a trabalhar nisso.

    
por Tom Benson 30.01.2018 / 20:20

3 respostas

2

Eu sugeriria definir "reinicialização automática do serviço" nas propriedades do Serviço ou caso o serviço necessário retornasse um evento ao visualizador de eventos. Você pode criar uma tarefa agendada, que será acionada por um ID de evento específico e, em seguida, reiniciar o serviço.

    
por 31.01.2018 / 17:52
1

Portanto, o serviço ainda é relatado como em execução, mas não está entregando as funções normais que devem ser .... Tente usar o monitor de desempenho para ver se um dos contadores process desse serviço fica fora de controle quando ele para operando normalmente. Se você puder encontrar dados de desempenho para indicar que o serviço não é saudável:

  • Muitas ferramentas de terceiros podem ser configuradas para reiniciar o serviço com base em um acionador do contador de desempenho.
  • Você pode configurar um data collector do tipo performance counter alert no perfmon para alternar o serviço quando esse limite for atingido. Esta opção é um gatilho para o cabelo em termos de resposta. Por exemplo, se você quiser esperar que o limite seja excedido por pelo menos um minuto antes de reiniciar o serviço, essa não é uma boa opção. Se isso não for uma preocupação, consulte Como posso monitorar o uso de memória para uma JVM baseada em Windows e disparar um alerta se ficar muito alto?
  • Você também pode monitorar um contador de perf com uma tarefa agendada usando o Powershell e Get-Counter -maxSamples 999 -sampleInterval 999 -counter XXX para contornar a natureza do gatilho de cabelo do primeiro.
por 31.01.2018 / 21:15
0

O Nagios Core é uma ferramenta gratuita que pode ser usada para monitorar serviços do Windows e pode reiniciar automaticamente os serviços que falharem. Eles também têm um produto pago (Nagios XI) que é ótimo para ambientes maiores.

Aqui é onde você pode encontrar o campo e o link de download: link

Um exemplo de uso de um manipulador de eventos para iniciar um processo pode ser encontrado aqui: link

    
por 31.01.2018 / 00:03