Dodawanie niestandardowego monitorowania na potrzeby określonego kodu aplikacji


Performance Monitoring zbiera ślady, aby pomóc Ci monitorować wydajność aplikacji. Ślad to raport z danymi o skuteczności zebranymi między 2 punktami w czasie w aplikacji.

Możesz tworzyć własne logi czasu, aby monitorować dane o skuteczności powiązane z konkretnym kodem w aplikacji. Za pomocą niestandardowego logu czasu kodu możesz mierzyć, ile czasu zajmuje aplikacji wykonanie określonego zadania lub zestawu zadań, np. wczytanie zestawu obrazów lub wysłanie zapytania do bazy danych.

Domyślnym wskaźnikiem śladu niestandardowego kodu jest „czas trwania” (czas między punktem początkowym a końcowym śladu), ale możesz też dodać wskaźniki niestandardowe.

W kodzie definiujesz początek i koniec niestandardowego śladu kodu za pomocą interfejsów API udostępnianych przez pakiet SDK Performance Monitoring. W przypadku aplikacji na Androida możesz też monitorować konkretne metody, używając adnotacji @AddTrace. Ślady niestandardowego kodu można uruchomić w dowolnym momencie po ich utworzeniu. Są one wątkowo bezpieczne.

Ponieważ domyślnym wskaźnikiem zbieranym w przypadku tych logów czasu jest „czas trwania”, czasami są one nazywane „logami czasu trwania”.

Dane z tych logów czasu możesz wyświetlić na podkarcie Logi czasu niestandardowe w tabeli logów czasu, która znajduje się u dołu panelu Wydajność (więcej informacji o korzystaniu z konsoli znajdziesz w dalszej części tej strony).

Atrybuty domyślne, atrybuty niestandardowe i dane niestandardowe

W przypadku śladów niestandardowego kodu Performance Monitoring automatycznie rejestruje atrybuty domyślne (typowe metadane, takie jak wersja aplikacji, kraj, urządzenie itp.), dzięki czemu możesz filtrować dane śladu w konsoli Firebase. Możesz też dodawać i monitorować atrybuty niestandardowe (np. poziom gry lub właściwości użytkownika).

Możesz też skonfigurować niestandardowy ślad kodu, aby rejestrować wskaźniki niestandardowe dotyczące zdarzeń związanych z wydajnością, które występują w zakresie śladu. Możesz na przykład utworzyć wskaźnik niestandardowy dotyczący liczby trafień i chybień w pamięci podręcznej lub liczby przypadków, gdy interfejs przestaje reagować na zauważalny czas.

Atrybuty niestandardowe i wskaźniki niestandardowe są wyświetlane w konsoli Firebase obok domyślnych atrybutów i wskaźników śladu.

Dodawanie niestandardowych śladów kodu

Użyj Performance Monitoring Trace API, aby dodać niestandardowe logi czasu kodu i monitorować konkretny kod aplikacji.

Pamiętaj:

  • Aplikacja może mieć wiele niestandardowych śladów kodu.
  • Jednocześnie może być uruchomionych kilka niestandardowych śladów kodu.
  • Nazwy niestandardowych logów czasu kodu muszą spełniać te wymagania: nie mogą zawierać spacji na początku ani na końcu, nie mogą zaczynać się od znaku podkreślenia (_) i mogą mieć maksymalnie 100 znaków.
  • Ślady kodu niestandardowego obsługują dodawanie wskaźników niestandardowych i atrybutów niestandardowych.

Aby rozpocząć i zatrzymać ślad kodu niestandardowego, umieść kod, który chcesz śledzić, między wierszami kodu podobnymi do tych (w tym przykładzie użyto nazwy śladu niestandardowego test_trace):

Kotlin

// Import these Performance Monitoring classes at the top of your `.kt` file
import com.google.firebase.perf.FirebasePerformance;
import com.google.firebase.perf.metrics.Trace;

val myTrace = Firebase.performance.newTrace("test_trace")
myTrace.start()

// code that you want to trace

myTrace.stop()

Java

// Import these Performance Monitoring classes at the top of your `.java` file
import com.google.firebase.perf.FirebasePerformance;
import com.google.firebase.perf.metrics.Trace;

Trace myTrace = FirebasePerformance.getInstance().newTrace("test_trace");
myTrace.start();

// code that you want to trace

myTrace.stop();

(Opcjonalnie) Monitorowanie konkretnych metod za pomocą @AddTrace

