Performance Monitoring verilerini BigQuery'ye aktarın

Daha ayrıntılı analiz için Apple ve Android uygulamalarından Performance Monitoring verilerini 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 modellerinizde kullanmanıza olanak tanır.

BigQuery dışa aktarma özelliğini etkinleştirme

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

  2. BigQuery'ü etkinleştirmek için ekrandaki talimatları uygulayın.

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

    • Firebase, BigQuery'ye mevcut verilerinizin bir kopyasını dışa aktarır. Dışa aktarma işlemi 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 manuel olarak farklı bir konuma taşıyabilir (yeniden oluşturabilirsiniz). 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 genellikle planlandıktan sonra 24 saat içinde biter.

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

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

BigQuery alanına hangi veriler 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 olabilecek tek bir performans etkinliğidir:

  • Süre izi: Varsayılan olarak uygulama başlangıcı, ön planda uygulama ve arka planda uygulama gibi "süre" metriğini ve geliştirici tarafından enstrümante edilen tüm özel kod izlerini toplayan izler

    • event_type: DURATION_TRACE
    • event_name, iz adıyla aynı
  • İzleme metriği: Geliştiricinin kullandığı özel kod izleriyle ilişkilendirilen ö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 izleme: Bir ekranın kullanım ömrünü kapsayan izlemeler (ekran oluşturma izlemeleri)

    • event_type: SCREEN_TRACE
    • event_name, _st_ ön ekiyle birlikte gerçek ekran adıdır.
  • Ağ isteği: Bir ağ isteğinin yaşam süresini kapsayan 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 ülkesi ve operatörü) ve etkinliğe özgü bilgileri içerir:

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

Ayrıntılı veri şeması

Alan Adı Tür Açıklama
event_timestamp zaman damgası Etkinliğin istemci cihazında başladığı zaman (zaman damgası) (izleme başlangıcı, ağ başlangıcı vb.)
app_display_version dize Uygulamanın görüntülenen sürümü (ör. "4.1.7")
  • Android için: VersionName
  • iOS için: CFBundleShortVersionString
app_build_version dize Uygulamanın derleme sürümü (ör. "1523456")
  • Android için — VersionCode
  • iOS için: CFBundleVersion
os_version dize İstemci cihazın OS sürümü
  • Android için: Android API düzeyi (ör. "26")
  • iOS için: iOS sürümü (ör. "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ü
radyo_türü dize Etkinliğin gerçekleştiği sırada etkin radyo türü (ör. "Kablosuz Ağ")
custom_attributes ARRAY<RECORD> Bu etkinliğe eklenen tüm özel özellikler
custom_attributes.key dize Özel özelliğin anahtarı
özel_özellikler.değer dize Özel özelliğin değeri
event_type dize Etkinliğin türü; olası değerler:
  • DURATION_TRACE: Varsayılan olarak uygulama başlangıcı, ön plandaki uygulama ve arka plandaki uygulamanın yanı sıra geliştirici tarafından enstrümante edilen tüm özel kod izlerini içeren "süre" metriğini toplayan izler
  • SCREEN_TRACE: Bir ekranın kullanım süresini kapsayan izler (ekran oluşturma izleri)
  • TRACE_METRIC: Geliştirici aracı tarafından kullanılan özel kod izlemelerle ilişkilendirilen özel metrikler
  • NETWORK_REQUEST: Bir ağ isteğinin ömrünü kapsayan izler (HTTP ağ isteği izleri)
event_name dize Etkinliğin adı
  • DURATION_TRACE için — iz 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 kalıbı
parent_trace_name dize İzleme metriğini taşıyan üst izlemenin adı
Yalnızca TRACE_METRIC için mevcuttur
trace_info KAYIT Yalnızca DURATION_TRACE, SCREEN_TRACE ve TRACE_METRIC için mevcut
trace_info.duration_us int64
  • DURATION_TRACE ve SCREEN_TRACE için — İzin başlangıcından sonuna kadar geçen süre ("duration")
  • TRACE_METRIC için: Üst izlemenin başlangıcından sonuna kadar süre ("süre")
Birim: mikrosaniye
trace_info.screen_info KAYIT Yalnızca SCREEN_TRACE için mevcut
izleme_bilgisi.ekran_bilgisi.yavaş_kare_oranı kayan64 Bu ekran izi için yavaş karelerin oranı, 0 ile 1 arasındadır (ö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 kayan64 Bu ekran izleme 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 mevcut
trace_info.metric_info.metric_value int64 İz metriğinin değeri
network_info KAYIT Yalnızca NETWORK_REQUEST için mevcut
network_info.response_code int64 Ağ yanıtı için 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_tr int64 Ağ isteği gönderimi tamamlandığında event_timestamp'ten sonraki mikrosaniyeler
Birim: mikrosaniye
network_info.response_initiated_time_tr int64 Ağ yanıtı başlatıldıktan event_timestamp mikrosaniye sonra
Birim: mikrosaniye
network_info.response_completed_time_us int64 Ağ yanıtı tamamlandıktan sonra event_timestamp değerinden sonraki mikrosaniyeler
Birim: mikrosaniye

Dışa aktarılan verilerle neler yapabilirsiniz?

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

Console'da görülen verilerle eşleştirme

Firebase kontrol paneli, günlük verileri America/Los_Angeles saat diliminde toplar. Konsoldakiyle eşleşecek şekilde, tarih işlevleri saat dilimi olarak America/Los_Angeles değerini açıkça 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, donmuş karelerin oranını ve kullanıcıların farklı radyo türlerini (kablosuz, 4G vb.) kullanırken uygulamanızın her bir ekranında geçirdiği sürenin 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;

Diskten belirli dosya türlerini yüklemek için önbellek isabet oranını hesaplama

Bu analizde, diskten yükleme için özel bir kod izlemeyi file-extension adlı bir özel özellikle ve cache-hit adlı bir özel metrik (TRACE_METRIC) ile donattığınız varsayılır. Bu metrik, önbellek isabeti durumunda 1, önbellek hatası durumunda ise 0 olarak ayarlanır.

Örneğin, PNG dosyalarını diskten yüklemeyle ilgili ö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ğ isteği gönderdiği zamanı kontrol edin

Örneğin, ABD'deki kullanıcıların günün hangi saatinde uygulamanızdan ağ isteği 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 Monitoring verilerinizi istediğiniz yere götürme

Bazen Performance Monitoring verilerinize sunucu tarafında erişmek veya verilerinizi başka bir üçüncü taraf çözümüne aktarmak istersiniz. Şu anda verilerin dışa aktarılması için ücret alınmamaktadır.

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ı üzerinden ayıklama işi gönderme

Fiyatlandırma

Performance Monitoring hizmetinden dışa veri aktarma işlemi ücretsizdir ve BigQuery, ücretsiz olarak kapsamlı kullanım sınırları sunar. Ayrıntılı bilgi için BigQuery fiyatlandırması veya BigQuery korumalı alanı inceleyin.