Performance Monitoring verilerini BigQuery'ye aktarın

Apple ve Android uygulamalarından Performance Monitoring verilerini daha ayrıntılı analiz için BigQuery'e aktarabilirsiniz. BigQuery, verileri BigQuery SQL kullanarak analiz etmenize, başka bir bulut sağlayıcıya aktarmanıza ve hatta özel makine öğrenimi modelleriniz için kullanmanıza olanak tanır.

BigQuery dışa aktarımını etkinleştirme

  1. Firebase konsolunda Entegrasyonlar sayfasına gidin, ardından BigQuery kartında Bağla'yı tıklayın.

  2. BigQuery özelliğini etkinleştirmek için ekrandaki talimatları uygulayın.

    BigQuery için Performance Monitoring dışa aktarma özelliğini etkinleştirdiğinizde aşağıdaki işlemler gerçekleşir:

    • Firebase, mevcut verilerinizin bir kopyasını BigQuery'ye aktarır. Dışa aktarma için verilerin ilk yayılması 48 saati bulabilir.

    • Veri kümesi oluşturulduktan sonra konumu değiştirilemez ancak veri kümesini farklı bir konuma kopyalayabilir veya veri kümesini farklı bir konuma manuel olarak taşıyabilirsiniz (yeniden oluşturma). Daha fazla bilgi için Veri kümesi konumunu değiştirme başlıklı makaleyi inceleyin.

    • Firebase, Firebase projenizdeki verilerinizin BigQuery ile düzenli olarak senkronize edilmesini sağlar. Bu günlük dışa aktarma işlemleri, planlandıktan sonra genellikle 24 saat içinde tamamlanır.

    • Varsayılan olarak, projenizdeki tüm uygulamalar BigQuery'ya bağlanır. Daha sonra projeye eklediğiniz tüm uygulamalar otomatik olarak BigQuery'ya bağlanır. Hangi uygulamaların veri göndereceğini yönetebilirsiniz.

BigQuery dışa aktarma özelliğini devre dışı bırakmak için Firebase konsolunda projenizin bağlantısını kaldırın.

BigQuery hizmetine hangi veriler dışa aktarılır?

Dışa aktarma işlemi, projedeki her uygulama için yakalanan tüm performans etkinliklerini içeren bir tablo oluşturur. Tablodaki her satır, aşağıdakilerden biri olabilen tek bir performans etkinliğidir:

  • Süre izi: Uygulama başlangıcı, uygulamanın ön planda ve arka planda olma süresi gibi "süre" metriğini varsayılan olarak toplayan izlerin yanı sıra geliştirici tarafından enstrümanlaştırılmış tüm özel kod izleri

    • event_type: DURATION_TRACE
    • event_name, iz adıyla aynıdır.
  • İzleme metriği: Geliştirici tarafından oluşturulan özel kod izleriyle ilişkili özel metrikler

    • event_type: TRACE_METRIC
    • event_name, metriğin adıdır.
    • parent_trace_name bu metriği içeren iz adıdır.
  • Ekran izi: Bir ekranın kullanım ömrü boyunca devam eden izler (ekran oluşturma izleri)

    • event_type: SCREEN_TRACE
    • event_name, ön ek _st_ ve gerçek ekran adından oluşur.
  • Ağ isteği: Bir ağ isteğinin ömrü boyunca uzanan izler (HTTP ağ isteği izleri)

    • event_type: NETWORK_REQUEST
    • event_name, ağ isteği URL'sinin kategorize edilmiş kalıbıdır.

Her performans etkinliği, etkinliğin özelliklerini (ör. istemci cihazının ülkesi ve operatörü) ve etkinliğe özel bilgileri içerir:

  • Süre izleri, iz metrikleri ve ekran izleri trace_info içerir.
  • İzleme metrikleri şunları içerir: trace_info.metric_info
  • Ekran izleri trace_info.screen_info içeriyor
  • Ağ izleri network_info içerir

