將效能監控資料匯出到 BigQuery

您可以將 Apple 和 Android 應用程式中的效能監控資料匯出到BigQuery中以進行進一步分析。 BigQuery 允許您使用 BigQuery SQL 分析數據,將其匯出到另一個雲端供應商,甚至將數據用於自訂機器學習模型。

啟用 BigQuery 匯出

  1. 前往 Firebase 控制台中的「整合」頁面,然後點擊BigQuery卡中的「連結」

  2. 請依照螢幕上的指示啟用 BigQuery。

    當您為效能監控啟用 BigQuery 匯出時,會發生以下情況:

若要停用 BigQuery 匯出,請在 Firebase 控制台中取消連結您的專案

哪些資料會匯出到 BigQuery?

對於專案中的每個應用程序,匯出都會建立一個包含所有捕獲的效能事件的表。表中的每一行都是一個效能事件,可以是以下其中之一:

  • 持續時間跟踪- 默認情況下收集“持續時間”指標的跟踪,其中包括應用程序啟動、應用程序在前台和應用程序在後台,以及任何開發人員檢測的自定義代碼跟踪

    • event_typeDURATION_TRACE
    • event_name與追蹤名稱相同
  • 追蹤指標— 與開發人員檢測的自訂程式碼追蹤相關的自訂指標

    • event_typeTRACE_METRIC
    • event_name是指標的名稱
    • parent_trace_name是包含此指標的追蹤名稱
  • 螢幕追蹤— 跨越螢幕生命週期的追蹤(螢幕渲染追蹤)

    • event_typeSCREEN_TRACE
    • event_name是前綴_st_加實際螢幕名稱
  • 網路請求- 跨越網路請求生命週期的追蹤(HTTP 網路請求追蹤)

    • event_typeNETWORK_REQUEST
    • event_name是網頁請求 URL 的分類模式

每個效能事件都包含事件的屬性(例如客戶端設備的國家/地區和運營商)以及特定於事件的資訊:

  • 持續時間追蹤、追蹤指標和螢幕追蹤包含trace_info
  • 追蹤指標包含trace_info.metric_info
  • 螢幕痕跡包含trace_info.screen_info
  • 網路追蹤包含network_info

詳細的資料架構

欄位名稱類型描述
事件時間戳時間戳自紀元以來客戶端設備上事件啟動的時間戳記(追蹤啟動、網路啟動等)
應用程式顯示版本細繩顯示應用程式的版本(例如“4.1.7”)
  • 對於 Android — VersionName
  • 對於 iOS — CFBundleShortVersionString
應用程式建置版本細繩應用程式的建置版本(例如“1523456”)
  • 對於 Android — VersionCode
  • 對於 iOS — CFBundleVersion
作業系統版本細繩用戶端設備的作業系統版本
  • 對於 Android — Android API 等級(例如“26”)
  • 對於 iOS — iOS 版本(例如“11.4”)
設備名稱細繩客戶端設備的名稱(例如“Google Pixel”)
國家細繩事件發生所在國家/地區的兩個字母的國家/地區代碼(例如,“US”或“ZZ”表示未知國家/地區)
載體細繩客戶端設備的營運商
無線電類型細繩事件發生時的活動無線電類型(例如“WIFI”)
自訂屬性數組<記錄>附加到此事件的所有自訂屬性
自訂屬性.key細繩自訂屬性的key
自訂屬性值細繩自訂屬性的值
事件類型細繩事件類型;可能的值:
  • DURATION_TRACE — 預設會收集「持續時間」指標的跟踪,其中包括應用程式啟動、應用程式在前台和應用程式在後台,以及任何開發人員檢測的自訂程式碼跟踪
  • SCREEN_TRACE — 跨越螢幕生命週期的追蹤(螢幕渲染追蹤)
  • TRACE_METRIC — 與開發人員檢測的自訂程式碼追蹤關聯的自訂指標
  • NETWORK_REQUEST — 跨越網路請求生命週期的追蹤(HTTP 網路請求追蹤)
