Monitorowanie endpointów – integracja i konfiguracja

Przygotowując się do wdrożenia web aplikacji, o znacznie większym zasięgu niż zazwyczaj, warto zainteresować się jaka jest jej dostępność z różnych miejsc na świecie. Załóżmy, że największa liczba odwiedzających pochodzi z Chin, Australii oraz Stanów Zjednoczonych – czyli tak naprawdę z każdej strony. Czy jesteśmy w stanie w jakikolwiek sposób zbadać czy aplikacja działa tak samo wydajnie u użytkowników znajdujących się w Australii względem mieszkańców Chin? Czy jedynym możliwym rozwiązaniem jest posiadanie grupy znajomych, rozsianych po całym świecie, służących swoją pomocą w testach aplikacji? Z pomocą przychodzi pewna usługa jaką jest monitorowanie endpointów, dostępna w ramach pakietu Application Insights.

Application Insights

Application Insights jest osobną usługą składającą się ze zbioru narzędzi diagnostycznych, wykorzystywanych do monitorowania stanu działającej aplikacji, generowania statystyk, detekcji oraz diagnozy występujących w niej problemów. Składa się ona między innymi z narzędzi do badania wydajności aplikacji, kontroli zużycia CPU i pamięci serwera, interaktywnej analizy danych itp. Application Insights znajduje największe zastosowanie przy wyszukiwaniu tzw. wąskich gardeł aplikacji. Dzięki temu jesteśmy w stanie niemal natychmiastowo zareagować na wszelkie niekontrolowane spadki wydajności. Komponent ten doskonale sprawuje się nie tylko w aplikacjach .NET’owych, ale również w tych napisanych z wykorzystaniem języków takich jak: NodeJS, Python czy Java. Więcej informacji na temat Application Insights znajdziesz pod tym linkiem.

Jeżeli nie dodałeś tego komponentu podczas tworzenia nowej aplikacji, kliknij w nią teraz, a następnie wybierz zakładkę Application Insights z menu bocznego. Podaj nazwę nowego zasobu, najlepiej żeby była ona taka sama jak nazwa web aplikacji. Następnie wybierz jej lokalizację – również zbliżoną do aplikacji – umożliwi to maksymalne skrócenie czasu żądań HTTP pomiędzy usługą, a aplikacją. Potwierdź dodanie usługi klikając w przycisk OK:

Dodanie do istniejącej web aplikacji usługi Application Insights
Dodanie do istniejącej web aplikacji usługi Application Insights

Teraz możesz iść sobie zaparzyć kawę lub zapalić papierosa – inicjalizacja komponentu Appication Insights jest procesem długotrwałym. Idealny moment na zrobienie sobie przerwy.

Monitorowanie endpointów – o co chodzi?

Monitorowanie endpointów rozpoczynamy od stworzenia kilku (maksymalnie 25) web testów. Rozróżniamy dwie grupy tego typu testów:

  • testy dostępności witryny,
  • wieloetapowe testy dostępności – można je stworzyć tylko i wyłącznie za pomocą Visual Studio Enterprise.

Przejdę teraz do krótkiej charakterystyki wyszczególnionych powyżej rodzajów web testów oraz ich zastosowań.

Testy dostępności witryny (URL Ping Web Tests)

Testy dostępności witryny polegają na wysłaniu żądania HTTP do web aplikacji, a następnie sprawdzeniu kodu odpowiedzi oraz zmierzeniu czasu otrzymania odpowiedzi od serwera. Tego typu testy mają na celu wyłapanie częstości, jak i długości, występowania wszelkich opóźnień pomiędzy klientem, a serwerem. Testy dostępności mogą być uruchamiane z różnych miejsc na świecie oraz są one cały czas powtarzane według ustalonego przedziału czasowego.

