Diagnostyka wdrożonych aplikacji

Wdrażanie aplikacji na AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Przekroczenie limitu czasu zadania

  • Funkcja zawodzi, ale tylko czasem
  • Logi mówią: „Task timed out"
  • Sygnatura wskazuje prawdziwą przyczynę

Stoper obok linii logu błędu pokazującej przekroczenie limitu czasu zadania Lambda

Wdrażanie aplikacji na AWS

Typowe sygnatury błędów Lambda

Siatka 2x2 sygnatur błędów Lambda: Timeout z logiem task-timed-out, Throttled z TooManyRequestsException, Access Denied z AccessDeniedException i Out of Memory z błędem signal-killed

  • Timeout: „Task timed out after N seconds"
  • Throttle: TooManyRequestsException
  • Odmowa IAM: AccessDenied, not authorized
  • Brak pamięci: środowisko uruchomieniowe zabite w trakcie wykonania
Wdrażanie aplikacji na AWS

Pierwsza reakcja na błąd funkcji

  • Najpierw przeczytaj komunikat błędu
  • Dopasuj go do znanej sygnatury
  • Sprawdź opóźnienie wywołań downstream w przypadku timeoutów
  • Zmień jedną rzecz, a potem ponownie przetestuj

Pętla diagnostyczna: odczyt komunikatu błędu, dopasowanie do sygnatury, sprawdzenie opóźnienia downstream, zmiana jednej rzeczy i ponowne testowanie

Wdrażanie aplikacji na AWS

CloudWatch Logs Insights

Zapytanie Logs Insights używa filter do zawężania wyników i stats do agregacji. Poniżej liczymy błędy na minutę:

fields @timestamp, @message
| filter level = "ERROR"
| stats count() as errors by bin(1m)
| sort errors desc
Wdrażanie aplikacji na AWS

Diagnostyka błędów integracji z obu stron

  • Błędy często kryją się między serwisami
  • Czytaj logi wywołującego i wywoływanego
  • Powiąż je po request ID lub trace ID
  • Luka między nimi wskazuje miejsce zerwania

Logi wywołującego i wywoływanego zestawione obok siebie według request ID, z luką oznaczoną jako punkt zerwania integracji

Wdrażanie aplikacji na AWS

Health checki i sondy gotowości

Load balancer kierujący ruch do sprawnych instancji z zielonymi znacznikami oraz niesprawna instancja usunięta z rotacji po kolejnych nieudanych health checkach

  • Health check: czy instancja działa i odpowiada na żądania?
  • Load balancery kierują ruch tylko do sprawnych instancji
  • Gotowość: czy instancja jest gotowa przyjąć ruch?
  • Nieudane testy wykluczają instancję z rotacji
Wdrażanie aplikacji na AWS

Plan diagnostyczny

  • Przeczytaj błąd i dopasuj sygnaturę
  • Przeszukaj logi przez Logs Insights, aby zawęzić zakres
  • Powiąż obie strony po request ID lub trace ID
  • Zmień jedną rzecz i zweryfikuj

Czterokrokowy plan diagnostyczny: odczyt błędu i dopasowanie sygnatury, przeszukanie logów przez Insights, powiązanie obu stron po trace ID, zmiana jednej rzeczy i weryfikacja

Wdrażanie aplikacji na AWS

Czas na praktykę!

Wdrażanie aplikacji na AWS

Preparing Video For Download...