事件名稱細繩活動名稱
  • 對於DURATION_TRACE — 追蹤名稱
  • 對於TRACE_METRIC — 自訂指標名稱
  • 對於SCREEN_TRACE_st_後面跟著追蹤名稱
  • 對於NETWORK_REQUEST — 網路請求 URL 模式
父跟蹤名稱細繩攜帶追蹤指標的父追蹤的名稱
僅針對TRACE_METRIC存在
追蹤訊息記錄僅適用於DURATION_TRACESCREEN_TRACETRACE_METRIC
追蹤訊息.duration_us整數64
  • 對於DURATION_TRACESCREEN_TRACE — 從追蹤開始到結束的時間長度(「持續時間」)
  • 對於TRACE_METRIC — 從父追蹤開始到結束的時間長度(「持續時間」)
單位:微秒
追蹤訊息.螢幕訊息記錄僅針對SCREEN_TRACE存在
追蹤資訊.螢幕資訊.slow_frame_ratio浮動64此螢幕追蹤的慢幀比率,介於 0 和 1 之間(例如,值 0.05 表示此螢幕實例的 5% 的幀的渲染時間超過 16 毫秒)
Trace_info.screen_info.frozen_frame_ratio浮動64此螢幕追蹤的凍結幀比率,介於 0 和 1 之間(例如,值 0.05 表示此螢幕實例的 5% 的幀的渲染時間超過 700 毫秒)
追蹤資訊.指標訊息記錄僅針對TRACE_METRIC存在
Trace_info.metric_info.metric_value整數64追蹤指標的值
網路資訊記錄僅針對NETWORK_REQUEST存在
網路資訊.回應代碼整數64網路回應的 HTTP 回應代碼(例如 200、404)
網路資訊.response_mime_type細繩網路回應的 MIME 類型(例如“text/html”)
network_info.request_http_method細繩網路請求的 HTTP 方法(例如“GET”或“POST”)
網路資訊.request_payload_bytes整數64網路請求負載的大小
單位:位元組
network_info.response_payload_bytes整數64網路回應負載的大小
單位:位元組
network_info.request_completed_time_us整數64網路請求發送完成後event_timestamp後的微秒數
單位:微秒
network_info.response_initerated_time_us整數64發起網路回應時event_timestamp之後的微秒數
單位:微秒
network_info.response_completed_time_us整數64網路回應完成時event_timestamp之後的微秒數
單位:微秒

您可以使用匯出的資料做什麼?

以下部分提供了您可以在 BigQuery 中針對匯出的效能監控資料執行的查詢範例。

查看按國家/地區劃分的平均應用程式啟動延遲細分

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;

檢查不同條件下的凍結幀比例

例如,您可以檢查凍結幀的比率以及用戶使用不同無線電類型(WiFi、4G 等)時在應用程式每個螢幕上花費的時間。

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;

計算從磁碟載入某些類型檔案的快取命中率

此分析假設您使用名為file-extension的自訂屬性和名為cache-hit的自訂指標( TRACE_METRIC )來檢測自訂程式碼跟踪,以便從磁碟加載,如果快取命中,則設定為1 ,如果快取未命中,則設定為0

例如,您可以計算從磁碟載入 PNG 檔案的快取命中率:

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

檢查使用者發出網路請求的時間

例如,您可以檢查來自美國的用戶在一天中的什麼時間從您的應用程式發出網路請求:

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;

將您的效能監控數據帶到任何地方

有時您想要存取效能監控資料伺服器端或將其推送到另一個第三方解決方案。目前導出數據不收取任何費用。

您可以透過以下方式匯出資料:

價錢

從效能監控匯出資料是免費的,並且 BigQuery 提供慷慨的免費使用限制。有關詳細信息,請參閱BigQuery 定價BigQuery 沙盒