Eksportuj dane monitorowania wydajności do BigQuery

Można eksportować dane z monitorowania wydajności iOS i Android w BigQuery do dalszej analizy. BigQuery pozwala analizować dane za pomocą BigQuery SQL, eksportować je do innego dostawcy chmury, a nawet używać danych do niestandardowych modeli ML.

Włącz eksport BigQuery

  1. Przejdź do Integrations strony konsoli Firebase, a następnie kliknij link na karcie BigQuery.

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

Gdy połączysz swój projekt z BiqQuery:

  • Firebase eksportuje kopię Twoich danych do BigQuery.

    • Podczas początkowego łączenia Firebase automatycznie planuje w tabelach BigQuery uzupełniać dane z ostatnich 7 dni, dzięki czemu możesz od razu zacząć eksperymentować. Poczekaj kilka godzin, aż początkowe dane będą dostępne w BigQuery.

    • Można również ręcznie dane harmonogramów zasypki dla maksymalnie w ciągu ostatnich 30 dni.

  • Firebase konfiguruje codzienne synchronizacje danych z projektu Firebase do BigQuery.

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

Aby dezaktywować eksport BigQuery, odłączyć swój projekt w konsoli Firebase.

Jakie dane są eksportowane do BigQuery?

Dla każdej aplikacji w projekcie eksport tworzy tabelę zawierającą wszystkie przechwycone zdarzenia wydajności. Każdy wiersz w tabeli to pojedyncze zdarzenie dotyczące skuteczności, które może być jednym z następujących:

  • Czas ślad - ślady, które zbierają, domyślnie metryką „czas”, które obejmują rozpoczęcia aplikacji, app-w-planie i APP-in-tło, a także śladów niestandardowy kod programisty-instrumentalnej

    • event_type jest DURATION_TRACE
    • event_name jest taka sama jak nazwa śladowej
  • Śledzenie metryczny - niestandardowe dane, które są związane z deweloperów oprzyrządowanie śladów kodu niestandardowego

    • event_type jest TRACE_METRIC
    • event_name to nazwa metryka
    • parent_trace_name to nazwa ślad, który zawiera tę metrykę
  • Ślad ekranu - ślady obejmujących żywotność sito (ślady wykończeniowych ekran)

    • event_type jest SCREEN_TRACE
    • event_name znaczy przedrostek _st_ plus rzeczywisty pseudonim
  • Żądanie sieciowe - ślady obejmujących żywotność żądania sieciowego (HTTP żądanie sieciowe ślady)

    • event_type jest NETWORK_REQUEST
    • event_name jest podzielone wzór adresu URL żądania sieci

Każde zdarzenie wydajności zawiera atrybuty zdarzenia (takie jak kraj i operator urządzenia klienckiego), a także informacje dotyczące zdarzenia:

  • Ślady trwania, metryki śledzenia, a ślady ekran zawierać trace_info
  • Metryki zawierać śladowe trace_info.metric_info
  • Przebiegów zawierać trace_info.screen_info
  • Ślady sieciowe zawierają network_info

Szczegółowy schemat danych

Nazwa pola Rodzaj Opis
event_timestamp znak czasu Sygnatura czasowa od Epoki rozpoczęcia zdarzenia na urządzeniu klienckim (rozpoczęcie śledzenia, uruchomienie sieci itp.)
app_display_version strunowy Wyświetl wersję aplikacji (na przykład „4.1.7”)
  • Dla Androida - VersionName
  • Dla iOS - CFBundleShortVersionString
wersja_kompilacji_aplikacji strunowy Wersja kompilacji aplikacji (na przykład „1523456”)
  • Dla Androida - VersionCode
  • Dla iOS - CFBundleVersion
wersja_osu strunowy Wersja systemu operacyjnego urządzenia klienckiego
  • Dla Androida — poziom API Androida (na przykład „26”)
  • Dla iOS — wersja iOS (na przykład „11.4”)
Nazwa urządzenia strunowy Nazwa urządzenia klienta (na przykład „Google Pixel”)
kraj strunowy Dwuliterowy kod kraju, z którego odbyło się wydarzenie (na przykład „US” lub „ZZ” w przypadku nieznanego kraju)
przewoźnik strunowy Nośnik urządzenia klienckiego
typ_radia strunowy Aktywny typ radia, gdy zdarzenie miało miejsce (na przykład „WIFI”)
niestandardowe_atrybuty TABLICA<NAGRYWANIE> Wszystkie niestandardowe atrybuty dołączone do tego wydarzenia
custom_attributes.key strunowy Klucz atrybutu niestandardowego
custom_attributes.value strunowy Wartość atrybutu niestandardowego
typ wydarzenia strunowy rodzaj wydarzenia; możliwa wartość:
  • DURATION_TRACE - ślady, które zbierają, domyślnie metryką „czas”, które obejmują rozpoczęcia aplikacji, app-w-planie i APP-in-tło, a także śladów niestandardowy kod programisty-instrumentalnej
  • SCREEN_TRACE - ślady obejmujących żywotność sito (ślady wykończeniowych ekran)
  • TRACE_METRIC - niestandardowe dane, które są powiązane z autora oprzyrządowania śladów własnego kodu
  • NETWORK_REQUEST - ślady obejmujących żywotność żądania do sieci (sieć żądania HTTP ślady)
