Firebase is back at Google I/O on May 10! Register now

將性能監控數據導出到 BigQuery

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

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

啟用 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

詳細的數據模式

字段名稱類型描述
事件時間戳時間戳自事件在客戶端設備上開始(跟踪開始、網絡開始等)的紀元以來的時間戳
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”表示未知國家/地區)
載體細繩客戶端設備的運營商
收音機類型細繩事件發生時的活動無線電類型(例如,“WIFI”)
自定義屬性數組<記錄>附加到此事件的所有自定義屬性
自定義屬性.key細繩自定義屬性的鍵
自定義屬性值細繩自定義屬性的值
事件類型細繩事件類型;可能的值:
  • DURATION_TRACE — 默認情況下收集“持續時間”指標的跟踪,包括應用程序啟動、應用程序在前台和應用程序在後台,以及任何開發人員檢測的自定義代碼跟踪
  • SCREEN_TRACE — 跨越屏幕生命週期的痕跡(屏幕渲染痕跡)
  • TRACE_METRIC — 與開發人員檢測的自定義代碼跟踪關聯的自定義指標
  • NETWORK_REQUEST — 跨越網絡請求生命週期的跟踪(HTTP 網絡請求跟踪)
事件名稱細繩活動名稱
  • 對於DURATION_TRACE — 跟踪名稱
  • 對於TRACE_METRIC — 自定義指標名稱
  • 對於SCREEN_TRACE_st_後跟跟踪名稱
  • 對於NETWORK_REQUEST — 網絡請求 URL 模式
parent_trace_name細繩承載trace metric的父trace名稱
僅針對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 float64此屏幕跟踪的慢幀比率,介於 0 和 1 之間(例如,值為 0.05 表示此屏幕實例的 5% 的幀渲染時間超過 16 毫秒)
trace_info.screen_info.frozen_frame_ratio float64此屏幕跟踪的凍結幀比率,介於 0 和 1 之間(例如,值為 0.05 表示此屏幕實例的 5% 的幀渲染時間超過 700 毫秒)
跟踪信息.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;

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

有時您想要訪問您的性能監控數據服務器端或將其推送到另一個第三方解決方案。目前導出數據不收費。

您可以通過以下方式導出數據:

價錢

從 Performance Monitoring 導出數據是免費的,BigQuery 提供慷慨的免費使用限制。有關詳細信息,請參閱BigQuery 定價BigQuery 沙盒