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
Przejdź na stronę Integracje w konsoli Firebase, a następnie kliknij Link na karcie BigQuery .
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.
- Możesz ręcznie zaplanować uzupełnianie danych do ostatnich 30 dni lub do ostatniej daty, kiedy włączyłeś eksport BigQuery (w zależności od tego, która data jest najpóźniejsza).
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
toDURATION_TRACE
-
event_name
jest taka sama jak nazwa śledzenia
-
Metryka śledzenia — metryki niestandardowe powiązane z niestandardowymi śladami kodu opracowanymi przez programistę
-
event_type
toTRACE_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
toSCREEN_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
toNETWORK_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”)
|
wersja_kompilacji aplikacji | strunowy | Zbuduj wersję aplikacji (na przykład „1523456”)
|
wersja_os | strunowy | Wersja systemu operacyjnego urządzenia klienckiego
|
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ść:
|
Nazwa wydarzenia | strunowy | Nazwa wydarzenia
|
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 |
|
trace_info.screen_info | NAGRYWAĆ | Obecny 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 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 |
trace_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 sieciowegoJednostka: mikrosekunda |
network_info.response_initiated_time_us | int64 | Mikrosekundy po event_timestamp , gdy inicjowana jest odpowiedź sieciJednostka: mikrosekunda |
network_info.response_completed_time_us | int64 | Mikrosekundy po event_timestamp po zakończeniu odpowiedzi sieciJednostka: 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 .