Catch up on everthing we announced at this year's Firebase Summit. Learn more

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 ini untuk model ML kustom Anda.

Aktifkan BigQuery Export

  1. Buka halaman Integrasi di Firebase console, lalu klik Tautkan di kartu BigQuery.

  2. Ikuti petunjuk di layar untuk mengaktifkan BigQuery.

Saat Anda menautkan project ke BiqQuery:

  • Firebase akan mengekspor salinan data Anda yang ada ke BigQuery.

    • Pada penautan awal, Firebase menjadwalkan tabel BigQuery Anda secara otomatis untuk mengisi ulang data dari 7 hari terakhir supaya Anda dapat segera mulai bereksperimen. Tunggu beberapa jam hingga data awal tersedia di BigQuery.

    • Anda juga dapat menjadwalkan pengisian ulang data secara manual hingga 30 hari terakhir.

  • Firebase akan menyiapkan sinkronisasi harian data Anda dari project Firebase ke BigQuery.

  • Secara default, semua aplikasi di project Anda akan ditautkan ke BigQuery, dan aplikasi apa pun yang Anda tambahkan nanti ke project akan otomatis ditautkan ke BigQuery. Anda dapat mengelola aplikasi yang akan mengirimkan data.

Untuk menonaktifkan BigQuery Export, 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 mengumpulkan, secara default, 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 render 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 Tipe 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 — level Android API (misalnya "26")
  • Untuk iOS — versi iOS (misalnya "11.4")
device_name string Nama perangkat klien (misalnya, "Google Pixel")
country string Kode negara dua huruf dari negara tempat peristiwa terjadi (misalnya, "US", atau "ZZ" untuk negara yang tidak diketahui)
carrier string Operator perangkat klien
radio_type string Jenis radio 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 mengumpulkan, secara default, 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 DATA 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 DATA 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 mikrodetik).
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 mikrodetik)
trace_info.metric_info DATA Hanya ada untuk TRACE_METRIC
trace_info.metric_info.metric_value int64 Nilai metrik trace
network_info DATA 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 bisa Anda jalankan di BigQuery terhadap data Performance Monitoring yang diekspor.

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;

Membawa data Performance Monitoring Anda ke 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

Ekspor data dari Performance Monitoring tidak dikenakan biaya dan BigQuery menyediakan batas penggunaan gratis yang cukup besar. Untuk mengetahui informasi selengkapnya, baca harga BigQuery atau sandbox BigQuery.