Monitorowanie

Optymalizacja skuteczności zaczyna się od określenia kluczowych wskaźników, zwykle związanych z opóźnieniem i przepustowością. Dodanie monitorowania w celu rejestrowania i śledzenia tych wskaźników ujawnia słabe punkty w aplikacji. Dzięki wskaźnikom można przeprowadzić optymalizację, aby poprawić wskaźniki skuteczności.

Dodatkowo wiele narzędzi do monitorowania umożliwia konfigurowanie alertów dotyczących wskaźników, dzięki czemu otrzymujesz powiadomienia, gdy zostanie osiągnięty określony próg. Możesz na przykład skonfigurować alert, który będzie Cię powiadamiał, gdy odsetek nieudanych żądań wzrośnie o więcej niż X% w stosunku do normalnego poziomu. Narzędzia do monitorowania mogą pomóc Ci określić, jak wygląda normalna skuteczność, oraz wykryć nietypowe skoki opóźnienia, liczby błędów i innych kluczowych wskaźników. Możliwość monitorowania tych wskaźników jest szczególnie ważna w krytycznych okresach dla firmy lub po wdrożeniu nowego kodu.

Określanie wskaźników opóźnienia

Zadbaj o to, aby interfejs użytkownika był jak najbardziej responsywny. Pamiętaj, że użytkownicy oczekują jeszcze wyższych standardów od aplikacji mobilnych. Opóźnienie należy też mierzyć i śledzić w przypadku usług backendowych, zwłaszcza że może ono prowadzić do problemów z przepustowością, jeśli nie będzie kontrolowane.

Sugerowane wskaźniki do śledzenia:

  • Czas trwania żądania
  • Czas trwania żądania w podsystemie (np. wywołania interfejsu API)
  • Czas trwania zadania

Określanie wskaźników przepustowości

Przepustowość to miara łącznej liczby żądań obsłużonych w danym okresie. Na przepustowość może wpływać opóźnienie podsystemów, dlatego aby ją poprawić, może być konieczna optymalizacja pod kątem opóźnienia.

Oto kilka sugerowanych wskaźników do śledzenia:

  • Zapytania na sekundę
  • Rozmiar danych przesyłanych na sekundę
  • Liczba operacji wejścia/wyjścia na sekundę
  • Wykorzystanie zasobów, np. procesora lub wykorzystanie pamięci
  • Rozmiar zaległości w przetwarzaniu, np. pub/sub lub liczba wątków

Nie tylko średnia

Częstym błędem przy pomiarze skuteczności jest uwzględnianie tylko średniej (przeciętnej). Chociaż jest to przydatne, nie daje wglądu w rozkład opóźnienia. Lepszym wskaźnikiem do śledzenia są percentyle skuteczności, np. 50., 75., 90. i 99. percentyl danego wskaźnika.

Optymalizację można zwykle przeprowadzić w 2 krokach. Najpierw zoptymalizuj opóźnienie w 90. percentylu. Następnie rozważ 99. percentyl, czyli opóźnienie ogona – niewielką część żądań, których realizacja trwa znacznie dłużej.

Monitorowanie po stronie serwera w celu uzyskania szczegółowych wyników

Do śledzenia wskaźników zwykle preferowane jest profilowanie po stronie serwera. Stronę serwera jest zwykle znacznie łatwiej instrumentować, umożliwia ona dostęp do bardziej szczegółowych danych i jest mniej podatna na zakłócenia spowodowane problemami z łącznością.

Monitorowanie w przeglądarce w celu uzyskania pełnego wglądu

Jeśli integracja z interfejsem Google Ads API obsługuje frontend internetowy dla użytkowników, profilowanie w przeglądarce może dostarczyć dodatkowych informacji o wrażeniach użytkownika. Może ono pokazać, które strony mają wolne żądania, co można następnie powiązać z monitorowaniem po stronie serwera w celu dalszej analizy.

Google Analytics zapewnia też gotowe monitorowanie czasu wczytywania strony w raporcie Czas wczytywania strony w Analytics. Dzięki temu możesz uzyskać kilka przydatnych widoków, które pomogą Ci zrozumieć wrażenia użytkownika w Twojej witrynie, w szczególności:

  • Czas wczytywania strony
  • Czas wczytywania przekierowania
  • Czas reakcji serwera

Monitorowanie w chmurze

Do rejestrowania i monitorowania wskaźników skuteczności aplikacji możesz używać wielu narzędzi. Możesz na przykład użyć Cloud Logging, aby rejestrować wskaźniki skuteczności w projekcie Google Cloud, a następnie skonfigurować panele w Cloud Monitoring, aby monitorować i segmentować zarejestrowane wskaźniki.

W przewodniku po logowaniu znajdziesz przykład niestandardowego interceptora logowania gRPC napisanego dla biblioteki klienta Python. W tym przykładzie interceptor wywołuje funkcję logger.log_struct(), aby wysłać słownik Pythona z uporządkowanymi danymi logu do Cloud Logging, które Cloud Logging przechowuje w polu jsonPayload wpisu logu:

logger.log_struct({
    "method": method_name,
    "elapsed_ms": elapsed_milliseconds,
    "is_fault": is_fault,
})

Dzięki tym danym dostępnym w Google Cloud możesz tworzyć wskaźniki na podstawie zarejestrowanych danych, aby uzyskać wgląd w aplikację za pomocą Cloud Monitoring. Aby tworzyć wskaźniki na podstawie logów wysyłanych do Cloud Logging, postępuj zgodnie z instrukcjami w przewodniku po wskaźnikach opartych na logach zdefiniowanych przez użytkownika.

Możesz też użyć bibliotek klienta Cloud Monitoring, aby zdefiniować wskaźniki w kodzie i wysyłać je bezpośrednio do usługi Monitoring, oddzielnie od logów.

Przykład wskaźników opartych na logach

Załóżmy, że chcesz monitorować wartość is_fault, aby lepiej zrozumieć współczynniki błędów w aplikacji. Ponieważ logger.log_struct() zapisuje uporządkowane pola słownika w polu jsonPayload w każdym wpisie Cloud Logging, możesz utworzyć wskaźnik licznika o nazwie ErrorCount z filtrem, który pasuje do nieudanych żądań, np. jsonPayload.is_fault = true.

W Cloud Logging etykiety umożliwiają grupowanie wskaźników w kategorie na podstawie innych danych w logach. Możesz skonfigurować etykietę STRINGo nazwie Method w polu jsonPayload.methodwysyłanym do Cloud Logging aby podzielić liczbę błędów według metody interfejsu Google Ads API.

Po skonfigurowaniu wskaźnika ErrorCount i etykiety Method możesz utworzyć nowy wykres w Cloud Monitoring do monitorowania ErrorCount pogrupowane według Method.

Alerty

W Cloud Monitoring i innych narzędziach możesz skonfigurować zasady tworzenia alertów, które określają, kiedy i jak alerty mają być wywoływane przez wskaźniki. Instrukcje konfigurowania alertów Cloud Monitoring znajdziesz w przewodniku po alertach dotyczących wskaźników opartych na logach.