Dodawanie niestandardowego monitorowania na potrzeby określonego kodu aplikacji

Monitorowanie wydajności gromadzi ślady, które ułatwiają monitorowanie wydajności aplikacji. Ślad to raport z danymi o wydajności zebranymi w aplikacji między dwoma punktami w czasie.

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

Domyślnym wskaźnikiem niestandardowego logu czasu jest „czas trwania” (czas między jego punktem początkowym a końcowym). Możesz też dodać dane niestandardowe.

W swoim kodzie definiujesz początek i koniec niestandardowego śledzenia kodu za pomocą interfejsów API udostępnianych przez pakiet SDK Performance Monitoring. W przypadku aplikacji na Androida możesz też monitorować określone metody za pomocą adnotacji @AddTrace. Niestandardowe ślady kodu można uruchamiać w dowolnym momencie po utworzeniu i są bezpieczne w wątkach.

Ponieważ domyślne dane zbierane dla tych logów czasu to „czas trwania”, czasami są one nazywane „śladami czasu trwania”.

Dane z tych logów czasu możesz wyświetlić na podkarcie Niestandardowe logi czasu tabeli logów czasu 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 niestandardowych logów czasu Monitorowanie wydajności automatycznie rejestruje atrybuty domyślne (typowe metadane, takie jak wersja aplikacji, kraj, urządzenie itp.), dzięki czemu możesz filtrować dane do logu czasu w konsoli Firebase. Możesz też dodawać i monitorować atrybuty niestandardowe (takie jak poziom gry czy właściwości użytkownika).

Możesz dodatkowo skonfigurować niestandardowy log czasu śledzenia, aby rejestrować dane niestandardowe dla zdarzeń związanych z wydajnością, które występują w zakresie logu czasu. Możesz np. utworzyć dane niestandardowe obejmujące liczbę trafień i niepowodzeń w pamięci podręcznej lub liczbę przypadków, gdy interfejs użytkownika nie odpowiada przez zauważalny okres.

Niestandardowe atrybuty i dane są wyświetlane w konsoli Firebase wraz z domyślnymi atrybutami i domyślnymi danymi śledzenia.

Dodaj niestandardowe logi czasu kodu

Za pomocą interfejsu Trace API do monitorowania wydajności możesz dodać niestandardowe logi czasu na potrzeby monitorowania określonego kodu aplikacji.

Pamiętaj:

  • Aplikacja może mieć wiele niestandardowych logów czasu.
  • Jednocześnie może być uruchomiony więcej niż 1 niestandardowy log czasu 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ą zawierać znaku podkreślenia (_), a maksymalna długość to 100 znaków.
  • Niestandardowe logi czasu kodu obsługują dodawanie niestandardowych danych i atrybutów niestandardowych.

Aby rozpocząć i zatrzymać niestandardowy log czasu, umieść kod, który chcesz śledzić, za pomocą wierszy podobnych do tych (w tym przykładzie użyto niestandardowej nazwy logu czasu test_trace):

Kotlin+KTX

// 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) Monitoruj określone metody za pomocą @AddTrace

Aplikacje na Androida obsługują też adnotacje @AddTrace, które umożliwiają konfigurowanie niestandardowych logów czasu. Dzięki tej funkcji log czasu zaczyna się od początku wskazanej metody i kończy po jej zakończeniu, w tym po zakończeniu wywołanego przez nią działania.

Możesz na przykład utworzyć niestandardowy log czasu kodu o nazwie onCreateTrace, który jest uruchamiany po wywołaniu metody onCreate().

Kotlin+KTX

// 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 niestandardowych wskaźników do niestandardowych logów czasu kodu

Za pomocą interfejsu Trace API do monitorowania wydajności możesz dodawać niestandardowe wskaźniki do niestandardowych logów czasu kodu.

Pamiętaj:

  • Nazwy danych niestandardowych muszą spełniać te wymagania: bez znaków odstępu na początku ani na końcu, bez znaku podkreślenia (_) i nie mogą mieć więcej niż 100 znaków.
  • Każdy niestandardowy ślad kodu może rejestrować maksymalnie 32 wskaźniki (wliczając domyślne dane Czas trwania).

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

Kotlin+KTX

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 na potrzeby niestandardowych logów czasu

Za pomocą interfejsu Performance Monitoring Trace API możesz dodać niestandardowe atrybuty do niestandardowych logów czasu kodu.

