Como monitorizar os serviços do Windows [fechado]
eu estou procurando uma maneira de monitorar determinados serviços do Windows (no Windows Server 2003) e a reiniciar, se necessárioy. Os serviços estão em servidores diferentes, e incluem, principalmente, os serviços do SQL Server (por exemplo, SQL Server Agent), mas também alguns serviços proprietários.
alertas de E-mail enviados se um serviço parou também seria muito útil.
8 answers
Uma versão" pode ser suficiente " disto é incorporada no Windows. Veja a página" recuperação " das propriedades do serviço, como disponível via services.msc
.
Podes agir em caso de falha de serviço com:
- "reiniciar o serviço"
- "Run a Progam"
- "reiniciar o computador"
"Executar um programa" pode ser um pequeno script que envia um e-mail, por exemplo.
Se você quer uma solução maior com um painel de visão geral e tudo, há uma abundância de monitoramento do sistema solucao. Por exemplo, SolarWinds IPMonitor vem à mente, ou Nagios, ou cactos.
Se estiver interessado em alguma programação . net, o sistema .ServiceProcess oferece classes que lhe permitem implementar, instalar e controlar aplicações de serviço Windows.
Exemplo simples: verificar e iniciar um serviço em C#:
var srv = new ServiceController("MyService");
Console.WriteLine("MyService Status {0}", srv.Status);
if (srv.Status != ServiceControllerStatus.Running)
srv.Start();
wmic /node:[hostname] service list
É capaz de listar os Serviços de qualquer computador
WMIC SERVICE where caption='TELNET' CALL STARTSERVICE
Reiniciaria o serviço de telnet.
Se encapsular o wmic numa linguagem de script (capaz de enviar e-mail), poderá ter a ferramenta de monitorização que procura.
Isto depende exactamente do que queres monitorizar:
- um serviço parou efectivamente no que diz respeito ao Gestor de controlo do serviço (SCM).
- um serviço despenhou - se sem que o SCM estivesse ciente-isto é muito comum devido à roscagem. [[4] um serviço foi suspenso sem que o SCM estivesse ciente - também muito comum.
Para o primeiro item, poderá configurar o serviço para iniciar um programa que envia um alerta de E-mail. Note que isto pode ser muito irritante se o serviço continua a reiniciar devido a circunstâncias fora de seu controle (dependência de uma conexão de rede instável, ou o que quer que).
Para os outros dois itens, você vai precisar de algum tipo de serviço de batimento cardíaco, que você pode construir ou comprar. Tenha cuidado para ter o monitor do batimento cardíaco a funcionar localmente para os serviços que está a monitorizar porque como escrevi há algum tempo, a rede não é fiável.
Pode usar o Monitor de serviço gratuito do Windows ManageEngine. Usando isto, você pode iniciar/parar os serviços no sistema remoto.
Http://www.manageengine.com/free-windows-service-monitor/free-windows-service-monitor-index.html
+1 para garantir que os Serviços são monitorizados na máquina local.
Algo comoService Hawk pode monitorizar os seus serviços e reiniciá-los se eles devem parar e enviar-lhe um alerta de E-mail. Você também pode considerar agendar reiniciamentos periódicos uma vez que, como mencionado por outro poster, o serviço nem sempre aparece como "parado" no que diz respeito ao SCM. Nesses casos, o serviço é pendurado, congelado, ou de outra forma bagunçado e reiniciando o serviço cada de vez em quando, num horário, mantém-no a funcionar limpo. Ele apenas limpa a memória, etc e dá-lhe um novo começo.
Você pode tentar um simples VBScript como este http://themonitoringguy.com/scripts-code/monitoring-windows-services-vbscript/