Uma das ferramentas mais esquecidas no Windows é o Perfmon, também conhecido como monitor de desempenho. Este utilitário tem muitas habilidades esquecidas, um deles é a capacidade de alertar sobre várias condições métricas. Neste post, exploramos como usar adequadamente o recurso de alerta do Perfmon com alto uso de CPU.
O que é Perfmon?
Disponível desde os primeiros dias do Windows em várias iterações, O Monitor de desempenho está habilitado como um snap-in do MMC para Windows com o objetivo de ajudar a monitorar o uso do sistema e várias métricas de desempenho. A visualização padrão na inicialização destaca algumas áreas e métricas diferentes em tempo real.
- Monitor de desempenho – Visualizando métricas em tempo real
- Conjuntos de coletores de dados – Defina a coleta de dados em um intervalo de tempo especificado
- Relatórios – Como visualizar dados coletados em conjuntos de coletores de dados
Se o Monitor de desempenho não iniciar como administrador, sua utilidade será limitada e você pode não ver os conjuntos de coletores de dados ou relatórios.
Visualizando métricas
Ao clicar pela primeira vez no Monitor de desempenho, ele irá mostrar-lhe um gráfico de linha móvel que por padrão é %Processor Time
. Esse, por si só, não é muito útil, pois os dados são um valor variável e realmente queremos saber se existem condições adversas.
Você pode adicionar métricas adicionais a este gráfico, clicando no sinal de mais verde e adicionando mais métricas. Observe que a escala de valores pode não corresponder entre diferentes pontos de dados e, por isso, pode ser menos útil quando combinado em um único gráfico.
Conjuntos de coletores de dados
Dados em tempo real são úteis, mas não são o que buscamos. Então, Como alertamos sobre certas condições, nesta circunstância, alto uso de CPU sustentado ao longo do tempo?
É aqui que entram os conjuntos de coletores de dados. Depois de expandir os conjuntos de coletores de dados, clique com o botão direito em Definido pelo usuário → Novo → Conjunto de coletores de dados.
Será apresentada a você a opção de nomear o conjunto e se deseja criar o conjunto a partir de um modelo ou criar o conjunto manualmente. Nesta circunstância, precisamos criar manualmente nossa configuração.
Nesta circunstância, estamos configurando um Alerta de contador de desempenho. Isso monitorará um determinado contador e, mais tarde, podemos dizer ao alerta para realizar certas ações.
Uma vez que buscamos monitorar a porcentagem total de CPU, é mais importante selecionar a métrica correta para monitorar. Aqui nós estamos escolhendo Processador → _Total Clicando “Agregar >>” ao lado da instância selecionada.
Um obstáculo é que você obtém todos os Processador _Total Métricas. Em última instância, nós só queremos Processor(_Total)% Processor Time
métrico. Para remover os outros, selecione cada um e clique no botão Remover.
Infelizmente, a maneira como a remoção funciona, você não pode simplesmente clicar no botão Remover várias vezes, uma vez que move o item selecionado para o topo a cada vez. Selecione cada métrica individualmente e clique em Remover.
Agora precisamos dizer ao contador de desempenho em que ponto o alerta deve começar e, nesta circunstância, queremos que seja ativado apenas quando estiver ativo 95
.
Por último, salvar e fechar o conjunto de coletores de dados.
Configurar alertas
Com nossas configurações padrão fora do caminho, Devemos agora configurar qual Ação de Alerta será realizada. Existem duas alternativas para configurar alertas, Ação de alerta e tarefa de alerta. Selecione seu Definido pelo usuário → Alto uso da CPU conjunto de coletores de dados, clique com o botão direito DataCollector01
entrada e escolha Propriedades.
A maneira mais fácil de começar a monitorar tickets é navegar até a guia Alert Action e clicar na caixa de seleção para “Registrar uma entrada no log de eventos do aplicativo”. Além disso, você tem a opção conveniente de iniciar um conjunto diferente de coletores de dados quando os critérios para um alerta forem atendidos.. Desta maneira, pode coletar registros adicionais conforme necessário. Apesar disto, aqui vamos apenas registrar uma entrada.
Configure uma tarefa de alerta
Tudo isso está bem, mas no final das contas, não estamos recebendo um alerta real nesta circunstância, apenas uma nova entrada no log de eventos. Na guia Tarefa de Alerta, podemos dizer a este coletor de dados para iniciar uma tarefa agendada e enviar alguns parâmetros, que pode posteriormente realizar as ações de alerta que desejamos. Para que isso funcione, devemos fazer duas coisas. Crie o script a ser executado e a própria tarefa agendada.
Script de registro
Abaixo está um script de registro muito simples. Lemos as métricas de alerta geradas pela tarefa de alerta e enviamos esses resultados para um arquivo de log.
HighCPUAlert.ps1
$Date = $args[0]
$Threshold = $args[1]
$Counter = $args[2]
$Value = "[{0}] {1} {2} | {3}" -F $Date, 'High CPU', $Threshold, $Counter
Add-Content -Value $Value -Path 'C:HighCPUAlert.log'
Tarefa agendada
Aqui, precisamos criar a tarefa agendada que irá realmente executar o script quando o coletor de dados o invocar. Estamos usando o PowerShell para criar a tarefa agendada e usando o PowerShell 7 como tempo de execução, como indicado pelo pwsh.exe
executável.
$Params = @{
"Action" = New-ScheduledTaskAction -Execute "pwsh.exe" -Argument "-NoProfile -File C:HighCPUAlert.ps1 $(Arg0)"
"Principal" = New-ScheduledTaskPrincipal -UserId "LOCALSERVICE" -LogonType ServiceAccount
"Settings" = New-ScheduledTaskSettingsSet
}
New-ScheduledTask @Params | Register-ScheduledTask 'HighCPUAlert'
Até PowerShell 7 se lance formalmente, o executável pode ser pwsh-preview.exe
.
Configurações de tarefa de alerta
Em conclusão, precisamos configurar a tarefa de alerta no coletor de dados. Para fazer isso, navegue novamente para as propriedades de DataCollector01
e insira os seguintes detalhes.
Citamos os argumentos da tarefa porque eles vêm como strings do PowerShell. Por isso, citando-os, nós facilitamos a separação dos argumentos por índice, Em outras palavras
$arg[0]
o$arg[1]
.
Depois de clicar em salvar, você pode ser solicitado a fornecer uma credencial, deve ser um usuário com acesso de administrador.
Executando o coletor de dados
Clicar com o botão direito no conjunto de coletores de dados, alto uso da CPU e escolha Começar, o procedimento de coleta começará. Se você monitorar tarefas agendadas, você verá que a tarefa agendada recém-criada é executada periodicamente com base no intervalo de monitoramento e limite definido.
conclusão
Por meio do uso de ferramentas de monitoramento integradas do Windows, você pode estruturar algumas soluções de monitoramento úteis e poderosas em torno dos principais utilitários e do PowerShell. Com essa flexibilidade, você será capaz de chegar ao fundo de quase todos os problemas que podem ser diagnosticados por meio da coleta de dados métricos.