Partilhar via


Gerenciar capturas de pacotes no conjunto de dimensionamento de máquina virtual com o Inspetor de Rede do Azure usando o PowerShell

A captura de pacotes do Network Watcher permite criar sessões de captura para rastrear o tráfego de e para uma instância(s) de conjunto de dimensionamento de máquina virtual. Os filtros são fornecidos para a sessão de captura para garantir que você capture apenas o tráfego desejado. A captura de pacotes ajuda a diagnosticar anomalias de rede, tanto de forma reativa quanto proativa. Outros usos incluem a coleta de estatísticas de rede, obtenção de informações sobre invasões de rede, para depurar a comunicação cliente-servidor e muito mais. Ser capaz de acionar remotamente capturas de pacotes, alivia a carga de executar uma captura de pacotes manualmente em uma instância de conjunto de escala de máquina virtual desejada, o que economiza tempo valioso.

Este artigo apresenta as diferentes tarefas de gerenciamento atualmente disponíveis para captura de pacotes.

Antes de começar

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

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

Importante

A captura de pacotes requer uma extensão AzureNetworkWatcherExtensionde conjunto de escala de máquina virtual. Para instalar a extensão em uma VM do Windows, visite a extensão de máquina virtual do Azure Network Watcher Agent para Windows e para VM Linux, visite a extensão de máquina virtual do Azure Network Watcher Agent para Linux.

Instalar a extensão do conjunto de escala da máquina virtual

Passo 1

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

Passo 2

Instalar networkWatcherAgent no conjunto de escala da máquina virtual/instância(s) do conjunto de escala da máquina virtual

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.

Passo 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 será instalado no conjunto de dimensionamento da máquina virtual.

Passo 1

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

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

Passo 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

Passo 3

Os filtros podem ser usados para limitar os dados armazenados pela captura de pacotes. O exemplo a seguir configura dois filtros. Um filtro recolhe o tráfego TCP de saída apenas do IP local 10.0.0.3 para 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

Nota

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

Passo 4

Criar escopo para captura de pacotes

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

Passo 5

Execute o New-AzNetworkWatcherPacketCaptureV2 cmdlet 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 pacotes

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

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

O exemplo a seguir é a saída do Get-AzNetworkWatcherPacketCapture cmdlet. O exemplo a seguir é após a conclusão da captura. O valor PacketCaptureStatus é Stopped, com um StopReason de TimeExceeded. Esse valor mostra que a captura de pacotes 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 Stop-AzNetworkWatcherPacketCapture cmdlet, se uma sessão de captura estiver em andamento, ela será interrompida.

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

Nota

O cmdlet não retorna nenhuma resposta quando executado em uma sessão de captura em execução no momento ou em uma sessão existente que já foi interrompida.

Excluir uma captura de pacote

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

Nota

A exclusão de uma captura de pacote não exclui o arquivo na conta de armazenamento.

Baixar uma captura de pacote

Uma vez concluída a sessão de captura de pacotes, o arquivo de captura pode ser carregado para o armazenamento de blob ou para um arquivo local na(s) instância(s). 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 pacotes 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 única instância 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óximos passos

Descubra se determinado tráfego é permitido dentro ou fora da sua VM visitando Verificar fluxo de IP