iOS SDK APIを使用して、 カスタムデータを追加する 。例えば、以下のようになります。
- 自分のコードをインストゥルメント化する。
- モバイルアプリのイベントからインタラクショントレースを開始、停止することができます。
- カスタムメトリクスの記録
- カスタム属性やイベントをInsightsに送信。
- 自動的にサポートされていないライブラリからのトラックネットワーキング
- Objective-C または Swift でカスタム識別子の値を設定し、ユーザーセッションと解析イベントや属性を関連付けます(iOS SDK バージョン5.9.0以上 )。
注意
トレースは高度に最適化されていますが、パフォーマンスのオーバーヘッドが発生します。何百回も呼び出されることが予想されるメソッドのインスツルメンテーションは避けてください。
SDKのインストール
one.newrelic.com > Add more data にアクセスし、iOS用の指示に従って、アプリが最新のiOS SDKでインストルメント化されていることを確認してください。
このドキュメントには、iOS SDKのインスツルメンテーション要件が記載されています。
カスタム属性や New Relic Insights に送ることができるイベントで利用可能なメソッドの詳細については、 iOS SDK API リファレンス を参照してください。また、 フィーチャーフラグ を設定することもできます。
- Objective-C
- Swift
自動的にインストルメント化されたクラスとメソッド
以下のメソッド(リストアップされたクラスとそのサブクラス)は、New Relic によってすでにインスツルメンテーションされています。これらをトレースするために、カスタムインストルメンテーションを追加する必要はありません。
クラス | New Relicで自動的に計測されるメソッド |
---|---|
|
|
|
|
|
|
|
|
エージェントは、様々な手法のパフォーマンスをサマリーメトリクスに集約し、 インタラクション ページ に表示します。サマリーカテゴリーには以下のものがあります。
ローディングを見る
UIレイアウト
データベース
イメージ
JSON
ネットワーク
Objective-Cコードのインストゥルメント化
自分のObjective-Cコードをインタラクションのコードブレークダウンやタイムラインに表示させるには、 _START
をメソッドの先頭に、 _STOP
をメソッドの最後に追加します。
重要
_START
のたびに _STOP
を必ず入れ、1つのメソッドにはこれらのコマンドのセットを1つだけ入れます。トレースシステムは自動的にクラス名とメソッド名を拾い、メソッドのパフォーマンスメトリクスをNew Relicに報告します。
- (void)myMethod{ NR_TRACE_METHOD_START(0);
// … existing code
NR_TRACE_METHOD_STOP;}
ARCを使用していない場合は、このバージョンの _STOP
マクロを使用して、メモリリークを回避してください。
NR_NONARC_TRACE_METHOD_STOP;
APM Overview ページのサマリーデータに自分のメソッドのパフォーマンスを含めたい場合は、 NRTraceType
enum の値の1つを _START
マクロに渡します。
NR_TRACE_METHOD_START(NRTraceTypeDatabase);
Objective-C:カスタム属性とイベントの報告
NewRelic オブジェクトのメソッドを使用して、 カスタムアトリビュートやイベントを報告します 。Objective-C でカスタムアトリビュートとイベントに使用できるメソッドの詳細については、 iOS SDK API リファレンス を参照してください。
BOOL
結果を返すメソッドは、成功した場合は YES
を、操作が完了しなかった場合は NO
を返します。これらのメソッドは、New Relic iOS SDK のバージョン 5.0.0 以降で利用可能です。
SDKは、一度に128個までのユーザー定義の カスタムアトリビュート を保存することができます。128を超えるアトリビュートを保存しようとすると、SDKは NO
を返します。
カスタムアトリビュートの名前は必要に応じて最もシンプルなフォーマットを使用し、New Relic ではスペースを含まないシングルワードのアトリビュートを推奨しています。属性 フレーズ はキャメルケースでフォーマットすることができますので、 My Custom Attribute
は myCustomAttribute
と指定するのが良いでしょう。カスタムメトリクスと同様です。
/ ] という文字の使用は避けてください。[ | *
] 名前をつけるときには、このようにしてください。- マルチバイト文字は避けてください。
Objective-C:カスタムネットワークリクエストの追跡
トランザクショナルネットワークのリクエストを、HTTPリクエストと同じような言葉で表現できれば、それを追跡することができます。変わりやすいパスやホスト名を含まない、整形されたURLを使用してください。
complete のリクエストには、この方法を使ってください。
[NewRelic noticeNetworkRequestForURL:(NSURL*)url httpMethod:(NSString*)httpMethod withTimer:(NRTimer *)timer responseHeaders:(NSDictionary *)headers statusCode:(NSInteger)httpStatusCode bytesSent:(NSUInteger)bytesSent bytesReceived:(NSUInteger)bytesReceived responseData:(NSData *)responseData andParams:(NSDictionary *)params];
パラメータは以下の通りです。
パラメーター | 説明 |
---|---|
| リクエストのURL |
| リクエストのメソッドタイプ(例:POST、GETなど)。 |
| ネットワークリクエストのタイミングを計った |
| 利用可能な場合は、HTTPレスポンスヘッダを含む辞書 |
| レスポンスステータスコード
|
| リクエストボディのサイズ |
| レスポンスのサイズBody |
| エージェントがサーバーエラーを記録した場合に取り込まれるレスポンスボディデータ params |
| HTTPトランザクションがエラーの場合、HTTPエラーメトリックに含まれる追加パラメータ |
ソケットやオペレーティングシステムのエラーにより が失敗するリクエストには、この方法を使用してください。
[NewRelic noticeNetworkFailureForURL:(NSURL *)url httpMethod:(NSString*)httpMethod withTimer:(NRTimer *)timer andFailureCode:(NSInteger)iOSFailureCode];
パラメータは以下の通りです。
パラメーター | 説明 |
---|---|
| リクエストのURL |
| リクエストのメソッドタイプ(例:POST、GETなど)。 |
| ネットワークリクエストのタイミングを計った |
| 故障コード 失敗コードは |
あなたのSwiftコードを計る
自分のSwiftコードがインタラクションのコードブレークダウンやタイムラインに表示されるように。
startTracingMethod()
呼び出しをメソッドの先頭に追加します。- その最後に
endTracingMethodWithTimer()
呼び出しを追加します。 - 常に
endTracingMethodWithTimer()
の呼び出しを、startTracingMethod()
の参照ごとに行います。 - これらのコマンドは、1つのメソッドに1セットだけ含まれます。
func myMethod(){ let timer = NRTimer(); NewRelic.startTracingMethod(#selector(MyClass.myMethod), object: self, timer: timer, category: NRTraceTypeNone) // … existing code NewRelic.endTracingMethodWithTimer(timer) }
メソッドのパフォーマンスをAPM Overview ページのサマリーデータに含めたい場合は、 NRTraceType
enumの値の1つを startTracingMethod()
マクロに渡します(例)。
NewRelic.startTracingMethod(#selector(MyClass.myMethod), object: self, timer: timer, category: NRTraceTypeDatabase)
Swiftではカスタム属性とイベントの報告
NewRelic オブジェクトのメソッドを使用して、 カスタムアトリビュートとイベントを報告します 。Swiftでカスタムアトリビュートとイベントのために利用可能なメソッドの詳細については、 iOS SDK APIリファレンス を参照してください。BOOL
結果を返すメソッドは、成功した場合は YES
を、操作が完了しなかった場合は NO
を返します。これらのメソッドは、New Relic iOS SDK のバージョン 5.0.0 以降で利用可能です。SDKは、一度に128個までのユーザー定義の カスタムアトリビュート を保存することができます。128を超えるアトリビュートを保存しようとすると、SDKは NO
を返します。カスタムアトリビュートの名前は必要に応じて最もシンプルなフォーマットを使用し、New Relic ではスペースを含まないシングルワードのアトリビュートを推奨しています。属性 フレーズ はキャメルケースでフォーマットすることができますので、 My Custom Attribute
は myCustomAttribute
と指定するのが良いでしょう。カスタムメトリクスと同様です。
/ ] という文字の使用は避けてください。[ | *
] 名前をつけるときには、このようにしてください。- マルチバイト文字は避けてください。
Swift。カスタムネットワークリクエストの追跡
トランザクショナルネットワークのリクエストを、HTTPリクエストと同じような言葉で表現できれば、それを追跡することができます。変わりやすいパスやホスト名を含まない、整形されたURLを使用してください。complete のリクエストには、この方法を使ってください。
NewRelic.noticeNetworkRequestForURL(url: NSURL!, httpMethod: String!, withTimer: NRTimer!, responseHeaders:[NSObject : AnyObject]!, statusCode: Int, bytesSent: UInt, bytesReceived: UInt, responseData: NSData!, andParams: [NSObject : AnyObject]!)
パラメータは以下の通りです。
パラメーター | 説明 |
---|---|
| リクエストのURL |
| リクエストのメソッドタイプ(例:POST、GETなど)。 |
| ネットワークリクエストのタイミングを計った |
| 利用可能な場合は、HTTPレスポンスヘッダを含む辞書 |
| レスポンスステータスコード
|
| リクエストボディのサイズ |
| レスポンスのサイズBody |
| エージェントがServer error paramsを記録した場合に取得されるレスポンスボディデータ |
| HTTPトランザクションがエラーの場合、HTTPエラーメトリックに含まれる追加パラメータ |
ソケットやオペレーティングシステムのエラーにより が失敗するリクエストには、この方法を使用してください。
NewRelic.noticeNetworkFailureForURL(url: NSURL!, httpMethod: NSString!, withTimer: NRTimer!, andFailureCode: Int)
パラメータは以下の通りです。
パラメーター | 説明 |
---|---|
| リクエストのURL |
| リクエストのメソッドタイプ(例:POST、GETなど)。 |
| ネットワークリクエストのタイミングを計った |
| 故障コード 失敗コードは |