Check out what’s new from Firebase at Google I/O 2022. Learn more

Eksportuj dane monitorowania wydajności do BigQuery

Możesz eksportować dane monitorowania wydajności z aplikacji Apple i Android do BigQuery w celu 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. Wejdź na stronę Integracje w 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 włączysz eksport BigQuery do monitorowania wydajności:

  • Firebase eksportuje kopię Twoich istniejących danych do BigQuery.

    • Podczas początkowego łączenia Firebase automatycznie planuje w tabelach BigQuery wypeł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żesz także ręcznie zaplanować uzupełnianie danych do ostatnich 30 dni.

  • Po utworzeniu zestawu danych lokalizacji nie można zmienić, ale można skopiować zestaw danych do innej lokalizacji lub ręcznie przenieść (odtworzyć) zestaw danych w innej lokalizacji. Aby dowiedzieć się więcej, zobacz Zmienianie lokalizacji zbioru danych .

  • Firebase konfiguruje regularne synchronizacje danych z projektu Firebase do BigQuery. Te codzienne operacje eksportowe rozpoczynają się o 4:00 czasu pacyficznego i zwykle kończą się w ciągu 24 godzin.

  • 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łają dane .

Aby dezaktywować eksport BigQuery, odłącz 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:

  • Śledzenie czasu trwania — ślady, które domyślnie zbierają metrykę „czasu trwania”, która obejmuje uruchomienie aplikacji, aplikację na pierwszym planie i aplikację w tle, a także wszelkie niestandardowe ślady kodu opracowane przez programistę

    • event_type to DURATION_TRACE
    • event_name jest taka sama jak nazwa śladu
  • Metryka śledzenia — niestandardowe metryki, które są powiązane z niestandardowymi śladami kodu opracowanymi przez programistów

    • event_type to TRACE_METRIC
    • event_name to nazwa metryki
    • parent_trace_name to nazwa śledzenia, która zawiera tę metrykę
  • Ślady ekranu — ślady obejmujące cały czas życia ekranu (ślady renderowania ekranu)

    • event_type to SCREEN_TRACE
    • event_name to prefiks _st_ plus rzeczywista nazwa ekranu
  • Żądanie sieciowe — ślady obejmujące okres istnienia żądania sieciowego (ślady żądań sieciowych HTTP)

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

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

  • Ślady czasu trwania, metryki śledzenia i ślady ekranu zawierają trace_info
  • Metryki śledzenia zawierają trace_info.metric_info
  • Ślady ekranu zawierają trace_info.screen_info
  • Ślady sieciowe zawierają informacje network_info

Szczegółowy schemat danych

Nazwa pola Rodzaj Opis
event_timestamp znak czasu Sygnatura czasowa od Epoki, w której zdarzenie rozpoczęło się 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” dla 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 domyślnie zbierają metrykę „czasu trwania”, która obejmuje uruchomienie aplikacji, aplikację na pierwszym planie i aplikację w tle, a także wszelkie niestandardowe ślady kodu opracowane przez programistę
  • SCREEN_TRACE — ślady obejmujące czas życia ekranu (ślady renderowania ekranu)
  • TRACE_METRIC — niestandardowe metryki, które są powiązane z niestandardowymi śladami kodu opracowanymi przez programistów
  • NETWORK_REQUEST — ślady obejmujące okres istnienia żądania sieciowego (ślady żądania sieciowego HTTP)
Nazwa wydarzenia strunowy Nazwa wydarzenia
  • Dla DURATION_TRACE — nazwa śladu
  • Dla TRACE_METRIC — nazwa niestandardowej metryki
  • Dla SCREEN_TRACE_st_ , po którym następuje nazwa śladu
  • Dla NETWORK_REQUEST — wzorzec adresu URL żądania sieciowego
nazwa_śledzenia_nadrzędnego strunowy Nazwa śladu nadrzędnego, który przenosi metrykę śladu
Dostępne tylko dla TRACE_METRIC
informacje o_śledzeniu NAGRYWAĆ Dostępne tylko dla DURATION_TRACE , SCREEN_TRACE i TRACE_METRIC
trace_info.duration_us int64
  • Dla DURATION_TRACE i SCREEN_TRACE — Długość czasu („czas trwania”) od początku do końca śladu
  • Dla TRACE_METRIC — długość czasu („czas trwania”) od początku do końca śledzenia nadrzędnego
Jednostka: mikrosekunda
trace_info.screen_info NAGRYWAĆ Dostępne tylko dla 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Ć Dostępne tylko dla TRACE_METRIC
trace_info.metric_info.metric_value int64 Wartość metryki śledzenia
informacje o sieci NAGRYWAĆ Dostępne tylko dla 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 event_timestamp po znaczniku czasu zdarzenia, gdy wysyłanie żądania sieciowego jest zakończone
Jednostka: mikrosekunda
network_info.response_initiated_time_us int64 event_timestamp po sygnaturze_czasu zdarzenia, gdy inicjowana jest odpowiedź sieci
Jednostka: mikrosekunda
network_info.response_completed_time_us int64 event_timestamp po sygnaturze_czasu zdarzenia, gdy odpowiedź sieciowa została 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

Ta analiza zakłada, że ​​oprzyrządowano niestandardowy ślad kodu do ładowania z dysku za pomocą niestandardowego atrybutu o nazwie file-extension i niestandardowej metryki (a TRACE_METRIC ) o nazwie cache-hit która jest ustawiona na 1 w przypadku trafienia w pamięć podręczną i 0 w przypadku braku pamięci podręcznej.

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 polecenia CLI bq extract

  • Przesyłanie zadania wyodrębniania za pośrednictwem interfejsu API lub bibliotek klienckich.

cennik

Eksportowanie danych z Monitorowania wydajności jest bezpłatne, a BigQuery zapewnia hojne limity bezpłatnego użytkowania. Szczegółowe informacje znajdziesz w cenniku BigQuery lub piaskownicy BigQuery .