Dane Performance Monitoring z aplikacji Apple i Androida możesz wyeksportować do pliku BigQuery, aby przeanalizować je dokładniej. BigQuery umożliwia analizowanie danych za pomocą BigQuery SQL, eksportowanie ich do innego dostawcy usług w chmurze, a nawet wykorzystywanie tych danych w niestandardowych modelach ML.
Włącz eksport BigQuery
W konsoli Firebase otwórz stronę Integracje, a następnie na karcie BigQuery kliknij Połącz.
Aby włączyć BigQuery, postępuj zgodnie z instrukcjami wyświetlanymi na ekranie.
Gdy włączysz eksport BigQuery w przypadku Performance Monitoring, nastąpi:
Firebase eksportuje kopię istniejących danych do usługi BigQuery. Początkowa propagacja danych na potrzeby eksportu może potrwać do 48 godzin.
- Możesz ręcznie zaplanować uzupełnianie danych z ostatnich 30 dni lub do ostatniej daty włączenia eksportu BigQuery (w zależności od tego, która z tych dat jest najnowsza).
Po utworzeniu zbioru danych jego lokalizacji nie można już zmienić. Możesz natomiast skopiować zbiór danych do innej lokalizacji lub ręcznie przenieść (ponownie utworzyć) zbiór danych w innej lokalizacji. Więcej informacji znajdziesz w artykule Zmiana lokalizacji zbioru danych.
Firebase skonfiguruje regularne synchronizowanie danych z Twojego projektu Firebase z kontem BigQuery. Te codzienne operacje eksportu kończą się zwykle w ciągu 24 godzin od zaplanowania procesu.
Domyślnie wszystkie aplikacje w projekcie są połączone z BigQuery. Wszystkie aplikacje, które dodasz do projektu później, zostaną automatycznie połączone z BigQuery. Możesz określić, które aplikacje mają wysyłać dane.
Aby dezaktywować eksport BigQuery, rozłącz projekt w konsoli Firebase.
Jakie dane są eksportowane do BigQuery?
W przypadku każdej aplikacji w projekcie eksport tworzy tabelę zawierającą wszystkie zarejestrowane zdarzenia dotyczące wydajności. Każdy wiersz w tabeli to pojedyncze zdarzenie związane z skutecznością, które może być jednym z tych:
Zrzut czasu trwania – logi czasu, które domyślnie zbierają dane czasu trwania „czasu trwania”, które obejmują uruchomienie aplikacji, działanie aplikacji w tle i w tle, a także wszelkie niestandardowe śledzenia kodu obsługiwane przez programistę
event_type
toDURATION_TRACE
event_name
jest taka sama jak nazwa śledzenia
Dane z wykrywania – dane niestandardowe powiązane z niestandardowymi logami kodu z dodatkiem kodu dla programistów.
event_type
toTRACE_METRIC
event_name
to nazwa danychparent_trace_name
to nazwa logu czasu zawierającego ten wskaźnik.
Ślad ekranu – ścieżki obejmujące cały czas trwania ekranu (ścieżki renderowania ekranu).
event_type
toSCREEN_TRACE
event_name
to prefiks_st_
plus rzeczywista nazwa ekranu
Żądanie sieciowe – logi obejmujące cały czas trwania żądania sieciowego (logi żądań sieciowych HTTP).
event_type
toNETWORK_REQUEST
event_name
to podział według wzoru adresu URL żądania sieciowego
Każde zdarzenie dotyczące wydajności zawiera atrybuty zdarzenia (takie jak kraj i operator urządzenia klienta), a także informacje dotyczące zdarzenia:
- Tracingi czasu, dane z tracingu i tracingi ekranu zawierają
trace_info
- Dane z wykrywania zawierają
trace_info.metric_info
- Logs ekranu zawierają
trace_info.screen_info
- Ścieżki sieciowe zawierają
network_info
Szczegółowy schemat danych
Nazwa pola | Typ | Opis |
---|---|---|
event_timestamp | sygnatura czasowa | Sygnatura czasowa od początku epoki, w której rozpoczęło się zdarzenie na urządzeniu klienckim (początek śledzenia, uruchomienie sieci itp.) |
app_display_version | ciąg znaków | Wyświetlana wersja aplikacji (np. „4.1.7”)
|
app_build_version | ciąg znaków | Wersja kompilacji aplikacji (np. „1523456”)
|
os_version | ciąg znaków | Wersja systemu operacyjnego urządzenia klienta
|
device_name | ciąg znaków | nazwa urządzenia klienckiego (np. „Google Pixel”), |
country | ciąg znaków | Dwuliterowy kod kraju, w którym miało miejsce zdarzenie (na przykład „PL” lub „ZZ” w przypadku nieznanego kraju). |
przewoźnik | ciąg znaków | Operator urządzenia klienta |
radio_type | ciąg znaków | Aktywny typ sygnału radiowego, w którym doszło do zdarzenia (na przykład „WIFI”) |
custom_attributes | ARRAY<RECORD> | Wszystkie atrybuty niestandardowe dołączone do tego zdarzenia |
atrybuty_niestandardowe.klucz | ciąg znaków | Klucz atrybutu niestandardowego |
atrybuty_niestandardowe.wartość | ciąg znaków | Wartość atrybutu niestandardowego |
event_type | ciąg znaków | Typ zdarzenia. Możliwe wartości:
|
event_name | ciąg znaków | Nazwa zdarzenia
|
parent_trace_name | ciąg znaków | Nazwa ścieżki nadrzędnej, która zawiera dane ścieżki Dostępna tylko w przypadku TRACE_METRIC |
trace_info | REKORD | Dostępne tylko w przypadku aplikacji DURATION_TRACE ,
SCREEN_TRACE i TRACE_METRIC |
trace_info.duration_us | int64 |
|
trace_info.screen_info | REKORD | Występuje tylko w przypadku domeny SCREEN_TRACE |
trace_info.screen_info.slow_frame_ratio | float64 | Stosunek liczby spowolnionych klatek w przypadku tego zrzutu ekranu wynosi od 0 do 1 (na przykład wartość 0, 05 oznacza, że wyrenderowanie 5% klatek w tej instancji ekranu trwało dłużej niż 16 ms) |
trace_info.screen_info.frozen_frame_ratio | float64 | Stosunek liczby zablokowanych klatek w tym śladzie ekranu (wartość od 0 do 1). (Na przykład wartość 0,05 oznacza, że renderowanie 5% klatek w tym przypadku trwało ponad 700 ms) |
informacje_śledzenia.dane_informacje_o_danych | REKORD | Występuje tylko w przypadku domeny TRACE_METRIC |
trace_info.metric_info.metric_value | int64 | Wartość danych śledzonych |
network_info | REKORD | Tylko w przypadku NETWORK_REQUEST |
informacje_o_sieci.kod_odpowiedzi | int64 | Kod odpowiedzi HTTP odpowiedzi sieciowej (np. 200 lub 404) |
network_info.response_mime_type | ciąg znaków | Typ MIME odpowiedzi sieci (np. „text/html”). |
metoda_info.żądania_http_metody_sieci | ciąg znaków | Metoda HTTP żądania sieciowego (np. „GET” lub „POST”). |
network_info.request_payload_bytes | int64 | Rozmiar ładunku żądania sieci Jednostka: bajt |
informacje_o_sieci.bajty_ładunku_odpowiedzi | int64 | Rozmiar ładunku odpowiedzi sieci Jednostka: bajt |
network_info.request_completed_time_us | int64 | Mikrosekundy po event_timestamp , gdy wysłano żądanie siecioweJednostka: mikrosekunda |
informacje_o_sieci.odpowiedź_zainicjowana_w_czasie_pl | int64 | Mikrosekundy po zainicjowaniu odpowiedzi sieci (event_timestamp )Jednostka: mikrosekunda |
network_info.response_completed_time_us | int64 | Mikrosekundy po event_timestamp , gdy odpowiedź sieci została zakończonaJednostka: mikrosekunda |
Co można zrobić z wyeksportowanymi danymi?
W następnych sekcjach znajdziesz przykłady zapytań, które możesz wykonać w BigQuery na podstawie wyeksportowanych danych Performance Monitoring.
Dopasowanie danych widocznych w konsoli
Panel Firebase agreguje dane dzienne w strefie czasowej America/Los_Angeles
.
Aby dopasować to, co widać na konsoli, funkcje daty powinny wyraźnie ustawiać strefę czasową America/Los_Angeles
. W przeciwnym razie funkcja daty będzie domyślnie używać strefy UTC.
SELECT DATE(event_timestamp, 'America/Los_Angeles') AS daily_date, APPROX_QUANTILES(trace_info.duration_us, 100)[OFFSET(90)] / 1000000 AS p90_seconds, FROM `TABLE_NAME` WHERE DATE(event_timestamp, 'America/Los_Angeles') >= DATE_SUB( PARSE_DATE('%Y%m%d', 'YYYY-MM-DD'), INTERVAL 7 DAY) AND DATE(event_timestamp, 'America/Los_Angeles') <= PARSE_DATE('%Y%m%d', 'YYYY-MM-DD') AND event_name = '_app_start' GROUP BY 1 ORDER BY 1 DESC;
Wyświetlanie podziału ś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;
Sprawdzanie stosunku liczby zablokowanych klatek do różnych warunków
Możesz na przykład sprawdzić stosunek liczby zablokowanych klatek do czasu, jaki użytkownicy spędzają na poszczególnych ekranach aplikacji w różnych sieciach (Wi-Fi, 4G itd.).
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;
Współczynnik trafień w pamięci podręcznej Compute do wczytywania określonych typów plików z dysku
Ta analiza zakłada, że masz instrumentowany niestandardowy ślad kodu służący do wczytywania z dysku z atrybutem niestandardowym o nazwie file-extension
i danymi niestandardowymi (TRACE_METRIC
) o nazwie cache-hit
, które mają wartość 1
, jeśli wystąpiło trafienie do pamięci podręcznej, oraz 0
, jeśli nie wystąpiło trafienie do pamięci podręcznej.
Możesz np. obliczyć współczynnik trafień w pamięci podręcznej przy wczytywaniu 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 jakiej porze dnia użytkownicy wysyłają żądania sieciowe
Możesz np. sprawdzić, o jakiej porze dnia użytkownicy ze Stanów Zjednoczonych wysyłają żądania 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;
Zabieraj dane Performance Monitoring ze sobą wszędzie
Czasami możesz chcieć uzyskać dostęp do danych Performance Monitoring po stronie serwera lub przesłać je do innej usługi zewnętrznej. Obecnie eksportowanie danych jest bezpłatne.
Dane możesz wyeksportować w ten sposób:
Korzystanie z interfejsu internetowego BigQuery
Uruchamianie polecenia w interfejsie wiersza poleceń
bq extract
Przesyłanie zadania wyodrębniania za pomocą interfejsu API lub bibliotek klienta.
Ceny
Eksportowanie danych z Performance Monitoring jest bezpłatne, a BigQuery oferuje duże bezpłatne limity użytkowania. Szczegółowe informacje znajdziesz w cenniku BigQuery lub w BigQuerysandboksie.