获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

將性能監控數據導出到 BigQuery

您可以將性能監控數據從 Apple 和 Android 應用導出到BigQuery以進行進一步分析。 BigQuery 允許您使用 BigQuery SQL 分析數據,將其導出到另一個雲提供商,甚至可以將數據用於您的自定義 ML 模型。

啟用 BigQuery 導出

  1. 轉到 Firebase 控制台中的集成頁面,然後點擊BigQuery卡中的鏈接

  2. 按照屏幕上的說明啟用 BigQuery。

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

    • Firebase將現有數據的副本導出到 BigQuery。用於導出的數據的初始傳播最多可能需要 48 小時才能完成。

      • 您可以手動將數據回填時間安排到過去 30 天或啟用 BigQuery 導出的最近日期(以最近的日期為準)。
    • 創建數據集後,位置無法更改,但您可以將數據集複製到其他位置或手動將數據集移動(重新創建)到其他位置。要了解更多信息,請參閱更改數據集位置

    • Firebase 會定期將您的數據從 Firebase 項目同步到 BigQuery。這些日常導出操作通常在預定後的 24 小時內完成。

    • 默認情況下,您項目中的所有應用都鏈接到 BigQuery。您稍後添加到項目中的任何應用都會自動鏈接到 BigQuery。您可以管理哪些應用程序發送數據

要停用 BigQuery 導出,請在 Firebase 控制台中取消關聯您的項目

哪些數據會導出到 BigQuery?

對於項目中的每個應用程序,導出會創建一個包含所有捕獲的性能事件的表。表中的每一行都是一個單獨的性能事件,可以是以下之一:

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

    • event_typeDURATION_TRACE
    • event_name與跟踪名稱相同
  • Trace metric — 與開發人員檢測的自定義代碼跟踪相關聯的自定義指標

    • 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

詳細的數據架構

字段名稱類型描述
event_timestamp時間戳自 Epoch 在客戶端設備上啟動事件時的時間戳(跟踪啟動、網絡啟動等)
app_display_version細繩顯示應用程序的版本(例如,“4.1.7”)
  • 對於 Android - VersionName
  • 對於 iOS — CFBundleShortVersionString
app_build_version細繩應用程序的構建版本(例如,“1523456”)
  • 對於 Android - VersionCode
  • 對於 iOS — CFBundleVersion
操作系統版本細繩客戶端設備的操作系統版本
  • 對於 Android - Android API 級別(例如“26”)
  • 對於 iOS - iOS 版本(例如“11.4”)
設備名稱細繩客戶端設備的名稱(例如,“Google Pixel”)
國家細繩事件發生所在國家/地區的兩個字母的國家/地區代碼(例如,“US”或“ZZ”代表未知國家)
載體細繩客戶端設備的運營商
radio_type細繩事件發生時的活動無線電類型(例如,“WIFI”)
自定義屬性數組<記錄>附加到此事件的所有自定義屬性
custom_attributes.key細繩自定義屬性的鍵
custom_attributes.value細繩自定義屬性的值
事件類型細繩事件類型;可能的值:
  • DURATION_TRACE — 默認情況下收集“持續時間”指標的跟踪,包括應用程序啟動、應用程序在前台和應用程序在後台,以及任何開發人員檢測的自定義代碼跟踪
  • SCREEN_TRACE — 跨越屏幕生命週期的跟踪(屏幕渲染跟踪)
  • TRACE_METRIC — 與開發人員檢測的自定義代碼跟踪關聯的自定義指標
  • NETWORK_REQUEST — 跨越網絡請求生命週期的跟踪(HTTP 網絡請求跟踪)
事件名稱細繩活動名稱
  • 對於DURATION_TRACE — 跟踪名稱
  • 對於TRACE_METRIC — 自定義指標名稱
  • 對於SCREEN_TRACE_st_後跟跟踪名稱
  • 對於NETWORK_REQUEST — 網絡請求 URL 模式
parent_trace_name細繩攜帶跟踪指標的父跟踪的名稱
僅適用於TRACE_METRIC
跟踪信息記錄僅適用於DURATION_TRACESCREEN_TRACETRACE_METRIC
trace_info.duration_us整數64
  • 對於DURATION_TRACESCREEN_TRACE — 從跟踪開始到結束的時間長度(“持續時間”)
  • 對於TRACE_METRIC — 從父跟踪開始到結束的時間長度(“持續時間”)
單位:微秒
trace_info.screen_info記錄SCREEN_TRACE
trace_info.screen_info.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_info.metric_info記錄僅適用於TRACE_METRIC
trace_info.metric_info.metric_value整數64跟踪指標的值
網絡信息記錄僅適用於NETWORK_REQUEST
network_info.response_code整數64網絡響應的 HTTP 響應代碼(例如,200、404)
network_info.response_mime_type細繩網絡響應的 MIME 類型(例如,“text/html”)
network_info.request_http_method細繩網絡請求的 HTTP 方法(例如,“GET”或“POST”)
network_info.request_payload_bytes整數64網絡請求負載的大小
單位:字節
network_info.response_payload_bytes整數64網絡響應負載的大小
單位:字節
network_info.request_completed_time_us整數64網絡請求發送完成時event_timestamp後的微秒
單位:微秒
network_info.response_initiated_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 沙盒