Eksportowanie danych z Monitorowania wydajności do BigQuery

Dane z Monitorowania wydajności z aplikacji Apple i na Androida możesz eksportować do BigQuery, analizy. BigQuery umożliwia analizowanie danych za pomocą BigQuery SQL, wyeksportowanie go do innego dostawcy chmury, a nawet korzystanie z dla niestandardowych modeli ML.

Włącz funkcję eksportowania BigQuery

  1. Przejdź do Integracje w konsoli Firebase, a następnie w BigQuery kliknij Połącz.

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

    Gdy włączysz eksportowanie danych do BigQuery na potrzeby Monitorowania wydajności, następuje:

    • Firebase wyeksportuje kopię istniejących danych do BigQuery; Początkowe rozpowszechnienie danych do eksportu może potrwać do 48 godzin na zakończenie.

    • Po utworzeniu zbioru danych jego lokalizacja nie można zmienić, ale możesz skopiować zbiór danych do innej lokalizacji lub ręcznie przenieść (ponownie utworzyć) zbiór danych w innej lokalizacji. Aby się uczyć Więcej informacji znajdziesz w artykule o zmienianiu lokalizacji zbioru danych.

    • Firebase regularnie synchronizuje dane z projektu Firebase w BigQuery; Te codzienne operacje eksportu kończą się zwykle w ciągu 24 godzin po ich wygenerowaniu.

    • Domyślnie wszystkie aplikacje w Twoim projekcie są połączone z BigQuery. Dowolne aplikacje, które dodasz później do projektu, zostaną automatycznie połączone BigQuery; Dostępne opcje określać, 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 zarejestrowanych zdarzeń dotyczących skuteczności. Każdy wiersz w tabeli odpowiada jednemu zdarzeniu dotyczącemu skuteczności mogą być następujące:

  • Zrzut czasu – logi czasu, które domyślnie zbierają dane „czas trwania”, który obejmuje uruchamianie aplikacji, aplikację na pierwszym planie i w tle; a także wszelkie niestandardowe ślady kodu wspierane przez programistę.

    • event_type to DURATION_TRACE
    • event_name jest taka sama jak nazwa logu czasu
  • Dane śledzenia – dane niestandardowe powiązane z: niestandardowe ślady kodu wspomagane przez programistę

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

    • event_type to SCREEN_TRACE
    • event_name to prefiks _st_ plus faktyczna nazwa ekranu
  • Żądanie sieciowe – logi czasu z całego okresu realizacji żądania sieciowego. (ślady żądań sieciowych HTTP)

    • event_type to NETWORK_REQUEST
    • event_name to sklasyfikowany wzorzec adresu URL żądania sieciowego.

Każde zdarzenie związane ze skutecznością zawiera atrybuty zdarzenia (takie jak kraj, operatora urządzenia klienta) oraz informacje dotyczące zdarzenia:

  • 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 na urządzeniu klienckim (początek śledzenia, uruchomienie sieci itp.)
app_display_version ciąg znaków Wyświetl wersję aplikacji (np. „4.1.7”)
  • Android – VersionName
  • iOS – CFBundleShortVersionString
wersja_kompilacji_aplikacji ciąg znaków Skompiluj wersję aplikacji (np. „1523456”)
  • Android – VersionCode
  • iOS – CFBundleVersion
Wersja systemu operacyjnego ciąg znaków Wersja systemu operacyjnego urządzenia klienckiego
  • Android – poziom interfejsu API Androida (na przykład „26”)
  • iOS – wersja iOS (np. „11.4”)
nazwa_urządzenia ciąg znaków nazwa urządzenia klienckiego (np. „Google Pixel”),
country ciąg znaków Dwuliterowy kod kraju, z którego pochodzi wydarzenie miało miejsce (na przykład „PL” lub „ZZ” w przypadku nieznanego kraju);
przewoźnik ciąg znaków Operator urządzenia klienckiego
typ_radio ciąg znaków 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 ciąg znaków Klucz atrybutu niestandardowego
atrybuty_niestandardowe.wartość ciąg znaków Wartość atrybutu niestandardowego
event_type ciąg znaków Rodzaj zdarzenia; możliwe wartości:
  • DURATION_TRACE – gromadzone ślady przez domyślnie dane „czas trwania”, które obejmują uruchomienie aplikacji, na pierwszym planie, w aplikacji w tle, a także w przypadku innych niestandardowe ślady kodu wspomagane przez programistę
  • SCREEN_TRACE – ślady z okresu ekran (ślady renderowania ekranu)
  • TRACE_METRIC – niestandardowe dane, które są powiązane z wspieranymi przez dewelopera niestandardowymi logami czasu
  • NETWORK_REQUEST – ślady z całego okresu żądania sieciowego (ślady żądań sieciowych HTTP)