Ayrıntılı veri şeması

Alan Adı Tür Açıklama
event_timestamp zaman damgası Etkinliğin istemci cihazda başladığı Epoch'tan bu yana geçen süreye ait zaman damgası (izleme başlangıcı, ağ başlangıcı vb.)
app_display_version dize Uygulamanın sürümünü gösterir (örneğin, "4.1.7")
  • Android için: VersionName
  • iOS için — CFBundleShortVersionString
app_build_version dize Uygulamanın derleme sürümü (örneğin, "1523456")
  • Android için: VersionCode
  • iOS için — CFBundleVersion
os_version dize İstemci cihazın işletim sistemi sürümü
  • Android için: Android API düzeyi (örneğin, "26")
  • iOS için: iOS sürümü (örneğin, "11.4")
device_name dize İstemci cihazın adı (ör. "Google Pixel")
country dize Etkinliğin gerçekleştiği ülkenin iki harfli ülke kodu (ör. "US" veya bilinmeyen ülke için "ZZ")
nakliyeci dize İstemci cihazın operatörü
radio_type dize Etkinliğin gerçekleştiği sırada etkin olan radyo türü (ör. "WIFI")
custom_attributes ARRAY<RECORD> Bu etkinliğe eklenen tüm özel özellikler
custom_attributes.key dize Özel özelliğin anahtarı
custom_attributes.value dize Özel özelliğin değeri
event_type dize Etkinliğin türü; olası değerler:
  • DURATION_TRACE — Varsayılan olarak "süre" metriğini toplayan izler. Bu izler, uygulama başlangıcı, uygulamanın ön planda ve arka planda çalışma süresinin yanı sıra geliştirici tarafından enstrümanlaştırılmış tüm özel kod izlerini içerir.
  • SCREEN_TRACE — Bir ekranın aktif olduğu süre boyunca çalışan izler (ekran oluşturma izleri)
  • TRACE_METRIC — Geliştirici tarafından oluşturulan özel kod izleriyle ilişkili özel metrikler
  • NETWORK_REQUEST — bir ağ isteğinin (HTTP ağ isteği izleri) ömrü boyunca yayılan izler
event_name dize Etkinliğin adı
  • DURATION_TRACE için: İz adı
  • TRACE_METRIC için: özel metrik adı
  • SCREEN_TRACE için: _st_ ve ardından iz adı
  • NETWORK_REQUEST için: ağ isteği URL'si kalıbı
parent_trace_name dize İzleme metriğini taşıyan üst izlemenin adı
Yalnızca TRACE_METRIC için geçerlidir.
trace_info KAYIT Yalnızca DURATION_TRACE, SCREEN_TRACE ve TRACE_METRIC için geçerlidir.
trace_info.duration_us int64
  • DURATION_TRACE ve SCREEN_TRACE için — İzlemenin başından sonuna kadar geçen süre ("süre")
  • TRACE_METRIC için: üst izlemenin başlangıcından sonuna kadar geçen süre ("süre")