Aplikacje na Androida obsługują też adnotację @AddTrace, która umożliwia instrumentowanie niestandardowych śladów kodu. Dzięki tej funkcji śledzenie rozpoczyna się na początku określonej metody i kończy się po jej zakończeniu, w tym po zakończeniu wszystkich wywołań metody.

Możesz na przykład utworzyć niestandardowy ślad kodu o nazwie onCreateTrace, który będzie uruchamiany po wywołaniu metody onCreate().

Kotlin

// Import these Performance Monitoring classes at the top of your `.kt` file
import com.google.firebase.perf.FirebasePerformance;
import com.google.firebase.perf.metrics.AddTrace;

// Add the `@AddTrace` annotation above the method you want to trace
// the `enabled` argument is optional and defaults to true
@AddTrace(name = "onCreateTrace", enabled = true)
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
}

Java

// Import these Performance Monitoring classes at the top of your `.java` file
import com.google.firebase.perf.FirebasePerformance;
import com.google.firebase.perf.metrics.AddTrace;

// Add the `@AddTrace` annotation above the method you want to trace
@Override
@AddTrace(name = "onCreateTrace", enabled = true /* optional */)
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

Dodawanie wskaźników niestandardowych do śladów niestandardowego kodu

Użyj Performance Monitoring Trace API, aby dodać dane niestandardowe do niestandardowych logów czasu oczekiwania kodu.

Pamiętaj:

  • Nazwy danych niestandardowych muszą spełniać te wymagania: nie mogą zawierać spacji na początku ani na końcu, nie mogą zaczynać się od znaku podkreślenia (_) i mogą mieć maksymalnie 100 znaków.
  • Każdy niestandardowy ślad kodu może rejestrować do 32 rodzajów danych (w tym domyślne dane Czas trwania).

Aby dodać dane niestandardowe, za każdym razem, gdy wystąpi zdarzenie, dodaj wiersz kodu podobny do tego: Na przykład te dane niestandardowe zliczają zdarzenia związane z wydajnością, które występują w aplikacji, takie jak trafienia w pamięci podręcznej i chybienia (przy użyciu przykładowych nazw zdarzeń item_cache_hit i item_cache_miss oraz przyrostu 1).

Kotlin

val myTrace = Firebase.performance.newTrace("test_trace")
myTrace.start()

// code that you want to trace (and log custom metrics)
val item = cache.fetch("item")
if (item != null) {
    myTrace.incrementMetric("item_cache_hit", 1)
} else {
    myTrace.incrementMetric("item_cache_miss", 1)
}

myTrace.stop()

Java

Trace myTrace = FirebasePerformance.getInstance().newTrace("test_trace");
myTrace.start();

// code that you want to trace (and log custom metrics)
Item item = cache.fetch("item");
if (item != null) {
    myTrace.incrementMetric("item_cache_hit", 1);
} else {
    myTrace.incrementMetric("item_cache_miss", 1);
}

myTrace.stop();

Tworzenie atrybutów niestandardowych dla niestandardowych śladów kodu

Użyj Performance Monitoring Trace API, aby dodać atrybuty niestandardowe do śladów kodu niestandardowego.

Aby używać atrybutów niestandardowych, dodaj do aplikacji kod, który definiuje atrybut i powiązuje go z konkretnym niestandardowym śladem kodu. Atrybut niestandardowy możesz ustawić w dowolnym momencie między rozpoczęciem a zakończeniem śledzenia.

Pamiętaj:

  • Nazwy atrybutów niestandardowych muszą spełniać te wymagania:

    • Brak spacji na początku i na końcu, brak znaku podkreślenia (_) na początku.
    • Brak pokoi
    • Maksymalna liczba znaków to 32
    • Dozwolone znaki w nazwie to A-Z, a-z i _.
  • Każdy ślad niestandardowego kodu może rejestrować maksymalnie 5 atrybutów niestandardowych.

  • Upewnij się, że atrybuty niestandardowe nie zawierają żadnych informacji umożliwiających Google identyfikację osoby.

    Więcej informacji o tych wytycznych

Kotlin

Firebase.performance.newTrace("test_trace").trace {
    // Update scenario.
    putAttribute("experiment", "A")

    // Reading scenario.
    val experimentValue = getAttribute("experiment")

    // Delete scenario.
    removeAttribute("experiment")

    // Read attributes.
    val traceAttributes = this.attributes
}

Java

Trace trace = FirebasePerformance.getInstance().newTrace("test_trace");

