Compartilhar via


Gerenciar capturas de pacotes em conjuntos de dimensionamento de máquinas virtuais com o Observador de Rede do Azure usando o PowerShell

A captura de pacotes do Observador de Rede permite que você crie sessões de captura para controlar o tráfego de/para instâncias de conjunto de dimensionamento de máquinas virtuais. Os filtros são fornecidos para a sessão de captura garantir que somente o tráfego que você deseja capturar. A captura de pacote ajuda a diagnosticar problemas de rede de maneiras reativas e proativas. Outros usos incluem a coleta de estatísticas de rede, obter informações sobre as invasões de rede, depurar comunicações entre cliente e servidor e muito mais. A capacidade de disparar remotamente as capturas de pacotes alivia o esforço de executar uma captura de pacotes manualmente nas instâncias do conjunto de dimensionamento de máquinas virtuais desejadas, o que economiza tempo.

Este artigo o guiará durante as tarefas de gerenciamento diferentes que estão atualmente disponíveis para captura de pacote.

Antes de começar

Este artigo pressupõe que você tenha os seguintes recursos:

  • Uma instância do Observador de Rede na região na qual você deseja criar uma captura de pacotes

Importante

A captura de pacotes exige uma extensão de conjunto de dimensionamento de máquinas virtuais AzureNetworkWatcherExtension. Para instalar a extensão em uma VM do Windows, visite Extensão da máquina virtual do Agente do Observador de Rede do Azure para Windows e para a VM do Linux, visite Extensão da máquina virtual do Agente do Observador de Rede do Azure para Linux.

Instalar uma extensão de conjunto de dimensionamento de máquinas virtuais

Etapa 1

$vmss = Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"

Etapa 2

Instalar o networkWatcherAgent no conjunto de dimensionamento de máquinas virtuais ou nas instâncias do conjunto de dimensionamento de máquinas virtuais

Add-AzVmssExtension -VirtualMachineScaleSet $vmss -Name "AzureNetworkWatcherExtension" -Publisher "Microsoft.Azure.NetworkWatcher" -Type "NetworkWatcherAgentWindows" -TypeHandlerVersion "1.4" -AutoUpgradeMinorVersion $True

Update-AzVmss -ResourceGroupName "$resourceGroupName" -Name $virtualMachineScaleSetName -VirtualMachineScaleSet $vmss
Update-AzVmssInstance -ResourceGroupName "$resourceGroupName" -VMScaleSetName $vmss.Name -InstanceId 0
> The `Set-AzVMExtension` cmdlet may take several minutes to complete.

Etapa 3

Para garantir que o agente esteja instalado, siga a Etapa 1

Get-AzVMss -ResourceGroupName $vmss.ResourceGroupName  -VMNScaleSetName $vmss.Name

Iniciar uma captura de pacotes

Quando as etapas anteriores forem concluídas, o agente de captura de pacotes estará instalado no conjunto de dimensionamento de máquinas virtuais.

Etapa 1

A próxima etapa é recuperar a instância do Observador de Rede. Essa variável é passada para o cmdlet New-AzNetworkWatcherPacketCapture na etapa 4.

$networkWatcher = Get-AzNetworkWatcher  | Where {$_.Location -eq "westcentralus" }

Etapa 2

Recupere uma conta de armazenamento. Essa conta de armazenamento é usada para armazenar o arquivo de captura de pacote.

$storageAccount = Get-AzStorageAccount -ResourceGroupName testrg -Name testrgsa123

Etapa 3

Filtros podem ser usados para limitar os dados armazenados por pacote de captura. O exemplo a seguir configura dois filtros. Um filtro coleta o tráfego de saída TCP somente do IP local 10.0.0.3 até as portas de destino 20, 80 e 443. O segundo filtro coleta apenas o tráfego UDP.

$filter1 = New-AzPacketCaptureFilterConfig -Protocol TCP -RemoteIPAddress "1.1.1.1-255.255.255.255" -LocalIPAddress "10.0.0.3" -LocalPort "1-65535" -RemotePort "20;80;443"
$filter2 = New-AzPacketCaptureFilterConfig -Protocol UDP

Observação

Vários filtros podem ser definidos para uma captura de pacote.

Etapa 4

Criar o escopo da captura de pacotes

$s1 = New-AzPacketCaptureScopeConfig -Include "0", "1"

Etapa 5

Execute o cmdlet New-AzNetworkWatcherPacketCaptureV2 para iniciar o processo de captura de pacotes, passando os valores necessários recuperados nas etapas anteriores.


New-AzNetworkWatcherPacketCaptureV2 -NetworkWatcher $networkwatcher -PacketCaptureName $pcName -TargetId $vmss.Id -TargetType "azurevmss" -StorageAccountId $storageAccount.id -Filter $filter1, $filter2

