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
Wejdź 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.
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
toDURATION_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
toTRACE_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
toSCREEN_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
toNETWORK_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”)
|
wersja_kompilacji_aplikacji | strunowy | Wersja kompilacji aplikacji (na przykład „1523456”)
|
wersja_osu | strunowy | Wersja systemu operacyjnego urządzenia klienckiego
|
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ść:
|
Nazwa wydarzenia | strunowy | Nazwa wydarzenia
|
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 |
|
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ńczoneJednostka: mikrosekunda |
network_info.response_initiated_time_us | int64 | event_timestamp po sygnaturze_czasu zdarzenia, gdy inicjowana jest odpowiedź sieciJednostka: mikrosekunda |
network_info.response_completed_time_us | int64 | event_timestamp po sygnaturze_czasu zdarzenia, gdy odpowiedź sieciowa została zakończonaJednostka: 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 .