Ferramenta de Monitor de Desempenho do Hyper-V em PowerShell
Esse artigo comenta sobre o monitoramento e exibição de desempenho do convidado de VM do Hyper-V em seus hosts do Hyper-V através de scripts em powershell. Ferramenta elaborada e disponibilizada de maneira gratuita por PerfMon permitindo monitorar, memória, E/S de disco e estatísticas de rede, conforme identificados de dentro do convidado. Todos os dados são recuperados somente via recurso WMI, não sendo necessários módulos ou instalação de software, executados a partir de qualquer servidor membro.
Breve descrição
A Ferramenta do Monitor de Desempenho do Hyper-V, escrita em PowerShell, permite reunir e visualizar estatísticas de desempenho da VM, conforme identificados de dentro do Convidado, em cada host Hyper-V descoberto ou adicionado manualmente. Permite configurar o número de amostras a serem coletadas e o intervalo entre elas, selecionando os hosts do Hyper-V e depois pressionando o botão ‘Monitor’. A interface usada é simples e funcional, todas as médias de estatísticas de desempenho são apresentadas através de GridView. Adicionando o parâmetro ‘-PSobjects’ a GUI (Graphic User Interface – Ambiente Gráfico para Usuário) não é utilizada, retornando as saídas através do console (prompt). As próximas telas exibem as saídas através de GridView e pelo console.
- Uso
\ Monitor-HyperVGuestPerformance.ps1
### exporta dados para arquivo .csv via GUI, o padrão é o diretório atual
. \ Monitor-HyperVGuestPerformance.ps1 -ExportToCsv
### recuperar dados com o PSobjects, excelente para análise e registro, parâmetro -name é opcional, o padrão para descoberta automática
. \ Monitor-HyperVGuestPerformance.ps1 -PSobjects
### especifica host e intervalos/amostras manualmente
. \ Monitor-HyperVGuestPerformance.ps1 -Name host1, host2 -PSobjects -Interval 2 -MaxSamples 5
### aceita entrada de pipeline
‘Host1′, ‘Host2′ | \ Monitor-HyperVGuestPerformance.ps1 -PSobjects
### Acessa o servidor SQL com Write-ObjectToSQL , neste exemplo é utilizada a autenticação SQL
. \ Monitor-HyperVGuestPerformance.ps1 –PSobjects | Write-ObjectToSQL –TableName table –Database db -Server server –credential (get-credential)
- Requisitos
- Suporte a PowerShell V3 + – ISE Out-Gridview (não é necessário com -PSobjects) – Credenciais de autenticação válidas quando executadas a partir de máquina remota (limitação Get-Counter)
– Acesso à rede WMI DCOM (Get-WMIObject)
– Um ou mais hosts Hyper-V
- Funcionalidade de script
- Descobre hosts do AD, Cluster ou localmente.
– adiciona hosts manualmente quando eles não podem ser descobertos automaticamente.
– Recupera a configuração do host Hyper-V por meio do WMI.
– Interface fácil de usar.
– Invoca Get-Counter para cada host Hyper-V simultaneamente.
– Processamento paralelo criando um intervalo cada host do Hyper-V.
– Combina e indexa amostras de desempenho de convidados com dados de virtualização Hyper-V WMI do host.
– Combina e adiciona todos os dados ( interfaces CPU/Mem/NIC/Discos KB-IOPS-Fila) para cada VM.
– exibe Volume e ‘VMs’ _Totals no topo.
– Exporte para csv, quando fornecido o parâmetro ‘-ExportToCsv’ para o script
– Mostra os dados de desempenho como vistos dentro do Guest (gerenciador de tarefas).
– Sem impacto no desempenho , o ‘get-counter’ remoto é usado contra o Host do Hyper-V.
– Compatível e testado com o Hyper-V em execução no Windows 10 e no Servidor Nano!.
- Registros de execução
- [17-11-2015] Adicionado suporte a parâmetro de nome e pipeline para adicionar um ou mais hosts manualmente (solicitado em Q / A)
– [17-11-2015] Pesquisa de AD alterada do domínio DC para o domínio GC (solicitado em Q / A)
– [28-11-2015] Adicionado suporte de localização de TP e SMB do Windows Server 2016
– [29-11-2015] Adicionado exportação a CSV (-ExportToCsv)
– [07-12-2015] Amostras de localização refatoradas: vários locais por VM, totais para todos os locais (SMB / LocalDisk / CSV)
– [09-12-2015] Adicionado desmarcar / selecionar todos os botões
– [15-12-2015] Conjuntos de parâmetros construídos e funcionalidade detalhada de ajuda
– [15-12-2015] Uma conexão / gerenciamento de acesso a um host de erro dded, um novo código de script ajustado novamente e comentários colocados
– [20-12-2015]Funcionalidade dded ‘Adicionar host’ na GUI, forma enriquecida com comentários e layout mais agradável
– [05-01-2016] Corrigidos problemas com contadores no Windows 10. VMs rodando no Windows 10 com Hyper-V agora são suportadas!
– [08-01-2016] Também foi adicionada a leitura / gravação de IOPS e a duração da fila de disco conforme solicitado em Q / A!
– [09-06-2016] O suporte do MAS, traduz o VM GUid para o nome da VM, mostra Resourcegroup, SubscriptionID e Region.
– [09-06-2016] Corrigido um problema em que hosts remotos do Azure Stack não podiam ser consultados corretamente.
– [26-10-2016] Suporte a Contêineres Hyper-V! O disco agora está associado ao contêiner e os contêineres individuais são identificados.
- Atividades a executar
- Battle Hardened Performance Testing.
– _Total por servidor Hyper-V (alternativa atm é selecionar um servidor Hyper-V e ler o ‘_Total (_VMs)’.
– ‘Suporte a Hyper-V Containers, novas classes de namespace de virtualização de contêineres.
– Adicionar suporte para o Azid Stack VM Guid para Name.
– otimizar o desempenho das consultas do ADSI GC com mais de 100 contas de computador no AD.
- Descrição resumida da ferramenta
Monitora e visualizar o desempenho de VMs (convidados) Hyper-V em tempo real em seus hosts Hyper-V. Ferramenta disponibilizada de maneira gratuita para monitorar as estatísticas de CPU, memória, E/S de disco e rede, conforme identificado de dentro do convidado. Todos os dados de monitoramento são recuperados somente por meio do recurso WMI, a descoberta do Host do AD Hyper-V via ADSI tradicional, sem necessidade de módulos ou softwares, podendo ser executada em qualquer servidor membro.
Após coletar todas as informações do host, a função ‘Get-VMGuestSamples’ dos scripts abrem uma pequena janela de espaço de execução do PowerShell e criam uma tarefa de espaço de execução local executando o cmdlet ‘Get-Counter’ para cada host do Hyper-V encontrado. Finalmente, um relatório de gridview será apresentado com uma visão geral de todas as métricas de recursos associadas e da VM, além de ‘_totals’ para todos os locais de recursos de disco e VMs combinados. Cada métrica representa os dados de desempenho de dentro do próprio convidado, a CPU é a média real da porcentagem total de uso da CPU usada na VM. O mesmo se aplica às métricas de E/S de disco e NIC (enviadas/recebidas) que representam a soma total de todos os discos/interfaces combinadas para cada VM. Informando o parâmetro ‘-ExportToCsv’ permite exportar os dados para um arquivo csv ou o ‘-PSobjects’
- Resultados dos comportamentos do script
Parâmetro Gridview ativado(padrão)
Copia de arquivos pela Rede de uma VM para outra VM
Com IOPS de disco e contadores de comprimento de fila atualizados
Usando -PSobjetos com filtragem de PS e classificação em VMs atingindo mais de 50% de CPU no sistema operacional convidado
Usando -PSobjects usando -Interval e -MaxSamples, filtre em DiskRead -gt 1000 Kb e filtre o out of the’_Total’s ‘
- Pequeno comparativo entre Hyper-V VM PerfMon e o Measure-VM
É possível utilizar o ‘measure-vm’ para medir métricas para a máquina virtual. Ele fica incorporado no módulo Hyper-V para obter a medição e utilização da VM fora da VM convidada para fins de faturamento ou consumo de recursos. A diferença entre ‘measure-vm’ e esta ferramenta é a seguinte, podendo conhecer mais clicando aqui.
Powershell
#requires -Version 3
<#
.NOTAS
Nome do arquivo: Monitor-HyperVGuestPerformance.ps1
Versão: 0,95
Autor: Ruud Borst - ruud@ruudborst.nl
Revisor: Darryl van der Peijl - darrylvanderpeijl@outlook.com
Requer: PowerShell V3 +
.Link
http://www.ruudborst.nl
.Link
https://gallery.technet.microsoft.com/Show-Hyper-V-Virtual-652fdd54
.SINOPSE
Essa ferramenta de monitoramento do Desempenho do convidado da VM do Hyper-V baseada em GUI coleta, processa estatísticas de desempenho do convidado da VM em um período de tempo especificado a partir de hosts Hyper-V descobertos ou especificados.
.DESCRIÇÃO
Recuperar, exibir ou exportar estatísticas de desempenho de VM do Hyper-V Guest em tempo real. Essa ferramenta baseada em GUI recupera estatísticas de cpu, memória, disco de i / o e rede de dentro do guest.
Todas as informações são recuperadas via WMI e ADSI, sem necessidade de módulos, executadas em qualquer domínio ou servidor associado ao cluster.
Depois de coletar todas as informações do host, o script abre um PowerShell runspacepool e cria um job de espaço de execução local que executa 'get-counter' para cada host do Hyper-V encontrado.
Finalmente, uma saída de gridview será apresentada com uma visão geral de todas as VMs e contadores associados, além de todos os _totals na plataforma.
Cada contador representa os dados de desempenho de dentro do próprio convidado, a CPU é o uso total real da CPU na VM.
O mesmo se aplica aos valores de disco e rede que eles representam a soma total de todos os discos / interfaces combinados.
Especifique o parâmetro '-ExportToCsv' para exportar as estatísticas para o arquivo e -PSobjects para retornar todos os objetos no console para processamento adicional.
Todas as informações são recuperadas via WMI, ADSI é usado para consultas de catálogo global. Não é necessário nenhum módulo, o script pode ser executado em qualquer domínio ou servidor membro associado ao cluster.
.Nome do parâmetro
Insira um ou mais Hosts do Hyper-V para coletar Estatísticas de Desempenho de Convidado da VM, usadas com o parâmetro '-PSobjects'.
.PARAMETER ExportToCsv
Forneça este parâmetro de opção sem valor para exportar os dados para CSV.
.PARAMETER ExportToCSVPath
Digite o caminho do diretório para exportar o arquivo CSV, o padrão é o diretório atual.
.PARAMETER PSobjects
Use este parâmetro para retornar PSobjects como saída, a GUI não é usada, portanto, o parâmetro '-Name' é necessário para inserir os hosts do Hyper-V manualmente.
.PARAMETER MaxSamples
Digite o número de amostras a serem tomadas, o padrão é 1.
Intervalo PARAMETER
Digite o intervalo a aguardar entre as amostras, o padrão é 1.
.EXEMPLO
\ Monitor-HyperVGuestPerformance.ps1
Executa a GUI por padrão com amostras configuráveis, intervalo e selecione ou adicione hosts do Hyper-V.
.EXEMPLO
\ Monitor-HyperVGuestPerformance.ps1 -PSobjects
Retorna PSobjects como saída, em vez de executar a GUI.
Ótimo para análise e registro, o parâmetro -name é opcional, o padrão é a descoberta automática de hosts.
.EXEMPLO
\ Monitor-HyperVGuestPerformance.ps1 -Interval 2 -MaxSamples 5 -PSobjetos
Os parâmetros '-Interval' e '-Maxsamples' são opcionais e padrão para 1 quando não especificados.
#>
Considerações finais:
É um script/ferramenta do PowerShell elaborado por um profissional gabaritado, disponibilizado livremente através do Social TechNet podendo ser adaptado conforme a necessidade. O autor ainda se compromete a melhorar regularmente o script e aguarda comentários pertinentes para mais implementações.
O script está disponível aqui : { Monitor-HyperVPerformance }
PLEASE NOTE: if you need technical support or have any sales or technical question, don't use comments. Instead open a TICKET here: https://www.iperiusbackup.com/contact.aspx
**********************************************************************************
PLEASE NOTE: if you need technical support or have any sales or technical question, don't use comments. Instead open a TICKET here: https://www.iperiusbackup.com/contact.aspx
*****************************************