Eksportowanie danych z Monitorowania wydajności do BigQuery

Dane z Monitorowania wydajności z aplikacji Apple i na Androida możesz eksportować do BigQuery, aby poddawać je dalszej analizie. BigQuery umożliwia analizowanie danych za pomocą BigQuery SQL, eksportowanie ich do innego dostawcy chmury, a nawet wykorzystywanie danych w niestandardowych modelach ML.

Włącz funkcję eksportowania BigQuery

  1. Otwórz stronę Integracje w konsoli Firebase, a potem kliknij Połącz na karcie BigQuery.

  2. Postępuj zgodnie z instrukcjami wyświetlanymi na ekranie, aby włączyć BigQuery.

    Po włączeniu eksportu do BigQuery na potrzeby monitorowania wydajności:

    • Firebase eksportuje kopię istniejących danych do BigQuery. Wstępne propagowanie danych do eksportu może potrwać do 48 godzin.

    • Po utworzeniu zbioru danych jego lokalizacji nie można już zmienić. Możesz jednak skopiować zbiór danych do innej lokalizacji lub przenieść go ręcznie (ponownie utworzyć) w innej lokalizacji. Więcej informacji znajdziesz w artykule o zmienianiu lokalizacji zbioru danych.

    • Firebase konfiguruje regularne synchronizacje danych z projektu Firebase z BigQuery. Te codzienne operacje eksportu kończą się zwykle w ciągu 24 godzin od zaplanowania procesu.

    • Domyślnie wszystkie aplikacje w Twoim projekcie są połączone z BigQuery. Wszystkie aplikacje, które dodasz później do projektu, zostaną automatycznie połączone z BigQuery. Możesz określić, które aplikacje mają wysyłać dane.

Aby wyłączyć funkcję BigQuery Export, odłącz projekt w konsoli Firebase.

Jakie dane są eksportowane do BigQuery?

W przypadku każdej aplikacji w projekcie eksport tworzy tabelę zawierającą wszystkie zarejestrowane zdarzenia wydajności. Każdy wiersz w tabeli to jedno zdarzenie dotyczące skuteczności, które może być jednym z tych zdarzeń:

  • Zrzut czasu trwania – logi czasu, które domyślnie zbierają dane czasu trwania „czasu trwania”, które obejmują uruchomienie aplikacji, działanie aplikacji w tle i w tle, a także wszelkie niestandardowe śledzenia kodu obsługiwane przez programistę

    • Ceny event_typeDURATION_TRACE
    • event_name jest taka sama jak nazwa logu czasu
  • Wskaźnik śledzenia – niestandardowe dane powiązane z niestandardowymi logami czasu kodu obsługiwanymi przez programistów

    • Ceny event_typeTRACE_METRIC
    • event_name to nazwa danych
    • parent_trace_name to nazwa logu czasu zawierającego ten wskaźnik
  • Zrzut ekranu – ślady z całego okresu wyświetlania ekranu (ślady renderowania ekranu)

    • Ceny event_typeSCREEN_TRACE
    • event_name to prefiks _st_ plus faktyczna nazwa ekranu
  • Żądanie sieciowe – logi czasu z okresu trwania żądania sieciowego (ślady żądań sieciowych HTTP)

    • Ceny event_typeNETWORK_REQUEST
    • event_name to sklasyfikowany wzorzec adresu URL żądania sieciowego.

Każde zdarzenie związane z skutecznością zawiera atrybuty zdarzenia (takie jak kraj i operator urządzenia klienta) oraz związane z nim informacje:

  • Zrzuty ekranu dotyczące czasu trwania, wskaźniki śledzenia i ślady ekranu zawierają te dane: trace_info
  • Dane logu czasu zawierają parametr trace_info.metric_info
  • Zrzuty ekranu zawierają: trace_info.screen_info
  • Ślady sieci zawierają: network_info

Szczegółowy schemat danych

Nazwa pola Typ Opis
event_timestamp sygnatura czasowa Sygnatura czasowa od początku epoki, w której rozpoczęło się zdarzenie na urządzeniu klienckim (początek śledzenia, uruchomienie sieci itp.)
app_display_version string, Wyświetl wersję aplikacji (np. „4.1.7”)
  • Android – VersionName
  • iOS – CFBundleShortVersionString
wersja_kompilacji_aplikacji string, Skompiluj wersję aplikacji (np. „1523456”)
  • Android – VersionCode
  • iOS – CFBundleVersion
