您可以將 Apple 和 Android 應用程序中的性能監控數據導出到BigQuery中以供進一步分析。 BigQuery 允許您使用 BigQuery SQL 分析數據,將其導出到另一個雲提供商,甚至可以將數據用於您的自定義 ML 模型。
啟用 BigQuery 導出
轉到 Firebase 控制台中的集成頁面,然後單擊BigQuery卡中的鏈接。
按照屏幕上的說明啟用 BigQuery。
當您為性能監控啟用 BigQuery 導出時,會發生以下情況:
Firebase將現有數據的副本導出到 BigQuery。導出數據的初始傳播最多可能需要 48 小時才能完成。
創建數據集後,位置無法更改,但您可以將數據集複製到其他位置或手動將數據集移動(重新創建)到其他位置。要了解更多信息,請參閱更改數據集位置。
Firebase 會定期將您的數據從您的 Firebase 項目同步到 BigQuery。這些日常導出操作通常會在計劃後的 24 小時內完成。
默認情況下,您項目中的所有應用都鏈接到 BigQuery。您以後添加到項目中的任何應用程序都會自動鏈接到 BigQuery。您可以管理哪些應用程序發送數據。
要停用 BigQuery 導出,請在 Firebase 控制台中取消鏈接您的項目。
哪些數據會導出到 BigQuery?
對於項目中的每個應用程序,導出都會創建一個表,其中包含所有捕獲的性能事件。表中的每一行都是一個性能事件,可以是以下之一:
持續時間跟踪——默認情況下收集“持續時間”指標的跟踪,包括應用程序啟動、應用程序在前台和應用程序在後台,以及任何開發人員檢測的自定義代碼跟踪
event_type
是DURATION_TRACE
-
event_name
與跟踪名稱相同
跟踪指標——與開發人員檢測的自定義代碼跟踪關聯的自定義指標
event_type
是TRACE_METRIC
-
event_name
是指標的名稱 parent_trace_name
是包含此指標的跟踪名稱
屏幕痕跡——跨越屏幕生命週期的痕跡(屏幕渲染痕跡)
-
event_type
是SCREEN_TRACE
-
event_name
是前綴_st_
加上實際的屏幕名稱
-
網絡請求——跨越網絡請求生命週期的跟踪(HTTP 網絡請求跟踪)
-
event_type
是NETWORK_REQUEST
-
event_name
是網絡請求URL的分類模式
-
每個性能事件都包含事件的屬性(例如客戶端設備的國家和運營商),以及特定於事件的信息:
- 持續時間跟踪、跟踪指標和屏幕跟踪包含
trace_info
- 跟踪指標包含
trace_info.metric_info
- 屏幕痕跡包含
trace_info.screen_info
- 網絡跟踪包含
network_info
詳細的數據模式
字段名稱 | 類型 | 描述 |
---|---|---|
事件時間戳 | 時間戳 | 自事件在客戶端設備上開始(跟踪開始、網絡開始等)的紀元以來的時間戳 |
app_display_version | 細繩 | 顯示應用程序的版本(例如“4.1.7”)
|
app_build_version | 細繩 | 應用程序的構建版本(例如,“1523456”)
|
操作系統版本 | 細繩 | 客戶端設備的操作系統版本
|
設備名稱 | 細繩 | 客戶端設備的名稱(例如“Google Pixel”) |
國家 | 細繩 | 事件發生所在國家/地區的兩個字母國家/地區代碼(例如,“US”或“ZZ”表示未知國家/地區) |
載體 | 細繩 | 客戶端設備的運營商 |
收音機類型 | 細繩 | 事件發生時的活動無線電類型(例如,“WIFI”) |
自定義屬性 | 數組<記錄> | 附加到此事件的所有自定義屬性 |
自定義屬性.key | 細繩 | 自定義屬性的鍵 |
自定義屬性值 | 細繩 | 自定義屬性的值 |
事件類型 | 細繩 | 事件類型;可能的值:
|
事件名稱 | 細繩 | 活動名稱
|
parent_trace_name | 細繩 | 承載trace metric的父trace名稱 僅針對 TRACE_METRIC 存在 |
跟踪信息 | 記錄 | 僅針對DURATION_TRACE 、 SCREEN_TRACE 和TRACE_METRIC 存在 |
trace_info.duration_us | 整數64 |
|
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;
將您的性能監控數據帶到任何地方
有時您想要訪問您的性能監控數據服務器端或將其推送到另一個第三方解決方案。目前導出數據不收費。
您可以通過以下方式導出數據:
使用 BigQuery 網頁界面
運行 CLI 命令
bq extract
通過 API 或客戶端庫提交提取作業。
價錢
從 Performance Monitoring 導出數據是免費的,BigQuery 提供慷慨的免費使用限制。有關詳細信息,請參閱BigQuery 定價或BigQuery 沙盒。