Compartilhar via


Solucionar problemas de rede

Este artigo descreve algumas ferramentas que podem diagnosticar problemas de rede de várias complexidades. Esses problemas incluem cenários que variam de solucionar problemas de um valor de resposta inesperado de um serviço até a raiz causar uma exceção de conexão fechada.

Para solução de problemas do lado do cliente, as bibliotecas de clientes do Azure para Java oferecem uma história de log consistente e robusta, conforme descrito em Configurar o registro em log no SDK do Azure para Java. No entanto, as bibliotecas de cliente fazem chamadas de rede em vários protocolos, o que pode levar a cenários de solução de problemas que se estendem fora do escopo de solução de problemas fornecido. Quando esses problemas ocorrem, a solução é usar as ferramentas externas descritas neste artigo para diagnosticar problemas de rede.

Violinista

O Fiddler é um proxy de depuração HTTP que permite o registro em log solicitações e respostas passadas por ele no estado em que se encontram. As solicitações e respostas brutas que você captura podem ajudá-lo a solucionar os cenários em que o serviço recebe uma solicitação inesperada ou o cliente recebe uma resposta inesperada. Para usar o Fiddler, você precisa configurar a biblioteca de clientes com um proxy HTTP. Se você usar HTTPS, precisará de uma configuração extra para inspecionar os corpos de solicitação e resposta descriptografados.

Adicionar um proxy HTTP

Para adicionar um proxy HTTP, siga as diretrizes em Configurar proxies no SDK do Azure para Java. Use o endereço padrão de localhost do Fiddler na porta 8888.

Habilitar a descriptografia HTTPS

Por padrão, o Fiddler pode capturar apenas o tráfego HTTP. Se seu aplicativo usa HTTPS, você deve tomar medidas extras para confiar no certificado do Fiddler para permitir que ele capture o tráfego HTTPS. Para obter mais informações, confira Menu HTTPS na documentação do Fiddler.

As etapas a seguir mostram como usar o JRE (Java Runtime Environment) para confiar no certificado. Se o certificado não for confiável, uma solicitação HTTPS por meio do Fiddler poderá falhar com avisos de segurança.

  1. Exporte o certificado do Fiddler.

  2. Localize o keytool do JRE (geralmente em jre/bin).

  3. Localize o certificado do JRE (geralmente em jre/lib/security).

  4. Abra uma janela do Bash e use o seguinte comando para importar o certificado:

    sudo keytool -import -file <location-of-Fiddler-certificate> -keystore <location-of-cacert> -alias Fiddler
    
  5. Insira uma senha.

  6. Confie no certificado.

Wireshark

Wireshark é um analisador de protocolo de rede que pode capturar o tráfego de rede sem precisar de alterações no código do aplicativo. O Wireshark é altamente configurável e pode capturar tráfego de rede desde amplo até específico e de baixo nível. Essa funcionalidade é útil para solucionar problemas, como um host remoto fechando uma conexão ou tendo conexões fechadas durante uma operação. A GUI do Wireshark exibe capturas usando um esquema de cores que identifica casos de captura exclusivos, como uma retransmissão TCP, RST e assim por diante. Você também pode filtrar capturas no momento da captura ou durante a análise.

Configurar um filtro de captura

Os filtros de captura reduzem o número de chamadas de rede capturadas para análise. Sem filtros de captura, o Wireshark captura todo o tráfego que passa por um adaptador de rede. Esse comportamento pode produzir grandes quantidades de dados em que a maior parte pode ser ruído para a investigação. Usar um filtro de captura ajuda a definir preventivamente o escopo do tráfego de rede que está sendo capturado para ajudar a direcionar uma investigação. Para obter mais informações, consulte Capturando dados de rede dinâmica na documentação do Wireshark.

O exemplo a seguir adiciona um filtro de captura para capturar o tráfego de rede enviado ou recebido de um host específico.

No Wireshark, navegue até Capturar > Filtros de Captura... e adicione um filtro com o valor host <host-IP-or-hostname>. Esse filtro captura o tráfego somente de e para esse host. Se o aplicativo se comunicar com vários hosts, você poderá adicionar vários filtros de captura ou adicionar o IP/nome do host com o operador 'OR' para fornecer filtragem de captura mais flexível.

Capturar em disco

Talvez seja necessário executar um aplicativo por muito tempo para reproduzir uma exceção de rede inesperada e observar o tráfego que a antecede. Além disso, talvez não seja possível manter todas as capturas na memória. Felizmente, o Wireshark pode registrar as capturas em disco para que elas estejam disponíveis para pós-processamento. Essa abordagem evita o risco de ficar sem memória enquanto você reproduz um problema. Para obter mais informações, consulte Entrada, Saída e Impressão de Arquivo na documentação do Wireshark.

O exemplo a seguir configura o Wireshark para persistir capturas em disco com vários arquivos, em que os arquivos são divididos em capturas de 100k ou tamanho de 50 MB.

No Wireshark, navegue até Capture > Options e localize a guia Output, em seguida, insira um nome de arquivo a ser usado. Essa configuração faz com que o Wireshark persista as capturas em um único arquivo.

Para habilitar a captura para vários arquivos, selecione Criar um arquivo automaticamente e selecione após 100.000 pacotes e depois de 50 megabytes. Essa configuração faz com que o Wireshark crie um novo arquivo quando um dos predicados for correspondido. Cada novo arquivo usa o mesmo nome base que o nome do arquivo inserido e acrescenta um identificador exclusivo.

Se você quiser limitar o número de arquivos que o Wireshark pode criar, selecione Usar um buffer de anel com arquivos X. Essa opção limita o Wireshark ao registro em log apenas com o número especificado de arquivos. Quando esse número de arquivos é atingido, o Wireshark começa a substituir os arquivos, começando com o mais antigo.

Capturas de filtro

Às vezes, não é possível definir o escopo do tráfego que o Wireshark captura , por exemplo, se o aplicativo se comunicar com vários hosts usando vários protocolos. Nesse cenário, geralmente com o uso da captura persistente descrita anteriormente, é mais fácil executar a análise após a captura de rede. O Wireshark dá suporte à sintaxe semelhante a filtro para analisar capturas. Para obter mais informações, consulte Trabalhando com pacotes capturados na documentação do Wireshark.

O exemplo a seguir carrega um arquivo de captura persistente e filtra por ip.src_host==<IP>.

No Wireshark, navegue até Arquivo > Abrir e carregue uma captura persistente do local do arquivo usado anteriormente. Depois que o arquivo for carregado abaixo da barra de menus, uma entrada de filtro será exibida. Na entrada do filtro, insira ip.src_host==<IP>. Esse filtro limita a visualização de captura para que mostre apenas capturas onde a origem é do host com o IP <IP>.

Próximas etapas

Este artigo abordou o uso de várias ferramentas para diagnosticar problemas de rede ao trabalhar com o SDK do Azure para Java. Agora que você está familiarizado com os cenários de uso de alto nível, pode começar a explorar o próprio SDK. Para obter mais informações sobre as APIs disponíveis, consulte o SDK do Azure para bibliotecas Java.