Udostępnij za pośrednictwem


Rozwiązywanie problemów z siecią

W tym artykule opisano kilka narzędzi, które mogą diagnozować problemy z siecią o różnych złożonościach. Te problemy obejmują scenariusze, które wahają się od rozwiązywania problemów z nieoczekiwaną wartością odpowiedzi z usługi, po główne przyczyny wyjątku zamkniętego połączenia.

W przypadku rozwiązywania problemów po stronie klienta biblioteki klienckie platformy Azure dla języka Java oferują spójny i niezawodny scenariusz rejestrowania, zgodnie z opisem w temacie Konfigurowanie rejestrowania w zestawie Azure SDK dla języka Java. Jednak biblioteki klienckie tworzą wywołania sieciowe za pośrednictwem różnych protokołów, co może prowadzić do scenariuszy rozwiązywania problemów, które wykraczają poza podany zakres rozwiązywania problemów. W przypadku wystąpienia tych problemów rozwiązaniem jest użycie zewnętrznego narzędzia opisanego w tym artykule w celu zdiagnozowania problemów z siecią.

Fiddler

Fiddler to serwer proxy debugowania HTTP, który umożliwia logowanie żądań i odpowiedzi przekazywanych przez nie. Nieprzetworzone żądania i odpowiedzi, które można przechwycić, mogą pomóc w rozwiązywaniu problemów ze scenariuszami, w których usługa otrzymuje nieoczekiwane żądanie, lub klient otrzymuje nieoczekiwaną odpowiedź. Aby używać programu Fiddler, należy skonfigurować bibliotekę klienta za pomocą serwera proxy HTTP. Jeśli używasz protokołu HTTPS, potrzebujesz dodatkowej konfiguracji, aby sprawdzić odszyfrowane żądania i treść odpowiedzi.

Dodawanie serwera proxy HTTP

Aby dodać serwer proxy HTTP, postępuj zgodnie ze wskazówkami w temacie Konfigurowanie serwerów proxy w zestawie Azure SDK dla języka Java. Pamiętaj, aby użyć domyślnego localhost adresu programu Fiddler na porcie 8888.

Włączanie odszyfrowywania HTTPS

Domyślnie program Fiddler może przechwytywać tylko ruch HTTP. Jeśli aplikacja używa protokołu HTTPS, należy wykonać dodatkowe kroki, aby ufać certyfikatowi programu Fiddler, aby umożliwić mu przechwytywanie ruchu HTTPS. Aby uzyskać więcej informacji, zobacz menu HTTPS w dokumentacji programu Fiddler.

W poniższych krokach pokazano, jak ufać certyfikatowi za pomocą środowiska Java Runtime Environment (JRE). Jeśli certyfikat nie jest zaufany, żądanie HTTPS za pośrednictwem programu Fiddler może zakończyć się niepowodzeniem z ostrzeżeniami dotyczącymi zabezpieczeń.

  1. Eksportowanie certyfikatu programu Fiddler.

  2. Znajdź narzędzia keytool środowiska JRE (zwykle w jre/bin).

  3. Znajdź certyfikat cacert środowiska JRE (zwykle w środowisku jre/lib/security).

  4. Otwórz okno powłoki Bash i użyj następującego polecenia, aby zaimportować certyfikat:

    sudo keytool -import -file <location-of-Fiddler-certificate> -keystore <location-of-cacert> -alias Fiddler
    
  5. Wprowadź hasło.

  6. Ufaj certyfikatowi.

Wireshark

Wireshark to analizator protokołu sieciowego, który może przechwytywać ruch sieciowy bez konieczności wprowadzania zmian w kodzie aplikacji. Narzędzie Wireshark jest wysoce konfigurowalne i może przechwytywać szeroki ruch sieciowy niskiego poziomu. Ta funkcja jest przydatna w przypadku scenariuszy rozwiązywania problemów, takich jak zamknięcie połączenia przez hosta zdalnego lub zamknięcie połączeń podczas operacji. Graficzny interfejs użytkownika wireshark wyświetla przechwytywanie przy użyciu schematu kolorów, który identyfikuje unikatowe przypadki przechwytywania, takie jak retransmisja TCP, RST itd. Można również filtrować przechwytywane w czasie przechwytywania lub podczas analizy.

Konfigurowanie filtru przechwytywania

Filtry przechwytywania zmniejszają liczbę wywołań sieciowych przechwytywanych do analizy. Bez filtrów przechwytywania program Wireshark przechwytuje cały ruch przechodzący przez interfejs sieciowy. To zachowanie może generować ogromne ilości danych, w których większość z tych danych może być hałasem do badania. Użycie filtru przechwytywania pomaga wywłaszczać zakres przechwyconego ruchu sieciowego, aby pomóc w śledzeniu. Aby uzyskać więcej informacji, zobacz Przechwytywanie danych sieci na żywo w dokumentacji programu Wireshark.

