Eksportuj dane monitorowania wydajności do BigQuery

Możesz eksportować dane monitorowania wydajności z aplikacji na Apple i Androida do BigQuery w celu dalszej analizy. BigQuery pozwala analizować dane za pomocą BigQuery SQL, eksportować je do innego dostawcy usług w chmurze, a nawet wykorzystywać dane do niestandardowych modeli uczenia maszynowego.

Włącz eksport BigQuery

  1. Przejdź 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.

    Po włączeniu eksportu BigQuery na potrzeby monitorowania wydajności dzieje się tak:

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

    • Po utworzeniu zbioru danych lokalizacji nie można zmienić, ale można skopiować zbiór danych do innej lokalizacji lub ręcznie przenieść (odtworzyć) zbiór danych w innej lokalizacji. Aby dowiedzieć się więcej, zobacz temat Zmiana lokalizacji zbioru 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, zostaną automatycznie połą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 związane z wydajnością, które może mieć jedną z następujących postaci:

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

    • event_type to DURATION_TRACE
    • event_name jest taka sama jak nazwa śledzenia
  • Metryka śledzenia — metryki niestandardowe powiązane z niestandardowymi śladami kodu opracowanymi przez programistę

    • event_type to TRACE_METRIC
    • event_name to nazwa metryki
    • parent_trace_name to nazwa śledzenia zawierająca 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 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 związane z wydajnością zawiera atrybuty zdarzenia (takie jak kraj i operator urządzenia klienckiego), a także informacje specyficzne dla wydarzenia:

  • Ś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 sieci zawierają network_info

Szczegółowy schemat danych

Nazwa pola Typ Opis
wydarzenie_znacznik czasu znak czasu Znacznik czasu od epoki, w której zdarzenie rozpoczęło się na urządzeniu klienckim (rozpoczęcie śledzenia, uruchomienie sieci itp.)
wersja_wyświetlania aplikacji strunowy Wyświetlana wersja aplikacji (na przykład „4.1.7”)
  • Dla Androida — VersionName
  • Dla systemu iOS — CFBundleShortVersionString
wersja_kompilacji aplikacji strunowy Zbuduj wersję aplikacji (na przykład „1523456”)
  • Dla Androida — VersionCode
  • Dla iOS — CFBundleVersion
wersja_os 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)
przewoźnik strunowy Nośnik urządzenia klienckiego
typ_radia strunowy Typ aktywnego radia, kiedy miało miejsce zdarzenie (na przykład „WIFI”)
niestandardowe_atrybuty TABLICA<REKORD> Wszystkie atrybuty niestandardowe dołączone do tego zdarzenia
niestandardowe_atrybuty.key strunowy Klucz atrybutu niestandardowego
niestandardowe_atrybuty.wartość 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, działanie aplikacji na pierwszym planie i aplikację w tle, a także wszelkie ślady niestandardowego kodu opracowane przez programistę
  • SCREEN_TRACE — ślady obejmujące cały czas życia ekranu (ślady renderowania ekranu)
  • TRACE_METRIC — niestandardowe metryki powiązane z niestandardowymi śladami kodu opracowanymi przez programistę
  • NETWORK_REQUEST — ślady obejmujące cały czas życia żądania sieciowego (ślady żądań sieciowych HTTP)
Nazwa wydarzenia strunowy Nazwa wydarzenia
  • Dla DURATION_TRACE — nazwa śledzenia
  • Dla TRACE_METRIC — nazwa metryki niestandardowej
  • Dla SCREEN_TRACE_st_ po którym następuje nazwa śledzenia
  • Dla NETWORK_REQUEST — wzorzec adresu URL żądania sieciowego
nazwa_śladu_rodzica strunowy Nazwa śledzenia 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 śledzenia
  • Dla TRACE_METRIC — długość czasu („duration”) od początku do końca nadrzędnego śledzenia
Jednostka: mikrosekunda
trace_info.screen_info NAGRYWAĆ Obecny tylko dla SCREEN_TRACE
trace_info.screen_info.slow_frame_ratio pływak64 Współczynnik wolnych klatek dla tego śladu ekranu od 0 do 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 zatrzymanych klatek dla tego śladu ekranu od 0 do 1 (na przykład wartość 0,05 oznacza, że ​​renderowanie 5% klatek dla tej instancji ekranu trwało ponad 700 ms)
trace_info.metric_info NAGRYWAĆ Występuje tylko dla TRACE_METRIC
traci_info.metric_info.metric_value int64 Wartość metryki śledzenia
informacje o sieci NAGRYWAĆ Obecne tylko dla NETWORK_REQUEST
informacja_sieciowa.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 sieciowej
Jednostka: bajt
network_info.request_completed_time_us int64 Mikrosekundy po event_timestamp po zakończeniu wysyłania żądania sieciowego
Jednostka: mikrosekunda
network_info.response_initiated_time_us int64 Mikrosekundy po event_timestamp , gdy inicjowana jest odpowiedź sieci
Jednostka: mikrosekunda
network_info.response_completed_time_us int64 Mikrosekundy po event_timestamp po zakończeniu odpowiedzi sieci
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 rozkład średniego opóźnienia uruchomienia 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ź stosunek zamrożonych klatek w różnych warunkach

Możesz na przykład sprawdzić stosunek zablokowanych 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ń pamięci podręcznej przy ładowaniu określonych typów plików z dysku

W tej analizie założono, że przygotowano niestandardowe śledzenie kodu do ładowania z dysku za pomocą niestandardowego atrybutu o nazwie file-extension i niestandardowej metryki ( 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ź porę dnia, o której 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 z monitorowania wydajności w dowolne miejsce

Czasami chcesz uzyskać dostęp do serwera danych monitorowania wydajności lub przekazać je do innego rozwiązania innej firmy. Obecnie za eksport danych nie są pobierane żadne opłaty.

Możesz wyeksportować swoje dane poprzez:

  • Korzystanie z interfejsu internetowego BigQuery

  • Uruchamianie polecenia CLI bq extract

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

cennik

Eksportowanie danych z Monitorowania wydajności jest bezpłatne, a BigQuery zapewnia duże, bezpłatne limity wykorzystania. Aby uzyskać szczegółowe informacje, zapoznaj się z cennikiem BigQuery lub piaskownicą BigQuery .