// Update scenario.
trace.putAttribute("experiment", "A");

// Reading scenario.
String experimentValue = trace.getAttribute("experiment");

// Delete scenario.
trace.removeAttribute("experiment");

// Read attributes.
Map<String, String> traceAttributes = trace.getAttributes();

Śledzenie, wyświetlanie i filtrowanie danych o skuteczności

Śledzenie konkretnych danych w panelu

Aby dowiedzieć się, jakie są trendy dotyczące kluczowych danych, dodaj je do tablicy danych u góry panelu Skuteczność. Możesz szybko zidentyfikować regresje, sprawdzając zmiany z tygodnia na tydzień, lub sprawdzić, czy ostatnie zmiany w kodzie poprawiają wydajność.

obraz panelu danych w <span class=Panel monitorowania skuteczności w Firebase" />

Aby dodać dane do panelu danych, wykonaj te czynności:

  1. Otwórz panel Wydajność w konsoli Firebase.
  2. Kliknij pustą kartę danych, a potem wybierz istniejące dane, które chcesz dodać do tablicy.
  3. Kliknij na karcie danych, aby wyświetlić więcej opcji, np. zastąpić lub usunąć dane.

Panel danych pokazuje zebrane dane w czasie, zarówno w formie graficznej, jak i w postaci liczbowej zmiany procentowej.

Dowiedz się więcej o korzystaniu z panelu.

Wyświetlanie logów czasu i ich danych

Aby wyświetlić logi czasu, otwórz panel Wydajność w konsoli Firebase, przewiń w dół do tabeli logów czasu i kliknij odpowiednią podkartę. Tabela zawiera niektóre najważniejsze dane dotyczące każdego logu czasu, a listę możesz nawet posortować według procentowej zmiany konkretnych danych.

Performance Monitoring udostępnia w konsoli Firebase stronę rozwiązywania problemów, na której wyróżnione są zmiany wskaźników. Dzięki temu możesz szybko rozwiązywać problemy z wydajnością i minimalizować ich wpływ na aplikacje i użytkowników. Strony rozwiązywania problemów możesz używać, gdy dowiesz się o potencjalnych problemach z wydajnością, np. w tych sytuacjach:

  • Wybierasz odpowiednie dane w panelu i zauważasz dużą różnicę.
  • W tabeli logów czasu sortujesz dane, aby wyświetlić największe delty u góry, i widzisz znaczną zmianę procentową.
  • Otrzymujesz alert e-mail z powiadomieniem o problemie z wydajnością.

Stronę rozwiązywania problemów możesz otworzyć na te sposoby:

  • W panelu danych kliknij przycisk Wyświetl szczegóły danych.
  • Na dowolnej karcie danych kliknij => Wyświetl szczegóły. Na stronie rozwiązywania problemów wyświetlą się informacje o wybranym wskaźniku.
  • W tabeli logów czasu kliknij nazwę logu czasu lub dowolną wartość danych w wierszu powiązanym z tym logiem czasu.
  • W alercie e-mail kliknij Zbadaj teraz.

Gdy klikniesz nazwę logu czasu w tabeli logów czasu, możesz przejść do interesujących Cię danych. Kliknij przycisk Filtruj, aby przefiltrować dane według atrybutu, na przykład:

obraz przedstawiający <span class=Dane monitorowania skuteczności w Firebase filtrowane według atrybutu" />
  • Filtruj według wersji aplikacji, aby wyświetlić dane o poprzedniej lub najnowszej wersji.
  • Aby dowiedzieć się, jak starsze urządzenia radzą sobie z Twoją aplikacją, użyj filtra Urządzenie.
  • Filtruj według kraju, aby upewnić się, że lokalizacja bazy danych nie wpływa na konkretny region.

Dowiedz się więcej o wyświetlaniu danych logów czasu.

Następne kroki

  • Dowiedz się więcej o używaniu atrybutów do analizowania danych o skuteczności.

  • Dowiedz się więcej o śledzeniu problemów z wydajnością w konsoli Firebase.

  • Skonfiguruj alerty dotyczące zmian w kodzie, które obniżają wydajność aplikacji. Możesz na przykład skonfigurować alert e-mail dla swojego zespołu, jeśli czas trwania określonego niestandardowego śladu kodu przekroczy ustawiony przez Ciebie próg.

  • Wyświetlanie szczegółowych raportów o sesjach użytkowników, w których możesz zobaczyć konkretny ślad w kontekście osi czasu innych śladów zebranych podczas tej samej sesji.