NewRelicでモバイルアプリの分析を実施する際のメモ
アプリからNewRelicにイベント収集される間隔はデフォルト 600秒 = 10分
Androidでバックグラウンドにある最中は recordCustomEvent
やrecordMetric
は動作しない
アプリからイベントなどが送信されて、NewRelicのダッシュボードに反映されるまで、体感15分程度かかる
データ保持の期間はデータの種類やNewRelicの契約プランによって異なる。
Manage Your Data
> Data retention
から確認することができる
クエリ(NRQL)による検索は、デフォルト状態だとWeb画面上の期間指定が反映されている。
クエリ内で期間指定を強制したい場合は、クエリ画面の Ignore time picker
をONにし、 SINCE
句を用いる。
SELECT * FROM MobileRequestError WHERE appName = 'hoge' SINCE 90 days ago
クエリ(NRQL)による検索は、最大100件までしか表示されない。
ページングを行いたい場合は、 LIMIT
と OFFSET
を用いる。
SELECT * FROM MobileRequestError WHERE appName = 'hoge' LIMIT 100 OFFSET 200
メトリックAPIで投入したデータの保持期間は、生データは30日間、集計データは13ヶ月保存される。
NRQLで時刻により検索する場合は、タイムゾーンに気を付ける必要がある。
何も指定していないと UTC で検索されるため、JST で検索する場合は以下のような指定を行う必要がある。
SELECT * FROM Mobile SINCE '2023-07-05 11:00:00 +0900' UNTIL '2023-07-05 11:01:00 +0900'
NRQLによる検索結果で表示される Timestamp
は、ユーザー設定のタイムゾーンで表示される。
分散トレーシングの機能を使えば、モバイルアプリとAPI側でのイベントを俯瞰で観れるか?
分散トレーシングの機能だと、モバイルアプリのHTTPリクエストを起点として、APIやマイクロサービス側でリクエストが発生している様子を関連づけてみることができる。
HTTPリクエストの特定のヘッダーを MobileRequest
で収集するには、 addHTTPHeadersTrackingFor
が利用できる。
さらにレスポンスBodyの一部を収集するなど細かく制御したい場合は、 NetworkRequests
や NetworkErrorRequests
の自動収集をOFFにしつつ、 noticeHttpTransaction
を用いてHTTPリクエストの完了時にイベントを手動で収集すれば良さそう。
直近1週間のデータと、さらにその1週間前のデータを比較するには、 COMPARE WITH
構文が便利。
SELECT average(duration) FROM PageView
SINCE 1 week ago COMPARE WITH 1 week AGO
addHTTPHeadersTrackingFor
で収集したヘッダーをNRQLで検索する方法。
例えばヘッダーキーが X-TEST
のような名前だとした際、通常ハイフン -
を含むカラム名はNRQLにそのまま指定できない。
この場合は、バッククォート `
でエスケープしてやると、指定できる。
SELECT `X-TEST` FROM MobileRequest