Eksportowanie danych z Monitorowania wydajności do BigQuery

Możesz eksportować dane usługi Performance Monitoring z aplikacji Apple i na Androida do: BigQuery, aby dowiedzieć się więcej analizy. BigQuery umożliwia analizowanie danych za pomocą BigQuery SQL, wyeksportuj go do innego dostawcy chmury, a nawet używaj dla niestandardowych modeli ML.

Włącz eksportowanie danych BigQuery

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

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

    Gdy włączysz eksport BigQuery dla Performance Monitoring: następuje:

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

      • Dostępne opcje ręcznie zaplanuj uzupełnianie danych w ciągu ostatnich 30 dni lub w najnowszym dniu, gdy opcja BigQuery była włączona eksportu (w zależności od tego, co jest najnowsze).
    • 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 skonfiguruje regularne synchronizowanie danych z Twojego projektu Firebase z kontem BigQuery. Te codzienne operacje eksportu kończą się zwykle w ciągu 24 godzin po ich wygenerowaniu.

    • Domyślnie wszystkie aplikacje w projekcie są połączone z usługą 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ć eksportowanie danych z BigQuery: odłącz projekt w konsoli Firebase.

Jakie dane są eksportowane do usługi 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 to pojedyncze zdarzenie związane z skutecznością, które może być jednym z tych:

  • Śledzenie czasu trwania – śledzenie, które domyślnie zbiera dane o „czasie trwania” i obejmujące uruchamianie aplikacji, aplikację na pierwszym planie i aplikację w tle, a także dowolne ścieżki kodu niestandardowego z użyciem narzędzia dewelopera.

    • 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 rzeczywista 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 podział według wzoru 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
  • Ścieżki sieciowe 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”)
  • Na urządzeniu z Androidem: 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 klienta (np. „Google Pixel”)
country ciąg znaków Dwuliterowy kod kraju, z którego pochodziło zdarzenie (np. „US” lub „ZZ” w przypadku nieznanego kraju)
przewoźnik ciąg znaków Operator urządzenia klienckiego
typ_radio ciąg znaków Aktywny typ oznaczenia miejsca, w którym miało miejsce zdarzenie (na przykład „WIFI”)
atrybuty_niestandardowe ARRAY<RECORD> Wszystkie atrybuty niestandardowe przypisane do tego zdarzenia
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
  • NETWORK_REQUEST – wzorzec adresu URL żądania sieci
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
trace_info.duration_us int64
  • W przypadku DURATION_TRACESCREEN_TRACE: — Długość czasu („czas trwania”) od początku do końca ścieżki
  • 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
network_info REKORD Tylko w przypadku NETWORK_REQUEST
informacje_o_sieci.kod_odpowiedzi int64 kod odpowiedzi HTTP odpowiedzi sieciowej (np. 200, 404).
network_info.response_mime_type ciąg znaków Typ MIME odpowiedzi sieciowej (np. „text/html”)
network_info.request_http_method ciąg znaków Metoda HTTP żądania sieciowego (np. „GET” lub „POST”).
network_info.request_payload_bytes int64 Rozmiar ładunku żądania sieciowego
Jednostka: bajt
network_info.response_payload_bytes 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 względem wyeksportowanych danych z Performance Monitoring.

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 swoje dane Performance Monitoring w dowolne miejsce

Czasami chcesz uzyskać dostęp do swoich danych w usłudze Performance Monitoring 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:

  • Za pomocą interfejsu internetowego BigQuery

  • Uruchamianie polecenia interfejsu wiersza poleceń bq extract

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

Ceny

Eksportowanie danych z Performance Monitoring jest bezpłatne, a BigQuery oferuje duże bezpłatne limity użytkowania. Szczegółowe informacje znajdziesz w cenniku BigQuery lub w BigQuerysandboksie.