Nazwa wydarzenia strunowy Nazwa wydarzenia
  • Dla DURATION_TRACE - imię śladowej
  • Dla TRACE_METRIC - niestandardowej nazwy metrycznym
  • Dla SCREEN_TRACE - _st_ następuje nazwa śladowej
  • Dla NETWORK_REQUEST - sieć URL żądania wzór
rodzic_trace_name strunowy Nazwa śladu nadrzędnego, który przenosi metrykę śladu
Tylko obecni TRACE_METRIC
informacje o_śledzeniu NAGRYWAĆ Tylko obecni DURATION_TRACE , SCREEN_TRACE i TRACE_METRIC
trace_info.duration_us int64
  • Dla DURATION_TRACE i SCREEN_TRACE - długość czasu ( „czas”) od początku do końca śladu
  • Dla TRACE_METRIC - długość czasu ( „czas”) od początku do końca śladu dominującej
Jednostka: mikrosekunda
trace_info.screen_info NAGRYWAĆ Tylko obecni SCREEN_TRACE
trace_info.screen_info.slow_frame_ratio pływak64 Stosunek wolnych klatek dla tego śladu ekranu, od 0 do 1 (na przykład wartość 0,05 oznacza, że ​​renderowanie 5% klatek dla tego wystąpienia ekranu zajęło ponad 16 ms)
trace_info.screen_info.frozen_frame_ratio pływak64 Stosunek zablokowanych ramek dla tego śladu ekranu, od 0 do 1 (na przykład wartość 0,05 oznacza, że ​​renderowanie 5% ramek dla tego wystąpienia ekranu zajęło ponad 700 ms)
trace_info.metric_info NAGRYWAĆ Tylko obecni TRACE_METRIC
trace_info.metric_info.metric_value int64 Wartość metryki śledzenia
informacje o_sieci NAGRYWAĆ Tylko obecni NETWORK_REQUEST
informacje_sieciowe.kod_odpowiedzi int64 Kod odpowiedzi HTTP dla odpowiedzi sieciowej (na przykład 200, 404)
network_info.response_mime_type strunowy Typ MIME odpowiedzi sieciowej (na przykład „text/html”)
network_info.request_http_method strunowy Metoda HTTP żądania sieciowego (na przykład „GET” lub „POST”)
network_info.request_payload_bytes int64 Rozmiar ładunku żądania sieciowego
Jednostka: bajt
network_info.response_payload_bytes int64 Rozmiar ładunku odpowiedzi sieci
Jednostka: bajt
network_info.request_completed_time_us int64 Mikrosekund po event_timestamp podczas wysyłania żądania sieć jest pełna
Jednostka: mikrosekunda
network_info.response_initiated_time_us int64 Mikrosekundy po event_timestamp gdy odpowiedź sieci jest inicjowane
Jednostka: mikrosekunda
network_info.response_completed_time_us int64 Mikrosekund po event_timestamp gdy odpowiedź sieć jest zakończona
Jednostka: mikrosekunda

Co możesz zrobić z wyeksportowanymi danymi?

W poniższych sekcjach znajdziesz przykłady zapytań, które możesz uruchomić w BigQuery w odniesieniu do wyeksportowanych danych monitorowania wydajności.

Wyświetl rozkład ś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;

Sprawdź proporcje zamrożonych ramek w różnych warunkach

Na przykład możesz sprawdzić stosunek zamrożonych klatek do ilości czasu spędzanego przez użytkowników na każdym ekranie Twojej aplikacji, gdy korzystają z różnych typów radia (WiFi, 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;

Oblicz współczynnik trafień w pamięć podręczną dla ładowania niektórych typów plików z dysku

Analiza ta zakłada, że oprzyrządowanie do niestandardowego kodu śledzenia do załadunku z dysku o nazwie atrybutu niestandardowego file-extension i niestandardowych danych (a TRACE_METRIC ) o nazwie cache-hit , który jest ustawiony na 1 , gdy cache hit i 0 jeśli cache przegapić.

Na przykład możesz obliczyć współczynnik trafień w pamięci podręcznej podczas ładowania 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 której godzinie użytkownicy wysyłają żądania sieciowe

Możesz na przykład sprawdzić, o której godzinie użytkownicy ze Stanów Zjednoczonych wysyłają żądania sieciowe 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 monitorowania wydajności w dowolne miejsce

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

Możesz wyeksportować swoje dane poprzez:

  • Korzystanie z internetowego interfejsu użytkownika BigQuery

  • Uruchamianie poleceń CLI bq extract

  • Składając ofertę ekstrakt poprzez API lub bibliotek klienckich.

cennik

Nie ma opłat za eksportowanie danych z Monitorowania wydajności, a BigQuery zapewnia hojne limity bezpłatnego użytkowania. W celu uzyskania szczegółowych informacji, patrz cen BigQuery lub piaskownicy BigQuery .