Aby używać atrybutów niestandardowych, dodaj do aplikacji kod, który definiuje atrybut i powiąże go z konkretnym niestandardowym logem czasu w kodzie. Atrybut niestandardowy możesz ustawić w dowolnym momencie między rozpoczęciem śledzenia a jego zatrzymaniem.

Pamiętaj:

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

    • Brak odstępu na początku i na końcu, bez znaku podkreślenia (_) na początku i na końcu.
    • Brak pokoi
    • Maksymalna długość to 32 znaki.
    • Dozwolone znaki w nazwie to A-Z, a-z i _.
  • Każdy niestandardowy ślad 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+KTX

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 określonych danych w panelu

Aby poznać trendy dotyczące kluczowych danych, dodaj je do tablicy wskaźników u góry panelu Skuteczność. Możesz szybko wykrywać regresje, analizując zmiany z tygodnia na tydzień lub sprawdzać, czy ostatnie zmiany w kodzie poprawiają wydajność.

obraz tablicy wskaźników w panelu Monitorowanie wydajności Firebase

Aby dodać wskaźnik do tablicy wskaźników, wykonaj te czynności:

  1. W konsoli Firebase otwórz panel Skuteczność.
  2. Kliknij pustą kartę wskaźnika, a potem wybierz jeden z istniejących rodzajów danych, który chcesz dodać do swojej tablicy.
  3. Kliknij na karcie wskaźnika, aby wyświetlić więcej opcji, na przykład zastąpić lub usunąć wskaźnik.

Tablica wskaźników pokazuje zebrane dane wskaźników w czasie, zarówno w postaci graficznej, jak i liczbowej zmiany procentowej.

Dowiedz się więcej o korzystaniu z panelu.

Wyświetlanie logów czasu i ich danych

Aby wyświetlić logi czasu, w konsoli Firebase otwórz panel Skuteczność, przewiń w dół do tabeli logów czasu i kliknij odpowiednią podkartę. Tabela zawiera najważniejsze wskaźniki dla każdego logu czasu. Możesz nawet sortować listę według zmiany procentowej dla konkretnego wskaźnika.

Monitorowanie wydajności to strona rozwiązywania problemów w konsoli Firebase, na której możesz sprawdzić zmiany danych. Dzięki temu możesz szybko rozwiązywać problemy z wydajnością i zminimalizować wpływ problemów z wydajnością na Twoje aplikacje i użytkowników. Znajdziesz na niej informacje o potencjalnych problemach z wydajnością, np. w takich sytuacjach:

  • Gdy wybierzesz odpowiednie dane na pulpicie, zauważysz sporą różnicę.
  • Po posortowaniu tabeli logów czasu największe delta wyświetlają się u góry. Zauważasz znaczną zmianę procentową.
  • Otrzymasz e-maila z powiadomieniem o problemie z wydajnością.

Stronę rozwiązywania problemów możesz otworzyć na kilka sposobów:

  • W panelu wskaźników kliknij przycisk Wyświetl szczegóły wskaźnika.
  • Na dowolnej karcie wskaźnika kliknij => Wyświetl szczegóły. Na stronie rozwiązywania problemów wyświetlają się informacje o wybranym wskaźniku.
  • W tabeli logów czasu kliknij nazwę logu czasu lub dowolną wartość wskaźnika w wierszu, który jest z nim powiązany.
  • W powiadomieniu e-mail kliknij Zbadaj teraz.

Po kliknięciu nazwy logu czasu w tabeli logów czasu możesz przeanalizować interesujące Cię wskaźniki. Kliknij przycisk Filtruj, aby przefiltrować dane według atrybutu, na przykład:

obraz przedstawiający dane Monitorowania wydajności Firebase filtrowane według atrybutu
  • Aby wyświetlić dane o poprzedniej lub najnowszej wersji, zastosuj filtrowanie według wersji aplikacji.
  • Filtruj według opcji Urządzenie, aby dowiedzieć się, jak starsze urządzenia obsługują Twoją aplikację
  • Filtruj według kraju, aby sprawdzić, czy lokalizacja bazy danych nie ma wpływu na określony region

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

Następne kroki

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

  • Dowiedz się więcej o tym, jak śledzić problemy 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 śledzenia kodu przekroczy ustawiony próg.

  • Wyświetl szczegółowe raporty sesji użytkowników, w których możesz zobaczyć konkretny log czasu w kontekście osi czasu innych logów czasu zebranych podczas tej samej sesji.