Obter uma captura de pacote

Executando o Get-AzNetworkWatcherPacketCapture cmdlet, recupera o status de uma captura de pacote atualmente em execução ou concluído.

Get-AzNetworkWatcherPacketCapture -NetworkWatcher $networkWatcher -PacketCaptureName "PacketCaptureTest"

O exemplo a seguir é a saída do cmdlet Get-AzNetworkWatcherPacketCapture. O exemplo a seguir é após a conclusão da captura. O valor de PacketCaptureStatus é Parado, com um StopReason de TimeExceeded. Esse valor mostra que a captura de pacote foi bem-sucedida e executou seu tempo.

Name                    : PacketCaptureTest
Id                      : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/NetworkWatcherRG/providers/Microsoft.Network/networkWatcher
                          s/NetworkWatcher_westcentralus/packetCaptures/PacketCaptureTest
Etag                    : W/"4b9a81ed-dc63-472e-869e-96d7166ccb9b"
ProvisioningState       : Succeeded
Target                  : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/testrg/providers/Microsoft.Compute/virtualMachines/testvm1
BytesToCapturePerPacket : 0
TotalBytesPerSession    : 1073741824
TimeLimitInSeconds      : 60
StorageLocation         : {
                            "StorageId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/testrg/providers/Microsoft.Storage/storageA
                          ccounts/examplestorage",
                            "StoragePath": "https://examplestorage.blob.core.windows.net/network-watcher-logs/subscriptions/00000000-0000-0000-0000-00000
                          0000000/resourcegroups/testrg/providers/microsoft.compute/virtualmachines/testvm1/2017/02/01/packetcapture_22_42_48_238.cap"
                          }
Filters                 : [
                            {
                              "Protocol": "TCP",
                              "RemoteIPAddress": "1.1.1.1-255.255.255",
                              "LocalIPAddress": "10.0.0.3",
                              "LocalPort": "1-65535",
                              "RemotePort": "20;80;443"
                            },
                            {
                              "Protocol": "UDP",
                              "RemoteIPAddress": "",
                              "LocalIPAddress": "",
                              "LocalPort": "",
                              "RemotePort": ""
                            }
                          ]
CaptureStartTime        : 2/1/2017 10:43:01 PM
PacketCaptureStatus     : Stopped
StopReason              : TimeExceeded
PacketCaptureError      : []

Parar uma captura de pacotes

Ao executar o cmdlet Stop-AzNetworkWatcherPacketCapture, se uma sessão de captura estiver em andamento, ela será interrompida.

Stop-AzNetworkWatcherPacketCapture -NetworkWatcher $networkWatcher -PacketCaptureName "PacketCaptureTest"

Observação

O cmdlet retorna sem resposta quando executado em uma sessão de captura atualmente em execução ou uma sessão existente que já foi interrompido.

Excluir uma captura de pacotes

Remove-AzNetworkWatcherPacketCapture -NetworkWatcher $networkWatcher -PacketCaptureName "PacketCaptureTest"

Observação

Excluir uma captura de pacotes não exclui o arquivo na conta de armazenamento.

Baixar um pacote de capturas

Quando a sessão de captura de pacotes for concluído, o arquivo de captura pode ser carregado no Armazenamento de Blobs ou em um arquivo local na VM. O local de armazenamento da captura de pacotes é definido na criação da sessão. Uma ferramenta conveniente para acessar esses arquivos de captura salvos em uma conta de armazenamento é o Gerenciador de Armazenamento do Microsoft Azure, que pode ser baixado aqui: https://storageexplorer.com/

Se uma conta de armazenamento for especificada, os arquivos de captura de pacote serão salvos em uma conta de armazenamento no seguinte local:

Se várias instâncias forem selecionadas

https://{storageAccountName}.blob.core.windows.net/network-watcher-logs/subscriptions/{subscriptionId}/resourcegroups/{storageAccountResourceGroup}/providers/microsoft.compute/virtualmachinescalesets/{VMSSName}/{year}/{month}/{day}/packetCapture_{creationTime}

Se uma instância individual for selecionada

https://{storageAccountName}.blob.core.windows.net/network-watcher-logs/subscriptions/{subscriptionId}/resourcegroups/{storageAccountResourceGroup}/providers/microsoft.compute/virtualmachinescalesets/{VMSSName}/virtualMachines/{instance}/{year}/{month}/{day}/packetCapture_{creationTime}.cap

Próximas etapas

Localize se determinado tráfego é permitido dentro ou fora de sua VM visitando Verificar o fluxo do IP