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 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ą.
Skrzypek
Fiddler jest serwerem proxy do debugowania HTTP, który umożliwia rejestrowanie przechodzących przez niego żądań i odpowiedzi as-is. 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 Konfigurowanie serwerów proxy w zestawie Azure SDK dla języka Java. Pamiętaj, aby użyć domyślnego adresu Fiddler localhost
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, zapoznaj się z sekcją "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ń.
Eksportowanie certyfikatu programu Fiddler.
Znajdź keytool środowiska JRE (zwykle w jre/bin).
Znajdź plik cacert dla JRE (zazwyczaj w jre/lib/security).
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
Wprowadź hasło.
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ć dane już podczas ich 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, z których większość może być hałasem dla badania. Użycie filtru przechwytywania pomaga wstępnie określić zakres przechwytywanego ruchu sieciowego, aby lepiej ukierunkować dochodzenie. 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 Przechwytywanie > 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, aby uruchomić aplikację przez długi czas, żeby zdiagnozować nieoczekiwany wyjątek sieciowy i zobaczyć ruch, który do niego prowadzi. Ponadto może być niemożliwe zachowanie wszystkich przechwyceń 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 w dokumentacji programu Wireshark.
W poniższym przykładzie skonfigurowano program Wireshark do zapisywania przechwytywań na dysku w wielu plikach, gdzie pliki dzielą się przy 100 000 przechwyceń lub rozmiarze 50 MB.
W programie Wireshark przejdź do sekcji Opcje przechwytywania > i znajdź kartę Wynik, a następnie wprowadź nazwę pliku do zapisania. 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 pozycję po 100000 pakietów i po 50 megabajtach. Ta konfiguracja sprawia, że Wireshark tworzy nowy plik, gdy jeden z predykatów jest spełniony. 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ą narzędzia Wireshark, wybierz 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.
Filtr przechwytuje
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 trwałego przechwytywania, opisanego wcześniej, łatwiej jest przeprowadzić analizę po przechwyceniu sieci. Narzędzie Wireshark obsługuje składnię filtrów do analizy przechwyconych danych. Aby uzyskać więcej informacji, zobacz Praca z przechwytywanymi pakietami w dokumentacji programu Wireshark.
Poniższy przykład ładuje utrwalony plik przechwytywania i stosuje filtr ip.src_host==<IP>
.
W narzędziu Wireshark przejdź do 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 tak, aby pokazywał tylko przechwyty, gdzie źródło pochodziło z hosta o 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 Azure SDK for Java libraries.