Birim: mikrosaniye
trace_info.screen_info KAYIT Yalnızca SCREEN_TRACE için geçerlidir.
trace_info.screen_info.slow_frame_ratio float64 Bu ekran izi için yavaş karelerin oranı (0 ile 1 arasında). (Örneğin, 0,05 değeri, bu ekran örneğindeki karelerin% 5'inin oluşturulmasının 16 ms'den uzun sürdüğü anlamına gelir.)
trace_info.screen_info.frozen_frame_ratio float64 Bu ekran izi için donmuş karelerin oranı (0 ile 1 arasında). (Örneğin, 0,05 değeri, bu ekran örneğindeki karelerin% 5'inin oluşturulmasının 700 ms'den uzun sürdüğü anlamına gelir.)
trace_info.metric_info KAYIT Yalnızca TRACE_METRIC için geçerlidir.
trace_info.metric_info.metric_value int64 İzleme metriğinin değeri
network_info KAYIT Yalnızca NETWORK_REQUEST için geçerlidir.
network_info.response_code int64 Ağ yanıtının HTTP yanıt kodu (örneğin, 200, 404)
network_info.response_mime_type dize Ağ yanıtının MIME türü (ör. "text/html")
network_info.request_http_method dize Ağ isteğinin HTTP yöntemi (ör. "GET" veya "POST")
network_info.request_payload_bytes int64 Ağ isteği yükünün boyutu
Birim: bayt
network_info.response_payload_bytes int64 Ağ yanıtı yükünün boyutu
Birim: bayt
network_info.request_completed_time_us int64 Ağ isteği gönderimi tamamlandıktan sonra event_timestamp cinsinden geçen süre (mikrosaniye) Birim: mikrosaniye
network_info.response_initiated_time_us int64 Ağ yanıtı başlatıldığında event_timestamp sonrasındaki mikrosaniyeler
Birim: mikrosaniye
network_info.response_completed_time_us int64 Ağ yanıtı tamamlandıktan sonraki event_timestamp mikrosaniye
Birim: mikrosaniye

Dışa aktarılan verilerle neler yapabilirsiniz?

Aşağıdaki bölümlerde, dışa aktarılan Performance Monitoring verilerinizle ilgili olarak BigQuery'da çalıştırabileceğiniz sorgulara örnekler verilmiştir.

Konsolda görünen verilerle eşleştirme

Firebase kontrol panelinde günlük veriler America/Los_Angeles saat diliminde toplanır. Konsolda görünenlerle eşleşmesi için tarih işlevleri, saat dilimini açıkça America/Los_Angeles olarak ayarlamalıdır. Aksi takdirde tarih işlevi varsayılan olarak UTC'yi kullanır.

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;

Ülkeye göre ortalama uygulama başlatma gecikmesi dökümünü görüntüleme

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;

Donmuş karelerin oranını çeşitli koşullara göre kontrol etme

Örneğin, farklı radyo türlerinde (kablosuz, 4G vb.) kullanıcıların uygulamanızın her ekranında geçirdiği süreyle birlikte donmuş karelerin oranını kontrol edebilirsiniz.

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;

Belirli dosya türlerinin diskten yüklenmesi için önbellek isabet oranını hesaplama

Bu analizde, diskten yükleme için file-extension adlı özel bir özellik ve cache-hit adlı özel bir metrik (TRACE_METRIC) ile özel bir kod izleme aracı oluşturduğunuz varsayılır. Bu metrik, önbellek isabeti durumunda 1, önbellek eksikliği durumunda ise 0 olarak ayarlanır.

Örneğin, diskten PNG dosyaları yükleme için önbellek isabet oranını hesaplayabilirsiniz:

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);

Kullanıcıların ağ isteklerini gönderdiği günün saatini kontrol edin.

Örneğin, ABD'deki kullanıcıların günün hangi saatinde uygulamanızdan ağ istekleri gönderdiğini kontrol edebilirsiniz:

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;

Performance MonitoringVerilerinizi her yere götürme

Bazen Performance Monitoring verilerinize sunucu tarafında erişmek veya bunları başka bir üçüncü taraf çözümüne aktarmak isteyebilirsiniz. Veri dışa aktarma işlemi şu anda ücretsizdir.

Verilerinizi dışa aktarmak için:

  • BigQuery web kullanıcı arayüzünü kullanma

  • CLI komutunu çalıştırma bq extract

  • API veya istemci kitaplıkları aracılığıyla çıkarma işi gönderme.

Fiyatlandırma

Performance Monitoring'dan veri dışa aktarma işlemi ücretsizdir ve Performance Monitoring cömert ücretsiz kullanım sınırları sunar.BigQuery Ayrıntılı bilgi için BigQuery fiyatlandırması veya BigQuery sandbox bölümüne bakın.