Performance Monitoring データを Apple アプリと Android アプリから BigQuery にエクスポートして、詳細に分析できます。BigQuery では、BigQuery SQL を使用してデータを分析できるほか、別のクラウド プロバイダにデータをエクスポートしたり、データをカスタム ML モデルで使用したりできます。
BigQuery エクスポートを有効にする
Firebase コンソールの [統合] ページに移動し、[BigQuery] カードの [リンク] をクリックします。
画面上の指示に従って BigQuery を有効にします。
Performance Monitoring で BigQuery エクスポートを有効にすると、次のようになります。
Firebase は BigQuery に既存データのコピーをエクスポートします。エクスポートするデータの初回の読み込みには、最長で 48 時間かかる場合があります。
- BigQuery Export を有効にした場合、過去 30 日間または最新の日付まで(どちらか最新のほう)、データ バックフィルを手動でスケジュールできます。
データセットの作成後はロケーションを変更できませんが、データセットを別のロケーションにコピーするか、データセットを別のロケーションに手動で移動(再作成)することはできます。詳細については、データセットのロケーションの変更をご覧ください。
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
が含まれています
詳細なデータスキーマ
フィールド名 | 型 | 説明 |
---|---|---|
event_timestamp | timestamp | クライアント デバイスでイベント(トレース開始、ネットワーク開始など)が開始されたエポックを起点とするタイムスタンプ |
app_display_version | 文字列 | アプリケーションの表示バージョン(4.1.7 など)
|
app_build_version | 文字列 | アプリケーションのビルド バージョン(1523456 など)
|
os_version | 文字列 | クライアント デバイスの OS バージョン
|
device_name | 文字列 | クライアント デバイスの名前(「Google Pixel」など) |
country | 文字列 | イベントが発生した国の 2 文字の国コード(たとえば「US」など。不明な国の場合は「ZZ」) |
carrier | 文字列 | クライアント デバイスの通信会社 |
radio_type | 文字列 | イベントが発生したときの有効な無線通信のタイプ(「WIFI」など) |
custom_attributes | ARRAY<RECORD> | このイベントに関連付けられているすべてのカスタム属性 |
custom_attributes.key | 文字列 | カスタム属性のキー |
custom_attributes.value | 文字列 | カスタム属性の値 |
event_type | 文字列 | イベントのタイプ。取りうる値:
|
event_name | 文字列 | イベント名
|
parent_trace_name | 文字列 | トレース指標を保持する親トレースの名前TRACE_METRIC の場合のみ存在 |
trace_info | RECORD | DURATION_TRACE 、SCREEN_TRACE 、TRACE_METRIC の場合のみ表示される |
trace_info.duration_us | int64 |
|
trace_info.screen_info | RECORD | SCREEN_TRACE の場合のみ表示される |
trace_info.screen_info.slow_frame_ratio | float64 | 0~1 の範囲の値で、画面トレースにおける低速フレームの割合を示す(たとえば、値が 0.05 である場合は、この画面インスタンスのフレームの 5% が、レンダリングに 16 ms を超える時間を要したことを示しています) |
trace_info.screen_info.frozen_frame_ratio | float64 | 0~1 の範囲の値で、画面トレースにおいてフリーズしたフレームの割合を示す(たとえば値が 0.05 である場合は、この画面インスタンスのフレームの 5% が、レンダリングに 700 ms を超える時間を要したことを示しています) |
trace_info.metric_info | RECORD | TRACE_METRIC の場合のみ表示される |
trace_info.metric_info.metric_value | int64 | トレース指標の値 |
network_info | RECORD | NETWORK_REQUEST の場合のみ表示される |
network_info.response_code | int64 | ネットワーク レスポンスの HTTP レスポンス コード(200、404 など) |
network_info.response_mime_type | 文字列 | ネットワーク レスポンスの MIME タイプ(「text/html」など) |
network_info.request_http_method | 文字列 | ネットワーク リクエストの HTTP メソッド(「GET」、「POST」など) |
network_info.request_payload_bytes | int64 | ネットワーク リクエストのペイロードのサイズ 単位: バイト |
network_info.response_payload_bytes | int64 | ネットワーク レスポンスのペイロードのサイズ 単位: バイト |
network_info.request_completed_time_us | int64 | ネットワーク リクエストの送信が完了した event_timestamp 以後の経過時間単位: マイクロ秒 |
network_info.response_initiated_time_us | int64 | ネットワーク レスポンスが開始した event_timestamp 以後の経過時間単位: マイクロ秒 |
network_info.response_completed_time_us | int64 | ネットワーク レスポンスが完了した event_timestamp 以後の経過時間単位: マイクロ秒 |
エクスポートされたデータで可能な操作
以下のセクションでは、エクスポートした Performance Monitoring データに対して 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;
さまざまな条件下におけるフリーズしたフレームの比率の確認
たとえば、さまざまな無線のタイプ(Wi-Fii、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 データのさまざまな場所への移動
必要に応じて、サーバー側で Performance Monitoring データにアクセスしたり、サードパーティ ソリューションに Performance Monitoring データを push したりできます。現時点では、データのエクスポートは無料です。
データをエクスポートする方法は次のとおりです。
BigQuery ウェブ UI を使用する
CLI コマンド
bq extract
を実行するAPI またはクライアント ライブラリを介して抽出ジョブを送信する
料金
Performance Monitoring からのデータのエクスポートには料金がかかりません。BigQuery には料金なしで使用できる上限枠があります。詳細については、BigQuery の料金または BigQuery サンドボックスをご覧ください。