Wersja systemu operacyjnego string, Wersja systemu operacyjnego urządzenia klienckiego
  • Android – poziom interfejsu API Androida (na przykład „26”)
  • iOS – wersja iOS (np. „11.4”)
nazwa_urządzenia string, nazwa urządzenia klienckiego (np. „Google Pixel”),
country string, Dwuliterowy kod kraju, w którym miało miejsce zdarzenie (na przykład „PL” lub „ZZ” w przypadku nieznanego kraju).
przewoźnik string, Operator urządzenia klienckiego
typ_radio string, Aktywny typ sygnału radiowego, w którym doszło do zdarzenia (na przykład „WIFI”)
atrybuty_niestandardowe ARRAY<RECORD> Wszystkie atrybuty niestandardowe dołączone do tego wydarzenia
atrybuty_niestandardowe.klucz string, Klucz atrybutu niestandardowego
atrybuty_niestandardowe.wartość string, Wartość atrybutu niestandardowego
event_type string, Rodzaj zdarzenia; możliwe wartości:
  • DURATION_TRACE – logi czasu, które domyślnie zbierają wskaźnik czasu trwania, który obejmuje uruchomienie aplikacji, aplikację na pierwszym planie i w tle, a także wszelkie niestandardowe śledzenia kodu wspomagane przez programistę.
  • SCREEN_TRACE – logi czasu z całego okresu wyświetlania ekranu (ślady renderowania ekranu)
  • TRACE_METRIC – niestandardowe wskaźniki powiązane z niestandardowymi logami czasu kodu obsługiwanymi przez programistę
  • NETWORK_REQUEST – logi czasu z okresu trwania żądania sieciowego (ślady żądań sieciowych HTTP)
event_name string, Nazwa zdarzenia:
  • Dla DURATION_TRACE – nazwa logu czasu
  • W przypadku TRACE_METRIC – nazwa danych niestandardowych
  • Dla SCREEN_TRACE_st_, po czym następuje nazwa logu czasu
  • Dla NETWORK_REQUEST – wzorzec adresu URL żądania sieciowego
nazwa_śladu_nadrzędnego string, Nazwa nadrzędnego logu czasu, który zawiera wskaźnik śledzenia
występuje tylko dla TRACE_METRIC
informacje_śledzenia REKORD Występuje tylko w przypadku DURATION_TRACE, SCREEN_TRACE i TRACE_METRIC
śledzenie_informacji.czas trwania_pl int64
  • Dla DURATION_TRACE i SCREEN_TRACE – długość czasu („duration”) od początku do końca logu czasu
  • Dla TRACE_METRIC – długość czasu („duration”) od początku do końca logu czasu nadrzędnego
Jednostka: mikrosekunda
informacje_na_ekran. REKORD Występuje tylko w przypadku domeny SCREEN_TRACE
współczynnik_z_ekranu.slow_ramki float64 Stosunek liczby spowolnionych klatek w przypadku tego zrzutu ekranu wynosi od 0 do 1 (na przykład wartość 0, 05 oznacza, że wyrenderowanie 5% klatek w tej instancji ekranu trwało dłużej niż 16 ms)
współczynnik_na_ekranie.stosunek_zamrożenia_ramki float64 Współczynnik zablokowanych klatek dla tego zrzutu ekranu w zakresie od 0 do 1 (na przykład wartość 0, 05 oznacza, że wyrenderowanie 5% klatek w tej instancji ekranu trwało dłużej niż 700 ms)
informacje_śledzenia.dane_informacje_o_danych REKORD Występuje tylko w przypadku domeny TRACE_METRIC
informacje_śledzenia.dane_informacje.wartość_metryczna int64 Wartość wskaźnika logu czasu
informacje_o_sieci REKORD Występuje tylko w przypadku domeny NETWORK_REQUEST
informacje_o_sieci.kod_odpowiedzi int64 Kod odpowiedzi HTTP odpowiedzi sieciowej (np. 200 lub 404)
informacje_o_sieci.typ_mime_odpowiedzi string, Typ MIME odpowiedzi sieciowej (np. „text/html”)
metoda_info.żądania_http_metody_sieci string, Metoda HTTP żądania sieciowego (np. „GET” lub „POST”)
network_info.request_payload_bytes int64 Rozmiar ładunku żądania sieciowego
Jednostka: bajt
informacje_o_sieci.bajty_ładunku_odpowiedzi int64 Rozmiar ładunku odpowiedzi sieciowej
Jednostka: bajt
network_info.request_completed_time_pl int64 Mikrosekundy po zakończeniu wysyłania żądań sieciowych event_timestamp
Jednostka: mikrosekunda
informacje_o_sieci.odpowiedź_zainicjowana_w_czasie_pl int64 Mikrosekundy po zainicjowaniu odpowiedzi sieci (event_timestamp)
Jednostka: mikrosekunda
network_info.response_completed_time_us int64 Mikrosekundy po event_timestamp po zakończeniu odpowiedzi sieci
Jednostka: mikrosekunda

