main_titleFerramenta de Monitor de Desempenho do Hyper-V em PowerShell

hyperv_smallwindowEsse 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)
gridview_enable

Copia de arquivos pela Rede de uma VM para outra VM

Com IOPS de disco e contadores de comprimento de fila atualizados
statisticsperformonitor

Usando -PSobjetos com filtragem de PS e classificação em VMs atingindo mais de 50% de CPU no sistema operacional convidadohyperv_monitor1

Usando -PSobjects usando -Interval e -MaxSamples, filtre em DiskRead -gt 1000 Kb e filtre o out of the’_Total’s ‘hyperv_monitor2

  • 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.

compare_table-vm

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 }



Ferramenta de Monitor de Desempenho do Hyper-V em PowerShell
Iperius Backup Brasil
*****************************************

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

*****************************************

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*****************************************

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

*****************************************