Mobile の失敗リクエストイベントの属性 (MobileRequestError)

アプリケーションのエラーの主な原因として、リクエストの失敗があげられます。New Relic Mobile は、New Relic Insights にイベントとして、失敗した全リクエストを保存しています。クラッシュ時と同じように、エラーを様々な角度から分析することができます。

この機能を利用できるかどうかは、サブスクリプションレベルに依ります。

MobileRequestError クエリの例

Insights で作成する一般的なクエリを以下で紹介します。Insight で独自の NRQL クエリを作成するには、MobileRequestError 属性を使用します。MobileRequest 属性をクエリで利用するには、Android エージェント 5.14.0 以上、もしくはiOS エージェント 5.14.0 以上が必要となります。

HTTP エラー
最もエラーを引き起こしているクエリはどれか?

SELECT count(*) FROM MobileRequestError where errorType = 'HTTPError' FACET requestUrl
ネットワークの失敗
アプリで最もよく起こるネットワーク障害は何か?

SELECT count(*) FROM MobileRequestError where errorType = 'NetworkFailure' facet networkError
リクエストのドメイン別のエラー率
障害やエラーが発生しやすいドメインはどれか?

SELECT percentage(count(*), where errorType = 'NetworkFailure' OR errorType = 'HTTPError' and networkError not like 'Cancelled') as 'Error Rate %', filter(count(*), where networkError not like 'Cancelled') as '# of Requests', filter(count(*), where errorType='NetworkFailure' OR errorType='HTTPError' and networkError not like 'Cancelled' as '# of Errors') FROM MobileRequestError, MobileRequest facet requestDomain
ビジネスに致命的な API のエラー率
ビジネスに最も重要な API におけるモバイルアプリからのエラー率は?

SELECT percentage(count(*), where errorType = 'NetworkFailure' OR errorType = 'HTTPError' and networkError not like 'Cancelled') as 'Error Rate %', filter(count(*), where networkError not like 'Cancelled') as '# of Requests', filter(count(*), where errorType='NetworkFailure' OR errorType='HTTPError' and networkError not like 'Cancelled' as '# of Errors') FROM MobileRequestError, MobileRequest facet requestPath where requestPath = '{MY_API_PATH}'
エラー率: 影響を受けたユーザーの割合
合計ユーザー数と比較して、エラーを経験したユーザーの割合は?

SELECT filter(uniqueCount(MobileRequestError.uuid), WHERE errorType = 'HTTPError') / uniqueCount(Mobile.uuid) * 100 as '% Users Impacted by Errors' FROM MobileRequestError, Mobile COMPARE WITH 7 days AGO
バージョン別のエラー数
最もエラーを起こしているアプリのバージョンは?

SELECT count(*) FROM MobileRequestError FACET appVersion
(by UUID 別) ユニークデバイス数
アプリで最も問題のある(UUID 別の)ユニークなデバイス数は?

SELECT count(*), latest(device), latest(carrier), latest(asnOwner), latest(countryCode) FROM MobileRequestError where networkError not like 'Cancelled' FACET deviceUuid  limit 100 SINCE 1 days ago
時系列における HTTP エラー数
(ドメイン別)の HTTP エラー数の推移は?

SELECT count(*) FROM MobileRequestError where errorType = 'HTTPError' FACET requestDomain timeseries

MobileRequestError 属性

以下の定義は、Insights の各 MobileRequestError イベントで表示されうる全データです。

デフォルトでは、iOS/Android の両方において以下のモバイル用属性は、5.11.0 以降のエージェントバージョンで生成された MobileRequestError でのみ使用できます。

  • newRelicVersion
  • uuid
  • sessionDuration timeSinceLoad osMajorVersion platform memUsageMb sessionId userId

MobileRequestError に 5.11.0 以上のエージェントから生成されたものでない場合、カスタム属性やカスタムイベントが表示されないことがあります。

属性 説明
asn (long) エラーが発生したネットワークを所有している ISP の ASN 番号。
asnOwner (string) エラーが発生したネットワークを所有する ISP の名前。
bytesReceived (long) オプション: アプリが requestUrl からレスポンスを受信した場合は、そのレスポンスのサイズ。単位:バイト。
bytesSent (long) オプション: アプリが requestUrl にリクエストを送信した場合は、そのリクエスト。単位:バイト。
connectionType (string) デバイスが利用した接続タイプ(2G、3Gなど)。
deviceSize (string) デバイスのディスプレイサイズ。small、normal、large、xlarge。
deviceType (string) モデル名: iPhone 6S、iPad Pro 等
deviceUuid (string) デバイスの UUID
errorType (string) HTTPError もしくは NetworkFailure。エラーがホストへのリクエストが失敗した結果か、セルラーネットワーク上の障害であるかによって異なります。
networkError (string) networkErrorCode
に関連付けられたエラーメッセージ。
networkErrorCode (long) エラーがネットワークエラーの場合は、iOS のネットワークエラーコード。Android アプリの場合、マッピングされた値。
platform (string) アプリがビルドされたプラットフォーム: Native、Unity、Xamarin
platformVersion (string) プラットフォームのバージョン
requestDomain (string) エラーが発生した際のアクセス先のドメイン
requestMethod (string) エラーが発生した際の REST メソッド (GET, PUT, POST, 等)
requestPath (string) エラーが発生した際のアクセス先のパス。
requestUrl (string) エラーが発生した際のアクセス先の URL。
responseTime (double) オプション: レスポンスが、requestDomain から送られてきた場合、リクエストとレスポンスとの間時間。単位: 小数点付き秒。
statusCode (long) エラーが HTTPError の場合、New Relic はエラーの statusCode を記録しています。statusCode でグループ化したり、気になるステータスコードで問い合わせを行うことができます。

関連情報

関連する情報は以下のとおりです。