Co można zrobić z wyeksportowanymi danymi?

W sekcjach poniżej znajdziesz przykłady zapytań, które możesz wykonać w BigQuery na podstawie wyeksportowanych danych z monitorowania wydajności.

Wyświetl zestawienie średniego czasu oczekiwania na uruchomienie aplikacji według kraju

SELECT AVG(trace_info.duration_us), country
FROM `TABLE_NAME`
WHERE _PARTITIONTIME > TIMESTAMP("YYYY-MM-DD")
AND event_type = "DURATION_TRACE"
AND event_name = "_app_start"
GROUP BY 2;

Sprawdzanie współczynnika zablokowanych klatek w różnych warunkach

Możesz np. porównać stosunek zablokowanych klatek do czasu, jaki użytkownicy spędzają na poszczególnych ekranach aplikacji, gdy korzystają z różnych typów łączności (Wi-Fi, 4G itp.).

SELECT
  AVG(trace_info.duration_us / 1000000) AS seconds_on_screen,
  AVG(trace_info.screen_info.frozen_frame_ratio) AS frozen_frame_ratio,
  event_name,
  radio_type
FROM `TABLE_NAME`
WHERE _PARTITIONTIME > TIMESTAMP("YYYY-MM-DD")
AND event_type = "SCREEN_TRACE"
GROUP BY event_name, radio_type
ORDER BY event_name, radio_type;

Współczynnik trafień w pamięci podręcznej Compute do wczytywania określonych typów plików z dysku

W tej analizie założono, że w przypadku wczytywania z dysku niestandardowego śledzenia kodu został zinstruowany niestandardowy atrybut o nazwie file-extension oraz dane niestandardowe (a TRACE_METRIC) o nazwie cache-hit, które mają wartość 1 w przypadku trafienia w pamięci podręcznej i 0 w przypadku jej braku.

Możesz np. obliczyć częstotliwość trafień w pamięci podręcznej przy wczytywaniu plików PNG z dysku:

SELECT AVG(trace_info.metric_info.metric_value) AS cache_hit_rate
FROM `TABLE_NAME`
WHERE _PARTITIONTIME > TIMESTAMP("YYYY-MM-DD")
AND event_type = "TRACE_METRIC"
AND event_name = "cache-hit"
AND parent_trace_name = "loadFromDisk"
AND STRUCT("file-extension", "png") IN UNNEST(custom_attributes);

Sprawdź, o jakiej porze dnia użytkownicy wysyłają żądania sieciowe

Możesz np. sprawdzić, o jakiej porze dnia użytkownicy ze Stanów Zjednoczonych wysyłają żądania z Twojej aplikacji:

SELECT
  count(1) AS hourly_count,
  EXTRACT(HOUR FROM event_timestamp) AS hour_of_day
FROM `TABLE_NAME`
WHERE _PARTITIONTIME > TIMESTAMP("YYYY-MM-DD")
AND event_type = "NETWORK_REQUEST"
AND country = "US"
GROUP BY 2 ORDER BY 2;

Zabierz dane z Monitorowania wydajności w dowolne miejsce

Czasami chcesz uzyskać dostęp do danych z Monitorowania wydajności po stronie serwera lub przekazać je do innego rozwiązania innej firmy. Obecnie eksportowanie danych jest bezpłatne.

Możesz eksportować dane na następujące sposoby:

  • Korzystanie z internetowego interfejsu użytkownika BigQuery

  • Uruchamianie polecenia interfejsu wiersza poleceń bq extract

  • Przesyłanie wyodrębniania zadania za pomocą interfejsu API lub bibliotek klienta.

Ceny

Eksport danych z Monitorowania wydajności jest bezpłatny, a BigQuery zapewnia duże bezpłatne limity wykorzystania. Szczegółowe informacje znajdziesz w cenniku BigQuery i piaskownicy BigQuery.