event_name ciąg znaków Nazwa zdarzenia
  • Dla DURATION_TRACE – nazwa logu czasu
  • W przypadku TRACE_METRIC – nazwa danych niestandardowych
  • Przez SCREEN_TRACE – obserwowane: _st_ według nazwy logu czasu
  • Dla NETWORK_REQUEST – URL żądania sieciowego wzór
nazwa_śladu_nadrzędnego ciąg znaków Nazwa nadrzędnego logu czasu, który zawiera wskaźnik śledzenia
Występuje tylko w okresie TRACE_METRIC
informacje_śledzenia REKORD Występuje tylko w przypadku domeny DURATION_TRACE, SCREEN_TRACE i TRACE_METRIC
śledzenie_informacji.czas trwania_pl int64
  • Dotyczy: DURATION_TRACE i SCREEN_TRACE — Czas trwania („czas trwania”) od początku do końca argumentu ślad
  • Dla TRACE_METRIC – długość czasu („duration”) od początku do końca nadrzędnego logu czasu
. Jednostka: mikrosekunda
informacje_na_ekran. REKORD Występuje tylko w przypadku domeny SCREEN_TRACE
współczynnik_z_ekranu.slow_ramki float64 Współczynnik spowolnionych klatek w tym zapisie ekranu w zakresie od 0 do 1 (Na przykład wartość 0, 05 oznacza 5% klatek na tym ekranie renderowanie instancji trwało dłużej niż 16 ms)
współczynnik_na_ekranie.stosunek_zamrożenia_ramki float64 Współczynnik zablokowanych klatek w tym zapisie ekranu, od 0 do 1 (Na przykład wartość 0, 05 oznacza 5% klatek na tym ekranie renderowanie instancji trwało ponad 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, 404).
informacje_o_sieci.typ_mime_odpowiedzi ciąg znaków Typ MIME odpowiedzi sieciowej (np. „text/html”)
metoda_info.żądania_http_metody_sieci ciąg znaków 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 event_timestamp w przypadku żądania sieciowego wysyłanie zakończone
Jednostka: mikrosekunda
informacje_o_sieci.odpowiedź_zainicjowana_w_czasie_pl int64 Mikrosekundy po event_timestamp w przypadku odpowiedzi sieci inicjowanie
Jednostka: mikrosekunda
network_info.response_completed_time_us int64 Mikrosekundy po event_timestamp w przypadku odpowiedzi sieci zakończono
Jednostka: mikrosekunda

Co można zrobić z wyeksportowanymi danymi?

W sekcjach poniżej znajdziesz przykłady zapytań, których możesz użyć BigQuery z wyeksportowanymi danymi 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

Na przykład możesz porównać proporcje zablokowanych klatek z liczbą czas spędzany przez użytkowników na każdym ekranie aplikacji, gdy korzystają z różnych typów radia (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 został zinstrumentowany niestandardowy log czasu do wczytywania z dysk z atrybutem niestandardowym file-extension i danymi niestandardowymi (a TRACE_METRIC) o nazwie cache-hit, która ma wartość 1, jeśli trafienie w pamięci podręcznej jest włączone, oraz 0, jeśli w pamięci podręcznej.

Możesz np. obliczyć współczynnik trafień w pamięci podręcznej dla wczytywania 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 na przykład sprawdzić, o jakiej porze dnia użytkownicy z Polski wysyłanie żądań sieciowych 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 przy użyciu 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

  • Przesłanie wyodrębnij zadanie za pomocą interfejsu API lub bibliotek klienta.

Ceny

Eksport danych z Monitorowania wydajności i BigQuery jest bezpłatny udostępnia duże, bezpłatne limity wykorzystania. Szczegółowe informacje znajdziesz tutaj: Cennik BigQuery lub piaskownicy BigQuery.