Mengekspor data Performance Monitoring ke BigQuery

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

  1. Buka halaman Integrations di Firebase console, lalu klik Link di kartu BigQuery.

  2. 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.

    • 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 metrik
    • parent_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")
  • Untuk Android — VersionName
  • Untuk iOS — CFBundleShortVersionString
app_build_version string Versi build aplikasi (misalnya, "1523456")
  • Untuk Android — VersionCode
  • Untuk iOS — CFBundleVersion
os_version string Versi OS dari perangkat klien
  • Untuk Android — API level Android (misalnya "26")
  • Untuk iOS — versi iOS (misalnya "11.4")
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:
  • DURATION_TRACE — 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
  • SCREEN_TRACE — trace yang mencakup masa aktif layar (trace render layar)
  • TRACE_METRIC — metrik kustom yang terkait dengan trace kode kustom yang diinstrumentasikan oleh developer
  • NETWORK_REQUEST — trace yang mencakup masa aktif permintaan jaringan (trace permintaan jaringan HTTP)
event_name string Nama peristiwa
  • Untuk DURATION_TRACE — nama trace
  • Untuk TRACE_METRIC — nama metrik kustom
  • Untuk SCREEN_TRACE_st_ diikuti oleh nama trace
  • Untuk NETWORK_REQUEST — pola URL permintaan jaringan
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
  • Untuk DURATION_TRACE dan SCREEN_TRACE — Durasi waktu ("durasi") dari awal hingga akhir trace
  • Untuk TRACE_METRIC — durasi waktu ("durasi") dari awal hingga akhir trace induk
Unit: mikrodetik
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 selesai
Unit: mikrodetik
network_info.response_initiated_time_us int64 Mikrodetik setelah event_timestamp saat respons jaringan dimulai
Unit: mikrodetik
network_info.response_completed_time_us int64 Mikrodetik setelah event_timestamp saat respons jaringan selesai
Unit: 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.