iOS SDK APIを使用して、 カスタムデータを追加する 。例えば、以下のようになります。
- 自分のコードをインストゥルメント化する。
- モバイルアプリのイベントからインタラクショントレースを開始、停止することができます。
- カスタムメトリクスの記録
- カスタム属性とイベントを送信する
- 自動的にサポートされていないライブラリからのトラックネットワーキング
- Objective-C または Swift でカスタム識別子の値を設定し、ユーザーセッションと解析イベントや属性を関連付けます(iOS SDK バージョン5.9.0以上 )。
注意
トレースは大幅に最適化されていますが、パフォーマンスのオーバーヘッドが発生します。何百回も呼び出されることが予想される計測メソッドは避けてください。
SDKをインストールします
one.newrelic.com > Add more dataに移動し、iOS の手順に従って、アプリに最新の iOS SDK がインストルメント化されていることを確認してください。
このドキュメントには、iOS SDKのインスツルメンテーション要件が記載されています。
カスタム属性とイベントに使用できるメソッドの詳細については、 iOSSDKAPIリファレンスを参照してください。次の機能フラグを構成することもできます。
- Objective-C
- 迅速
自動的にインストルメント化されたクラスとメソッド
以下のメソッド(リストアップされたクラスとそのサブクラス)は、New Relic によってすでにインスツルメンテーションされています。これらをトレースするために、カスタムインストルメンテーションを追加する必要はありません。
クラス | New Relicで自動的に計測されるメソッド |
---|---|
|
|
|
|
|
|
|
|
エージェントは、様々な手法のパフォーマンスをサマリーメトリクスに集約し、 インタラクション ページ に表示します。サマリーカテゴリーには以下のものがあります。
View loading
UI layout
Database
Images
JSON
Network
Objective-Cコードのインストゥルメント化
インタラクションコードの内訳とタイムラインに独自のObjective-Cコードを表示するには、メソッドの最初に_START
呼び出しを追加し、メソッドの最後に_STOP
呼び出しを追加します。
重要
_START
ごとに常に_STOP
を含め、特定のメソッドにこれらのコマンドのセットを1つだけ含めます。トレースシステムはクラスとメソッド名を自動的に取得し、メソッドのパフォーマンスメトリックをNewRelicに報告します。
- (void)myMethod{ NR_TRACE_METHOD_START(0);
// … existing code
NR_TRACE_METHOD_STOP;}
ARCを使用していない場合は、メモリリークを回避するために、このバージョンの_STOP
マクロを使用してください。
NR_NONARC_TRACE_METHOD_STOP;
メソッドのパフォーマンスを 概要 ページで、 NRTraceType
列挙値の 1 つを_START
マクロに渡します。例えば:
NR_TRACE_METHOD_START(NRTraceTypeDatabase);
Objective-C:カスタム属性とイベントの報告
NewRelic オブジェクトのメソッドを使用して、 カスタムアトリビュートやイベントを報告します 。Objective-C でカスタムアトリビュートとイベントに使用できるメソッドの詳細については、 iOS SDK API リファレンス を参照してください。
BOOL
の結果を返すメソッドは、成功した場合はYES
を返し、操作が完了しなかった場合はNO
を返します。これらのメソッドは、New ReliciOSSDKのバージョン5.0.0以降で使用できます。
SDKは、一度に最大128のユーザー定義のカスタム属性を保存できます。 128を超える属性を保存しようとすると、SDKはNO
を返します。
カスタム属性名は必要な最も単純な形式を使用する必要があり、NewRelicはスペースを含まない単一の単語属性を推奨します。属性フレーズはキャメルケースでフォーマットできるため、 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 traceHeaders:(NSDictionary<NSString*,NSString*>* _Nullable)traceHeaders andParams:(NSDictionary *)params];
パラメータは以下の通りです。
パラメータ | 説明 |
---|---|
| リクエストのURL |
| リクエストのメソッドタイプ(例:POST、GETなど)。 |
| ネットワークリクエストのタイミングをとった |
| 利用可能な場合は、HTTPレスポンスヘッダを含む辞書 |
| レスポンスステータスコード
|
| リクエストボディのサイズ |
| レスポンスのサイズBody |
| エージェントがサーバーエラーを記録した場合に取り込まれるレスポンスボディデータ params |
| 分散トレース用に生成されたヘッダー。Distributed Tracing を使用しない場合、これは nil の可能性があります。 |
| HTTPトランザクションがエラーの場合、HTTPエラーメトリックに含まれる追加パラメータ |
ソケットやオペレーティングシステムのエラーにより が失敗するリクエストには、この方法を使用してください。
[NewRelic noticeNetworkFailureForURL:(NSURL *)url httpMethod:(NSString*)httpMethod withTimer:(NRTimer *)timer andFailureCode:(NSInteger)iOSFailureCode];
パラメータは以下の通りです。
パラメータ | 説明 |
---|---|
| リクエストのURL |
| リクエストのメソッドタイプ(例:POST、GETなど)。 |
| ネットワークリクエストのタイミングをとった |
| 故障コード 失敗コードは |
あなたのSwiftコードを計る
自分のSwiftコードがインタラクションのコードブレークダウンやタイムラインに表示されるように。
- メソッドの先頭に
startTracingMethod()
呼び出しを追加します。 - 最後に
endTracingMethodWithTimer()
呼び出しを追加します。 startTracingMethod()
参照ごとに常にendTracingMethodWithTimer()
呼び出しを含めます。- これらのコマンドは、1つのメソッドに1セットだけ含まれます。
func myMethod(){ let timer = NRTimer(); NewRelic.startTracingMethod(#selector(MyClass.myMethod), object: self, timer: timer, category: NRTraceTypeNone) // … existing code NewRelic.endTracingMethodWithTimer(timer) }
メソッドのパフォーマンスを 概要 ページで、 NRTraceType
列挙値の 1 つをstartTracingMethod()
マクロに渡します。例えば:
NewRelic.startTracingMethod(#selector(MyClass.myMethod), object: self, timer: timer, category: NRTraceTypeDatabase)
Swiftではカスタム属性とイベントの報告
NewRelic オブジェクトのメソッドを使用して、 カスタムアトリビュートとイベントを報告します 。Swiftでカスタムアトリビュートとイベントのために利用可能なメソッドの詳細については、 iOS SDK APIリファレンス を参照してください。
BOOL
の結果を返すメソッドは、成功した場合はYES
を返し、操作が完了しなかった場合はNO
を返します。これらのメソッドは、New ReliciOSSDKのバージョン5.0.0以降で使用できます。
SDKは、一度に最大128のユーザー定義のカスタム属性を保存できます。 128を超える属性を保存しようとすると、SDKはNO
を返します。
カスタム属性名は必要な最も単純な形式を使用する必要があり、NewRelicはスペースを含まない単一の単語属性を推奨します。属性フレーズはキャメルケースでフォーマットできるため、 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!, traceHeaders: [String: String]?, andParams: [NSObject : AnyObject]!)
パラメータは以下の通りです。
パラメータ | 説明 |
---|---|
| リクエストのURL |
| リクエストのメソッドタイプ(例:POST、GETなど)。 |
| ネットワークリクエストのタイミングをとった |
| 利用可能な場合は、HTTPレスポンスヘッダを含む辞書 |
| レスポンスステータスコード
|
| リクエストボディのサイズ |
| レスポンスのサイズBody |
| エージェントがServer error paramsを記録した場合に取得されるレスポンスボディデータ |
| 分散トレース用に生成されたヘッダー。Distributed Tracing を使用しない場合、これは nil の可能性があります。 |
| HTTPトランザクションがエラーの場合、HTTPエラーメトリックに含まれる追加パラメータ |
ソケットやオペレーティングシステムのエラーにより が失敗するリクエストには、この方法を使用してください。
NewRelic.noticeNetworkFailureForURL(url: NSURL!, httpMethod: NSString!, withTimer: NRTimer!, andFailureCode: Int)
パラメータは以下の通りです。
パラメータ | 説明 |
---|---|
| リクエストのURL |
| リクエストのメソッドタイプ(例:POST、GETなど)。 |
| ネットワークリクエストのタイミングをとった |
| 故障コード 失敗コードは |