Serviços do Windows: como agendar e monitorá-los?

3

Temos cerca de uma dúzia de serviços do Windows, tanto desenvolvidos internamente quanto de terceiros, e temos os seguintes requisitos para gerenciá-los:

  • Iniciar / Parar / Devolver um determinado serviço em horários programados do dia, em determinados dias da semana.
  • Opcionalmente, monitore serviços: se um serviço monitorado parar inesperadamente, envie um e-mail de notificação e, opcionalmente, inicie-o.

Esses requisitos parecem bem básicos, mas não encontrei nenhuma maneira fácil de satisfazê-los com recursos internos do Windows ou ferramentas de terceiros simples e acessíveis. Certamente isso deve ser um problema resolvido ?! Eu esperava encontrar imediatamente alguma ferramenta de código aberto para fazer exatamente isso.

Um requisito "fantasia" opcional seria:  - Uma consciência da intervenção manual, de modo que a ferramenta não interfira nas ações manuais. por exemplo. Capacidade de parar e iniciar serviços interativamente através da mesma ferramenta que faz o monitoramento e / ou capacidade de notificar a ferramenta de que a intervenção manual está ocorrendo.

Qualquer ideia apreciada.

    
por Daniel Fortunov 08.03.2013 / 09:51

4 respostas

1

Se você deseja parar e iniciar serviços em um agendamento, por que não usar as janelas internas do agendador de tarefas? É perfeitamente capaz de fazer esse tipo de coisa - pode executar um comando e você pode simplesmente usá-lo com trabalhos em lote projetados para iniciar e parar serviços.

Quanto aos serviços de monitoramento - novamente, você pode usar a opção de recuperação no próprio serviço - selecione 'executar um programa' e usá-lo para executar um trabalho em lote que envie uma notificação por email (via algo como blat se você quiser facilitar as coisas) e então reiniciar o serviço.

    
por 08.03.2013 / 13:51
1

As sugestões do RobM e do HopelessN00b são boas se você quiser ficar com as ferramentas do Windows (exceto o envio de e-mails com o blat.exe, que na verdade é um ótimo e-mail smtp de linha de comando).

Como você mencionou o interesse em um utilitário de terceiros, nosso EventSentry Light (gratuito) de monitoramento deve ser capaz de atender a todos os seus recursos. requisitos - com um software livre:

  1. Monitorar serviços : ele o notificará quando um serviço alterar seu status.
  2. Alterar status do serviço: nosso "Agendador de aplicativos" permite programar scripts simples. Nesse caso, você pode utilizar sc.exe para interromper o & iniciar um serviço em horários especificados.
  3. Serviços de controle: você pode especificar um status de serviço desejado e, nesse caso, o EventSentry tentará manter sempre o serviço nesse estado.

A vantagem do agendador de aplicativos é que ele pode capturar a saída dos processos de linha de comando no log de eventos, portanto, se a reinicialização do serviço não funcionar (por qualquer motivo), você poderá receber uma notificação instantaneamente com o toda a saída da linha de comando.

    
por 15.11.2013 / 05:19
0

Para monitoramento: Há um recurso interno, olhe na guia "Recuperação" quando você clica nas propriedades do serviço em services.msc . Você pode "executar um programa" se o serviço falhar, este programa pode ser um script para enviar um email por exemplo. Há também dezenas de soluções de monitoramento de rede que podem monitorar os serviços do Windows, Nagios, PRTG, OpenNMS, entre outros.

    
por 08.03.2013 / 10:58
0

Como sugerido por @RobM, você pode fornecer funcionalidade básica de monitoramento e recuperação através da guia de propriedades de serviço, embora na minha experiência isso tenda a não escalar bem em um grande número de servidores ou serviços e seja mais limitado do que gostaria. Se suas necessidades estão além dessa ferramenta básica, você pode licenciar qualquer número de suítes de monitoramento ou, se o custo for um fator, implementar seus próprios scripts de monitoramento de maneira bastante simples.

Se você tem mais de um fundo * nix, pode achar mais simples usar o SNMP para monitorar e controlar serviços, embora a opção nativa seja o WMI (Windows Management Instrumentation) e a linha de comando WMIC (Comando de Instrumentação de Gerenciamento do Windows) , que é muito poderoso quando você usa o jeito de usá-lo.

Por exemplo ... você pode obter uma listagem dos serviços em um computador de destino com: WMIC /node:[hostname] SERVICE LIST

exiba uma lista de serviços em execução com:

WMIC SERVICE where (state=”running”) GET caption, name, state > services.tsv

e inicie o serviço de telnet com:

WMIC SERVICE where caption='TELNET' CALL STARTSERVICE .

Um pouco de lógica na sua linguagem de script de escolha e você pode enviar alertas por e-mail quando um serviço específico não está em execução, iniciar, interromper ou reiniciar os serviços em uma programação e atender a todos os outros requisitos. O melhor de tudo, é nativo, e a única ferramenta que você precisa é de um CLI do Windows (tanto o cmd quanto o Powershell funcionam) e uma quantidade muito pequena de habilidade de script.

    
por 08.03.2013 / 14:42