Aby skonfigurować pierwsze testy wybieramy w zakładkę Dostępność (Availability) dostępną w ramach usługi Application Insights. Następnie klikamy w przycisk Dodaj test (Add test). W nowej formatce wprowadź nazwę oraz typ testu – proponuję, abyś wybrał Test ping adresu URL (URL ping test) oraz wprowadził adres url Twojej aplikacji. Żeby nie czekać zbyt długo ustaw Częstotliwość testu (Test frequency) na 5 minut.

Teraz przejdziemy do lokalizacji testu. Na początku wpisu wspominałem o Chinach, Australii oraz Stanach Zjednoczonych. W takim razie z listy wszystkich dostępnych lokalizacji wybieram Chciago, Hong Kong, Sydney i może niech będzie do tego Singapur. Następnie należy skonfigurować Kryterium powodzenia testu (Success criteria). Powiedzmy, że czekamy na odpowiedź do 120 sekund oraz oczekujemy powodzenia – kod odpowiedzi powinien być równy 200. Na sam koniec pozostały alerty. Załóżmy, że chcemy otrzymać wiadomość email w przypadku wystąpienia 3 niepowodzeń w przeciągu 5 minut. Kompletna konfiguracja testu została przedstawiona na poniższym screenie:

Konfiguracja testu dostępności witryny
Konfiguracja testu dostępności witryny

Proponuję pozostawić tak skonfigurowany test na przynajmniej jeden dzień. Nie trzeba nic konfigurować po stronie web aplikacji, tak naprawdę moglibyśmy testować dowolną stronę internetową lub REST API. Następnego dnia podsumowanie testu dostępności witryny powinno być już gotowe. W moim przypadku prezentuje się ono następująco:

Monitorowanie endpointów - wyniki testu dostępności aplikacji
Monitorowanie endpointów – wyniki testu dostępności aplikacji

Udało się uzyskać 100% poprawności przygotowanego web testu.

Wieloetapowe testy sieciowe (Multi-Step Web Tests)

Tego typu testy opierają się na wykonaniu wcześniej przygotowanego scenariusza, który polega na np. odwiedzeniu kilku podstron w celu wykonania bardziej zaawansowanej operacji. Wielostopniowe testy sieciowe mogą być wykorzystywane do np. przetestowania procesu logowania lub uzupełniania formularza. Scenariusze testowe nagrywane są z wykorzystaniem Visual Studio Enterprise, a następnie przesłane do usługi Application Insights.

Otwórz Visual Studio, a następnie dodaj nowy projekt korzystając z szablonu Projekt testu sieci Web i obciążenia (Web Performance and Load Test Project) znajdującego się w zakładce Test. W ramach projektu powinien być dostępny plik WebTest1.webtest . Otwórz go, a następnie w nowo otwartej karcie kliknij w czerwoną ikonkę rozpoczynającą proces nagrywania scenariuszy testowych:

Nagrywanie scenariuszy testowych z wykorzystaniem Visual Studio Enterprise
Nagrywanie scenariuszy testowych z wykorzystaniem Visual Studio Enterprise

W tym momencie powinna otworzyć się przeglądarka internetowa (domyślnie będzie to Internet Explorer). Wprowadź adres URL swojej web aplikacji, a następnie wykonaj operację, którą będziesz chciał przetestować np. zaloguj się. Kiedy scenariusz będzie już gotowy wróć do Visual Studio oraz zakończ nagrywanie testu. Właśnie stworzyłeś swój pierwszy scenariusz. Zachęcam do uruchomienia dopiero co nagranego testu.

Kiedy będziesz miał już dosyć nagrywania możesz zabrać się za migrację web testów do chmury. Wróć do usługi Application Insights na portalu, a następnie dodaj nowy web test. Tym razem jako typ wybierz Test sieci Web z wieloma krokami (Multi-Step Web Test). Pojawi się dodatkowe pole w formularzu, pozwalające na wgranie pliku *.webtest z nagranym scenariuszem.

Gotowe, miłego testowania 🙂