Anda dapat mengekspor data Performance Monitoring dari aplikasi Apple dan Android ke BigQuery untuk melakukan analisis lebih lanjut. Dengan BigQuery, Anda dapat menganalisis data tersebut menggunakan BigQuery SQL, mengekspornya ke penyedia cloud lain, dan bahkan menggunakan data tersebut untuk model ML kustom Anda.
Aktifkan ekspor BigQuery
Buka halaman Integrations di Firebase console, lalu klik Link di kartu BigQuery.
Ikuti petunjuk di layar untuk mengaktifkan BigQuery.
Saat Anda mengaktifkan ekspor BigQuery untuk Performance Monitoring, hal berikut akan terjadi:
Firebase akan mengekspor salinan data yang ada ke BigQuery. Penerapan data awal untuk ekspor mungkin memakan waktu hingga 48 jam.
- Anda dapat menjadwalkan pengisian ulang data secara manual hingga 30 hari terakhir atau untuk tanggal terbaru saat ekspor BigQuery diaktifkan (mana saja yang terbaru).
Setelah set data dibuat, lokasi tidak dapat diubah, tetapi Anda dapat menyalin set data ke lokasi lain atau memindahkan (membuat ulang) set data secara manual di lokasi yang berbeda. Untuk mempelajari lebih lanjut, baca artikel Mengubah lokasi set data.
Firebase akan menyiapkan sinkronisasi reguler data Anda dari project Firebase ke BigQuery. Operasi ekspor harian ini biasanya selesai dalam 24 jam setelah dijadwalkan.
Secara default, semua aplikasi dalam project Anda ditautkan ke BigQuery. Setiap aplikasi yang Anda tambahkan kemudian ke project akan otomatis ditautkan ke BigQuery. Anda dapat mengelola aplikasi yang akan mengirimkan data.
Untuk menonaktifkan ekspor BigQuery, batalkan tautan project Anda di Firebase console.
Data apa yang diekspor ke BigQuery?
Untuk setiap aplikasi di dalam project, ekspor akan membuat tabel yang menyertakan semua peristiwa performa yang terekam. Tiap baris dalam tabel adalah peristiwa performa tunggal yang dapat berupa salah satu dari berikut ini:
Trace durasi — trace yang secara default mengumpulkan metrik "durasi", yang mencakup aplikasi dimulai, aplikasi di latar depan, dan aplikasi di latar belakang, serta setiap trace kode kustom yang diinstrumentasikan oleh developer
event_type
DURATION_TRACE
event_name
sama dengan nama trace
Metrik trace — metrik kustom yang terkait dengan trace kode kustom yang diinstrumentasikan oleh developer
event_type
TRACE_METRIC
event_name
adalah nama metrikparent_trace_name
adalah nama trace yang berisi metrik ini
Trace layar — trace yang mencakup masa aktif layar (trace rendering layar)
event_type
SCREEN_TRACE
event_name
adalah awalan_st_
ditambah nama layar sebenarnya
Permintaan jaringan — trace yang mencakup masa aktif permintaan jaringan (trace permintaan jaringan HTTP)
event_type
NETWORK_REQUEST
event_name
adalah pola yang dikategorikan dari URL permintaan jaringan
Setiap peristiwa performa berisi atribut peristiwa (seperti negara dan operator perangkat klien), serta informasi khusus peristiwa:
- Trace durasi, metrik trace, dan trace layar berisi
trace_info
- Metrik trace berisi
trace_info.metric_info
- Trace layar berisi
trace_info.screen_info
- Trace jaringan berisi
network_info
Skema data terperinci
Nama Kolom | Jenis | Deskripsi |
---|---|---|
event_timestamp | timestamp | Stempel waktu sejak Epoch ketika peristiwa dimulai pada perangkat klien (trace dimulai, jaringan dimulai, dll.) |
app_display_version | string | Versi tampilan aplikasi (misalnya, "4.1.7")
|
app_build_version | string | Versi build aplikasi (misalnya, "1523456")
|
os_version | string | Versi OS dari perangkat klien
|
device_name | string | Nama perangkat klien (misalnya, "Google Pixel") |
negara | string | Kode negara dua huruf dari negara tempat peristiwa terjadi (misalnya, "US", atau "ZZ" untuk negara yang tidak diketahui) |
operator | string | Operator perangkat klien |
radio_type | string | Jenis radio yang aktif saat peristiwa terjadi (misalnya, "WIFI") |
custom_attributes | ARRAY<RECORD> | Semua atribut khusus yang terkait ke peristiwa ini |
custom_attributes.key | string | Kunci atribut khusus |
custom_attributes.value | string | Nilai atribut khusus |
event_type | string | Jenis peristiwa; nilai yang mungkin:
|
event_name | string | Nama peristiwa
|
parent_trace_name | string | Nama trace induk yang membawa metrik trace Hanya ada untuk TRACE_METRIC |
trace_info | RECORD | Hanya ada untuk DURATION_TRACE , SCREEN_TRACE , dan TRACE_METRIC |
trace_info.duration_us | int64 |
|
trace_info.screen_info | RECORD | Hanya ada untuk SCREEN_TRACE |
trace_info.screen_info.slow_frame_ratio | float64 | Rasio periode lambat untuk trace layar ini, antara 0 dan 1 (misalnya, nilai 0,05 berarti 5% dari periode untuk instance layar ini membutuhkan waktu render lebih dari 16 md) |
trace_info.screen_info.frozen_frame_ratio | float64 | Rasio periode frozen untuk trace layar ini, antara 0 dan 1 (misalnya, nilai 0,05 berarti 5% dari periode untuk instance layar ini membutuhkan waktu render lebih dari 700 md) |
trace_info.metric_info | RECORD | Hanya ada untuk TRACE_METRIC |
trace_info.metric_info.metric_value | int64 | Nilai metrik jejak |
network_info | RECORD | Hanya ada untuk NETWORK_REQUEST |
network_info.response_code | int64 | Kode respons HTTP untuk respons jaringan (misalnya, 200, 404) |
network_info.response_mime_type | string | Jenis respons jaringan MIME (misalnya, "text/html") |
network_info.request_http_method | string | Metode HTTP permintaan jaringan (misalnya, "GET" atau "POST") |
network_info.request_payload_bytes | int64 | Ukuran payload permintaan jaringan Unit: byte |
network_info.response_payload_bytes | int64 | Ukuran payload respons jaringan Unit: byte |
network_info.request_completed_time_us | int64 | Mikrodetik setelah event_timestamp saat pengiriman permintaan
jaringan selesaiUnit: mikrodetik |
network_info.response_initiated_time_us | int64 | Mikrodetik setelah event_timestamp saat respons jaringan
dimulaiUnit: mikrodetik |
network_info.response_completed_time_us | int64 | Mikrodetik setelah event_timestamp saat respons jaringan
selesaiUnit: mikrodetik |
Apa yang dapat dilakukan dengan data yang diekspor?
Bagian berikut menawarkan contoh kueri yang dapat Anda jalankan di BigQuery terhadap data Performance Monitoring yang diekspor.
Mencocokkan data yang terlihat di konsol
Dasbor Firebase menggabungkan data harian dalam zona waktu America/Los_Angeles
.
Agar cocok dengan yang terlihat di konsol, fungsi tanggal harus menetapkan America/Los_Angeles
sebagai zona waktu secara eksplisit. Jika tidak, fungsi tanggal akan menggunakan UTC secara default.
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;
Melihat perincian latensi awal aplikasi rata-rata menurut negara
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;
Periksa rasio periode frozen terhadap berbagai kondisi
Misalnya, Anda dapat memeriksa rasio periode frozen bersama jumlah waktu yang dihabiskan pengguna di tiap layar aplikasi Anda saat menggunakan berbagai jenis radio (WiFi, 4G, dll.).
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;
Menghitung rasio cache ditemukan untuk memuat jenis file tertentu dari disk
Analisis ini mengasumsikan bahwa Anda menginstrumentasikan trace kode kustom untuk memuat dari disk dengan atribut khusus bernama file-extension
dan metrik kustom (TRACE_METRIC
) bernama cache-hit
, yang disetel ke 1
jika cache ditemukan dan 0
jika cache tidak ditemukan.
Misalnya, Anda dapat menghitung rasio cache ditemukan untuk memuat file PNG dari disk:
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);
Memeriksa waktu saat pengguna mengeluarkan permintaan jaringan
Misalnya, Anda dapat memeriksa pada jam berapa pengguna dari Amerika Serikat mengeluarkan permintaan jaringan dari aplikasi Anda:
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;
Menggunakan data Performance Monitoring Anda di mana saja
Terkadang, Anda ingin mengakses sisi server data Performance Monitoring Anda atau mengarahkannya ke solusi pihak ketiga lainnya. Untuk saat ini, ekspor data tidak dikenakan biaya.
Anda dapat mengekspor data dengan:
Menggunakan UI web BigQuery
Menjalankan perintah CLI
bq extract
Mengirimkan tugas ekstrak melalui library API atau klien.
Harga
Mengekspor data dari Performance Monitoring tidak dikenakan biaya, dan BigQuery menyediakan batas penggunaan gratis yang melimpah. Untuk mengetahui informasi selengkapnya, baca harga BigQuery atau sandbox BigQuery.