获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

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 umożliwia analizowanie danych za pomocą BigQuery SQL, eksportowanie ich do innego dostawcy usług w chmurze, a nawet wykorzystywanie danych w niestandardowych modelach uczenia maszynowego.

Włącz eksport BigQuery

  1. Przejdź do strony 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 na potrzeby monitorowania wydajności, nastąpi to:

    • Firebase eksportuje kopię Twoich istniejących danych do BigQuery. Początkowa propagacja danych do eksportu może potrwać do 48 godzin.

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

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

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

Aby dezaktywować eksport BigQuery, odłącz 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 dotyczące wydajności. Każdy wiersz w tabeli to pojedyncze zdarzenie wydajności, które może być jednym z następujących:

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

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

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

    • event_type to SCREEN_TRACE
    • event_name to przedrostek _st_ plus rzeczywista nazwa ekranowa
  • Żądanie sieciowe — ślady obejmujące cały czas trwania żądania sieciowego (ślady żądań sieciowych HTTP)

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

Każde zdarzenie związane z wydajnością zawiera atrybuty zdarzenia (takie jak kraj i operator urządzenia klienckiego), a także informacje specyficzne dla 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ą network_info

Szczegółowy schemat danych

Nazwa pola Rodzaj Opis
znacznik_czasu zdarzenia znak czasu Znacznik czasu od epoki, kiedy zdarzenie rozpoczęło się na urządzeniu klienckim (początek śledzenia, start sieci itp.)
wersja_wyświetlana_aplikacji strunowy Wyświetl wersję aplikacji (na przykład „4.1.7”)
  • Dla Androida — VersionName
  • Dla systemu iOS — CFBundleShortVersionString
wersja_kompilacji_aplikacji strunowy Wersja kompilacji aplikacji (na przykład „1523456”)
  • Dla Androida — VersionCode
  • Dla iOS — CFBundleVersion
os_version 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 klienckiego (na przykład „Google Pixel”)
kraj strunowy Dwuliterowy kod kraju, z którego miało miejsce wydarzenie (na przykład „US” lub „ZZ” w przypadku nieznanego kraju)
nośnik strunowy Nośnik urządzenia klienckiego
radio_typ strunowy Aktywny typ radia, kiedy zdarzenie miało miejsce (na przykład „WIFI”)
niestandardowe_atrybuty TABLICA<ZAPIS> Wszystkie niestandardowe atrybuty dołączone do tego zdarzenia
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 gromadzą metrykę „czasu trwania”, która obejmuje uruchomienie aplikacji, działanie aplikacji na pierwszym planie i działanie aplikacji w tle, a także wszelkie niestandardowe ślady kodu opracowane przez programistę
  • SCREEN_TRACE — ślady obejmujące cały czas życia ekranu (ślady renderowania ekranu)
  • TRACE_METRIC — niestandardowe metryki, które są powiązane z niestandardowymi śladami kodu opracowanymi przez programistę
  • NETWORK_REQUEST — ślady obejmujące cały czas trwania żądania sieciowego (ślady żądania sieciowego HTTP)
Nazwa wydarzenia strunowy Nazwa wydarzenia
  • Dla DURATION_TRACE — nazwa śledzenia
  • Dla TRACE_METRIC — niestandardowa nazwa 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ę śledzenia
Występuje tylko dla TRACE_METRIC
informacje o śledzeniu NAGRYWAĆ Występuje 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 („duration”) od początku do końca śladu nadrzędnego
Jednostka: mikrosekunda
informacje o śledzeniu. informacje o ekranie NAGRYWAĆ Obecny tylko dla SCREEN_TRACE
trace_info.screen_info.slow_frame_ratio pływak64 Współczynnik wolnych klatek dla tego śladu ekranu, między 0 a 1 (na przykład wartość 0,05 oznacza, że ​​renderowanie 5% klatek dla tej instancji ekranu trwało ponad 16 ms)
trace_info.screen_info.frozen_frame_ratio pływak64 Współczynnik zamrożonych klatek dla tego śladu ekranu, między 0 a 1 (na przykład wartość 0,05 oznacza, że ​​renderowanie 5% klatek dla tej instancji ekranu trwało ponad 700 ms)
informacje o śledzeniu. dane metryczne NAGRYWAĆ Występuje tylko dla TRACE_METRIC
informacje_śledzenia.informacje_metryczne.wartość_metryki int64 Wartość metryki śledzenia
informacje_sieciowe NAGRYWAĆ Obecny tylko dla NETWORK_REQUEST
network_info.response_code 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 sieciowej
Jednostka: bajt
network_info.request_completed_time_us int64 Mikrosekundy po zakończeniu event_timestamp po zakończeniu wysyłania żądania sieciowego
Jednostka: mikrosekunda
network_info.response_initiated_time_us int64 event_timestamp po sygnaturze czasowej zdarzenia po zainicjowaniu odpowiedzi sieciowej
Jednostka: mikrosekunda
network_info.response_completed_time_us int64 event_timestamp po sygnaturze czasowej zdarzenia po zakończeniu odpowiedzi sieciowej
Jednostka: mikrosekunda

Co możesz zrobić z wyeksportowanymi danymi?

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

Zobacz średni czas oczekiwania na uruchomienie aplikacji z podziałem na kraje

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 klatek w różnych warunkach

Na przykład możesz sprawdzić stosunek zatrzymanych klatek do czasu, jaki użytkownicy spędzają na każdym ekranie Twojej aplikacji, gdy korzystają z różnych typów łączności radiowej (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ęci podręcznej do ładowania określonych typów plików z dysku

W tej analizie założono, że oprzyrządowano niestandardowe śledzenie kodu do ładowania z dysku z niestandardowym atrybutem o nazwie file-extension i niestandardową metryką ( TRACE_METRIC ) o nazwie cache-hit , która jest ustawiona na 1 w przypadku trafienia w pamięci podręcznej i 0 w przypadku braku pamięci podręcznej.

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

Na przykład możesz 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 przesłać je do innego rozwiązania innej firmy. Obecnie nie ma opłat za eksportowanie danych.

Możesz wyeksportować swoje dane poprzez:

  • Korzystanie z interfejsu internetowego BigQuery

  • Uruchamianie bq extract interfejsu CLI

  • 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 bezpłatne limity użytkowania. Aby uzyskać szczegółowe informacje, zapoznaj się z cennikiem BigQuery lub piaskownicą BigQuery .