Poniższy przykład dodaje filtr przechwytywania w celu przechwytywania ruchu sieciowego wysyłanego do określonego hosta lub odbieranego z określonego hosta.

W narzędziu Wireshark przejdź do pozycji Przechwyć filtry przechwytywania > ... i dodaj nowy filtr z wartością host <host-IP-or-hostname>. Ten filtr przechwytuje ruch tylko do i z tego hosta. Jeśli aplikacja komunikuje się z wieloma hostami, możesz dodać wiele filtrów przechwytywania lub dodać adres IP/nazwę hosta z operatorem "OR", aby zapewnić luźniejsze filtrowanie przechwytywania.

Przechwytywanie na dysku

Może być konieczne uruchomienie aplikacji przez długi czas, aby odtworzyć nieoczekiwany wyjątek sieci i zobaczyć ruch, który prowadzi do niego. Ponadto może nie być możliwe zachowanie wszystkich przechwytywania w pamięci. Na szczęście narzędzie Wireshark może rejestrować przechwytywanie na dysku, aby były dostępne do przetwarzania końcowego. Takie podejście pozwala uniknąć ryzyka braku pamięci podczas odtwarzania problemu. Aby uzyskać więcej informacji, zobacz Dane wejściowe, wyjściowe i drukowanie plików w dokumentacji programu Wireshark.

W poniższym przykładzie skonfigurowano program Wireshark w celu utrwalania przechwytywania na dysku z wieloma plikami, gdzie pliki podzielone na 100 000 przechwytuje lub 50 MB rozmiaru.

W narzędziu Wireshark przejdź do pozycji Opcje przechwytywania > i znajdź kartę Dane wyjściowe, a następnie wprowadź nazwę pliku do użycia. Ta konfiguracja powoduje, że program Wireshark będzie utrwalał przechwytywanie w jednym pliku.

Aby włączyć przechwytywanie wielu plików, wybierz pozycję Utwórz nowy plik automatycznie, a następnie wybierz po 100000 pakietów i po 50 megabajtach. Ta konfiguracja ma narzędzie Wireshark utworzyć nowy plik po dopasowaniu jednego z predykatów. Każdy nowy plik używa tej samej nazwy podstawowej co wprowadzona nazwa pliku i dołącza unikatowy identyfikator.

Jeśli chcesz ograniczyć liczbę plików, które można utworzyć za pomocą programu Wireshark, wybierz pozycję Użyj buforu pierścieniowego z plikami X. Ta opcja ogranicza program Wireshark do rejestrowania tylko z określoną liczbą plików. Po osiągnięciu tej liczby plików program Wireshark zaczyna zastępować pliki, począwszy od najstarszego.

Przechwytywanie filtrów

Czasami nie można ściśle ograniczyć zakresu ruchu przechwytywanego przez narzędzie Wireshark — na przykład jeśli aplikacja komunikuje się z wieloma hostami przy użyciu różnych protokołów. W tym scenariuszu zazwyczaj przy użyciu funkcji przechwytywania trwałego opisanego wcześniej łatwiej jest uruchomić analizę po przechwyceniu sieci. Narzędzie Wireshark obsługuje składnię podobną do filtru do analizowania przechwytywania. Aby uzyskać więcej informacji, zobacz Praca z przechwyconymi pakietami w dokumentacji programu Wireshark.

Poniższy przykład ładuje utrwalone pliki przechwytywania i filtry w pliku ip.src_host==<IP>.

W narzędziu Wireshark przejdź do pozycji Plik > Otwórz i załaduj utrwalone przechwytywanie z lokalizacji pliku użytej wcześniej. Po załadowaniu pliku pod paskiem menu zostanie wyświetlone dane wejściowe filtru. W danych wejściowych filtru wprowadź .ip.src_host==<IP> Ten filtr ogranicza widok przechwytywania, tak aby pokazywał tylko lokalizację, w której źródło pochodziło z hosta przy użyciu adresu IP <IP>.

Następne kroki

W tym artykule opisano różne narzędzia do diagnozowania problemów z siecią podczas pracy z zestawem Azure SDK dla języka Java. Teraz, gdy znasz scenariusze wysokiego poziomu użycia, możesz rozpocząć eksplorowanie samego zestawu SDK. Aby uzyskać więcej informacji na temat dostępnych interfejsów API, zobacz zestaw Azure SDK dla bibliotek języka Java.