Script de shell que monitora o uso da CPU e finaliza serviços com alta utilização da CPU

1

Temos um servidor Windows 2003 em que três serviços estão sendo executados constantemente. Às vezes, esses serviços consomem mais de 90% da CPU. Reiniciar esses serviços retorna a normalidade. Eu preciso de um script / programa que monitore constantemente o uso da CPU e, se o uso for alto, reinicie esses serviços.

Após um pouco de pesquisa, encontrei este script para monitorar o uso da CPU de Technet .

Script para monitorar o uso da CPU:

(get-counter -Counter "\Processor(_Total)\% Processor Time"
-SampleInterval 1 -MaxSamples 10 |
    select -ExpandProperty countersamples | select -ExpandProperty
cookedvalue | Measure-Object -Average).average

Isso monitora o uso da CPU por 10 segundos e exibe a saída média.

Também em Stack Estouro e Falha do servidor Eu encontrei os scripts para reiniciar os serviços do Windows. ( Qual é o melhor? )

Agora, tudo o que preciso é que o script de uso da CPU chame os scripts de reinicialização do serviço quando a condição desse uso for > 90%. Qualquer ajuda seria apreciada.

    
por Gh0sT 01.04.2013 / 07:55

2 respostas

4

Apenas para registro ... está a resposta :

$cpuutil=(get-counter -Counter "\Processor(_Total)\% Processor Time" -SampleInterval 1 -MaxSamples 5 |
    select -ExpandProperty countersamples | select -ExpandProperty cookedvalue | Measure-Object -Average).average

If ($cpuutil -ge 90)
{Restart-Service MyService1, "My Service2", MyService3}
Else
{Exit}

O Powershell realmente torna a vida mais simples!

    
por 08.05.2013 / 05:52
0

Se uma solução comercial estiver correta, confira nosso Service Protector . Ele cuidará de qualquer serviço do Windows e o reinicializará se ele sobrecarregar a CPU por muito tempo.

    
por 01.04.2013 / 14:31