iOS API

Instana ( iOS、 API )は、 iOS アプリケーション内のカスタムコードに計測機能を組み込み、データを収集して Instana バックエンドに送信するための一連の関数です。

iOS エージェントのバージョン

iOS エージェントの詳細なリリース履歴およびバージョンごとの更新内容については、 GitHub の 「Changelog 」ファイルをご覧ください。

Instana iOS エージェント API

InstanaiOS エージェントは、クラ Instana スメソッドを通じて起動できます。

Instana iOS エージェントの設定

セットアップ関数を呼び出すことで、 InstanadidFinishLaunchingWithOptionsiOS エージェントを早期に初期化します。 Instana の起動を遅らせないでください。 アプリが起動したら、すぐにセットアップを呼び出してください。 Instana の遅延は、フラグ Instana.collectionEnabled を使用して有効または無効にできます。

static func setup(key: String, reportingURL: URL)
 

構成パラメーター

次の表は、設定パラメータの概要を示しています:

パラメーター 説明
key ( String ) Instana のモニタリング構成キー。
reportingURL ( URL ) URL は、監視データが送信される Instana インスタンスを指しています。
httpCaptureConfig ( HTTPCaptureConfig 、任意) デフォルトでは、 HTTP のリクエストとレスポンスは自動的にキャプチャされます。 自動監視を無効にするには、このパラメータを に設定 manual するか、 HTTPautomaticAndManual のキャプチャ設定と組み合わせて両方のモードを使用してください。 HTTP のセッション監視を無効にするには、次のように指定します none
collectionEnabled ( Bool 、任意) デフォルトでは、セットアップによってデータ収集がオンになります。 Instana を設定する際、データ収集を無効にするには、セットアップでこの false パラメータを に設定してください。 このパラメーターは、エージェントがデータを収集する前にユーザーの同意が必要なシナリオで役立ちます。 デフォルト値はtrueです。
enableCrashReporting ( Bool 、任意) デフォルトでは、セットアップにおいてクラッシュレポート機能は無効になっています。 このプロパティを使用することで、後からクラッシュ報告機能を有効にすることができ、アプリが Instana のクラッシュデータの収集を開始できるようになります。 このプロパティーは、エージェントがクラッシュ・データを収集する前に明示的なユーザー同意が必要なシナリオで最も役立ちます。 デフォルト値は falseです。
slowSendInterval ( Double 、任意)

この機能は非推奨です。

このパラメータに有効な正の秒数(2~3600秒の範囲)を指定することで、ビーコン送信に失敗した際の低速送信モード機能を有効にします。 デフォルト値は 0.0です。これは、低速送信モードが無効になっていることを意味します。

usiRefreshTimeIntervalInHrs ( Double 、任意) このパラメータは、( usiuserSessionIdentifier ) の更新頻度を設定します。 値は時間単位で指定する必要があります。 デフォルト値は -1.0 であり、これはユーザーセッションIDが更新されないことを意味します。 以下のパラメータ値は、 usiの状態を示します: - 負の数:この値は、がデフォルトの usi 動作を維持し、更新されないことを示します。 - 正の数:この値は、が指定された時間間隔で更新 usi されることを示します。 - 0:この値は、 usi が Instana バックエンドに送信されないため、識別子が無効化されることを示します。
autoCaptureScreenNames ( Bool 、任意) (パブリックプレビュー) このパラメータを に設定すると true、スクリーンネームが自動的に取得されるようになります。 直接または間接的に UIViewController をスーパークラスとするビューコントローラーは、自動キャプチャの対象となります。 UIKit では、`viewController` または `viewController accessibilityLabelnavigationItem.title ` が設定されているビューコントローラーは自動的にキャプチャされます。 ビュー名は ( accessibilityLabel または navigationItem.title) @( ViewControllerClassName ) として設定されています。 どちらも設定されていない場合、ビュー名は @( ViewControllerClassName ) となります。 SwiftUI, の場合、`set` navigationTitle が指定されたビューは自動的にキャプチャされますが、そうでない場合は無視されます。 デフォルト値はfalseです。
debugAllScreenNames ( Bool 、任意) (公開プレビュー) このパラメーターは autoCaptureScreenNamesをデバッグします。 が に設定され true 、かつ trueautoCaptureScreenNamesdebugAllScreenNames 設定されている場合、すべてのビューコントローラーがキャプチャされます。 が に設定されている autoCaptureScreenNamesfalse 場合、 debugAllScreenNames は無視されます。 本番環境では、この debugAllScreenNamesfalse パラメータを に設定する必要があります。 デフォルト値はfalseです。
queryTrackedDomainList ( regex 、任意) デフォルトでは、 iOS エージェントは、すべてのパラメータを含む完全な URL を収集します。 この設定を使用すると、指定された正規表現のリストに一致するURLのパラメータのみを収集するようにエージェントを設定できます。 提供された正規表現のリストに基づき、 iOS エージェントは次のようにURLを追跡します。 - URL がリストのエントリと一致する場合、すべてのパラメータを含む URL の全体が収集されます。 - URL がリストのエントリと一致しない場合、クエリパラメータおよび URL のフラグメントは、 Instana バックエンドに送信されません。 - 提供されたリストが空の場合、デフォルトの動作が適用され、パラメータを含む URL の全体が追跡されます。
rateLimits ( RateLimits 、任意) このパラメータを使用すると、特定の時間間隔内に送信できるビーコンの数を制限するように設定できます。 利用可能なオプションは、DEFAULT_LIMITS、MID_LIMITS、MAX_LIMITSの3つです。 デフォルトでは、DEFAULT_LIMITS が選択されています。 DEFAULT_LIMITS : - 5分あたり500ビーコン - 10秒あたり20 MID_LIMITS ビーコン : - 5分あたり1000ビーコン - 10秒あたり40 MAX_LIMITS ビーコン : - 5分あたり2500ビーコン - 10秒あたり100ビーコン
dropBeaconReporting ( Bool 、任意) このパラメータを有効にすると、ドロップされたビーコンの報告が可能になります。 ビーコンの数がレート制限に達した場合、新しいビーコンは Instana サーバーに送信される代わりに破棄されます。 このパラメータが に設定されている true場合、ドロップされたビーコンは内部で追跡され、ビーコンの数がレート制限を超えなくなった時点で、ビーコンレポートが Instana のバックエンドに送信されます。 デフォルト値はfalseです。
trustDeviceTiming ( Boolean 、任意) このオプションを有効にすると、各ビーコンには、 Instana バックエンドに対してそのビーコンの作成タイムスタンプを信頼するよう指示するフラグが含まれます。 デフォルトでは、ビーコンが作成から30分以上経過して受信された場合、バックエンドは作成時刻をサーバーの受信時刻で上書きします。 この設定のデフォルト値は false です。
enableW3CHeaders ( Boolean 、任意) このオプションを有効にすると、 iOS エージェントは、監視対象の API 呼び出しに および tracestate ヘッダー traceparent を含めます。 これらのヘッダーを使用すると、バックエンドに Instana エージェントが導入されていなくても、バックエンドの相関分析が可能になります。 そのような場合は、 バックエンドのトレース詳細をInstana バックエンドにエクスポートするために、互換性のあるモニタリングツール( OpenTelemetry など)を使用する必要があります。 このオプションが無効になっている場合、 Instana エージェントがバックエンドも監視しているときは、バックエンドの相関分析が可能になります。 デフォルトの設定は「偽」です。
perfConfig ( InstanaPerformanceConfig 、任意) このパラメータは、アプリケーションのパフォーマンス監視を設定します。 パフォーマンス設定パラメータについては、 表2 を参照してください。
timeoutInterval (Double、オプション) このパラメータは、ビーコンフラッシュのネットワーク呼び出しに対するタイムアウト間隔を設定します。 デフォルト値は 120.0 で、これは2分を意味します。 このパラメータの最小値は 60.0 です。

パフォーマンス設定パラメータ

次の表は、パフォーマンス設定パラメータの概要を示しています

パラメーター 説明
enableAppStartTimeReport ( Bool 、任意) このパラメータを有効にすると、コールドスタート時間やウォームスタート時間などのアプリケーションの起動時刻がレポートされます。 * コールドスタート時間 : iOS app がバックグラウンドからではなく、完全にゼロから起動する際に要する時間。 測定はダイナミックライブラリの初期化後に開始され、アプリケーションのUIが操作可能になった時点で終了します。 * ウォームスタート時間 :完全に終了しておらず、バックグラウンドで実行されているアプリを起動するまでに要した時間。 起動時間はミリ秒単位で測定されます。 デフォルト値はtrueです。
enableAnrReport ( Bool 、任意) このパラメータを有効にすると、アプリケーションが応答しなくなった場合(application not respond)のレポートが生成されます。デフォルト値は です false
anrThreshold ( Double 、任意) このパラメータは、アプリケーションが応答していないとみなされるまでの時間を秒単位で指定します(application not respond)。このパラメータは、 が に設定されている enableAnrReporttrue 場合にのみ適用されます。 デフォルト値は3.0です。
enableLowMemoryReport ( Bool 、任意) このパラメータを有効にすると、メモリ不足に関する通知が表示されるようになります。 デフォルト値は falseです。

import InstanaAgent

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
    Instana.setup(key: "<Your Instana Key>", reportingURL: URL(string: "<Your Instana URL>")!)
    ....
    return true
}
 

以下の例に、 HTTP の手動キャプチャ設定を示します。 デフォルト設定を変更するには、以下のコマンドを実行します。

let options = InstanaSetupOptions(httpCaptureConfig: .manual)
Instana.setup(key: <Your Key>, reportingURL: <Your Instana URL>, options: options)
 

現行の構成

Instana クラス・オブジェクトには、現在の構成を取得するための以下のプロパティーが含まれています。

プロパティー 説明
key (String、オプション) Instana のモニタリング構成キー。
reportingURL (URL、オプション) URL は、監視データが送信される Instana インスタンスを指しています。

セッション ID

Instana の各エージェントインスタンスには一意のセッション識別子が割り当てられており、これをアプリ内で他の目的に利用することができます。

プロパティー 説明
sessionID (String、オプション) 現行セッションの ID。 このセッション ID は、セットアップ・プロセス中に作成されます。

自動 HTTP モニタリング

デフォルトでは、 HTTP のセッションは自動的に記録されます。 Instana iOS エージェントは、Foundation の NSURLProtocol を使用して、HTTP 要求および応答をモニターします。 NSURLProtocolを使用してすべての NSURLSession を自動的に監視するには、 NSURLSession でいくつかの方法をスワイズする必要があります。 HTTP の自動セッション監視を無効にするには、すべてのリクエストとレスポンスを手動でキャプチャする必要があります。

手動 HTTP モニタリング

HTTP のセッションを手動でキャプチャするには、 Instana を設定し、対応する関数を使用する必要があります httpCaptureConfig: .manual 。 HTTP のリクエストとレスポンスは、または URLRequest を使用して手動で URLキャプチャできます。

自動および手動 HTTP モニタリング

HTTP のセッションを自動または手動でキャプチャするには、. httpCaptureConfig: .automaticAndManual を使用して Instana を設定する必要があります。 自動インスツルメンテーションを使用するか、 HTTP のリクエストとレスポンスを手動でキャプチャすることができます。

取り込みの開始 (URLRequest)

HTTP のキャプチャを開始する関数。 URLRequest およびオプションのビュー名。 HTTPMarker オブジェクトが返されます。 このオブジェクトは、 HTTP レスポンスの結果を設定するために必要です。

static func startCapture(_ request: URLRequest?, viewName: String? = nil) -> HTTPMarker
 
構成パラメーター

次の表は、設定パラメータの概要を示しています:

パラメーター 説明
request (URLRequest) キャプチャーする URLRequest
viewName (String、オプション) この要求に関連して表示されるビューの名前。

戻り値: HTTP 応答の結果 (HTTP 状況コード、サイズ、エラー) を設定するための HTTP マーカー。

取り込みの開始 (URL)

この関数は、 HTTP メソッドおよび(オプションの)ビュー名に対して URL、 HTTP のキャプチャを開始します。 HTTPMarker オブジェクトが返されます。 このオブジェクトは、後で HTTP レスポンスの結果を設定するために必要になります。

static func startCapture(url: URL, method: String, viewName: String? = nil) -> HTTPMarker
 
構成パラメーター

次の表は、設定パラメータの概要を示しています:

パラメーター 説明
url (URL) URL で撮影する
method (String) 要求の HTTP メソッド
viewName (String、オプション) この要求に関連して表示されるビューの名前

戻り値: HTTP 応答の結果 (HTTP 状況コード、サイズ、エラー) を設定するための HTTP マーカー。

HTTP 応答サイズの設定

応答サイズが決定されたら、 HTTPMarker でこのメソッドを呼び出します。

func set(responseSize: Instana.Types.HTTPSize)
 
構成パラメーター

次の表は、設定パラメータの概要を示しています:

パラメーター 説明
responseSize (HTTPSize) headerBytesbodyBytes、および bodyBytesAfterDecodingを含む httpSize オブジェクト。
注: やを呼び出した後は HTTPMarker 、に対してメソッド finish を呼び出さない cancelようにしてください。

HTTP 応答サイズ

以下の初期化指定子を使用して HTTPMarker.Size を作成できます。

init(response: URLResponse, transactionMetrics: [URLSessionTaskTransactionMetrics]?)
 
構成パラメーター

次の表は、設定パラメータの概要を示しています:

パラメーター 説明
response (URLResponse) URLResponse オブジェクト
transactionMetrics ([URLSessionTaskTransactionMetrics]、オプション) URLSessionTaskTransactionMetrics を持つオプションの配列

サイズ値をパラメーターとして直接渡すことにより、 HTTPMarker.Size オブジェクトを作成することもできます。

HTTPMarker.Size(header: Instana.Types.Bytes, body: Instana.Types.Bytes, bodyAfterDecoding: Instana.Types.Bytes)
 

取り込みの終了 (URLResponse)

要求が URLResponse およびオプションの Errorで完了した後、 HTTPMarkerfinish を呼び出します。

func finish(response: URLResponse?, error: Error?)
 

取り込みの終了 (HTTPCaptureResult)

あるいは、 HTTPCaptureResult を使用してキャプチャーを終了することもできます。

let size = HTTPMarker.Size(header: 123, body: 1024, bodyAfterDecoding: 2048)
let result = HTTPCaptureResult(statusCode: statusCode, backendTracingID: "Instana-backend-tracing-id", responseSize: size, error: error)
marker.finish(result: result)
 

取り込みのキャンセル

完了前に要求が取り消された場合は、 HTTPMarker でこのメソッドを呼び出します。 cancelを呼び出すと、状態は「内部的に失敗」に設定され、 NSURLErrorCancelled 状況になります。

func cancel()
 

完全な手動 HTTP モニタリングの例 (URLResponse)

let marker = Instana.startCapture(request, viewName: "User: Details")
URLSession.shared.dataTask(with: request) { data, response, error in
    marker.finish(response: response, error: error)
}.resume()
 

また、次の例に示すように URLSessionDelegate 、 HTTP のレスポンスサイズを手動で設定することもできます(finishまたはcancelを呼び出す前)

func urlSession(_ session: URLSession, task: URLSessionTask, didFinishCollecting metrics: URLSessionTaskMetrics) {
    guard let response = task.response else { return }
    marker.set(responseSize: HTTPMarker.Size(response: response, transactionMetrics: metrics.transactionMetrics))
}
 

完全な手動 HTTP モニタリングの例 (URL)

let url = URL(string: "https://www.example.com/user/123/details")!
let marker = Instana.startCapture(url: url, method: "GET", viewName: "Home")
YourNetworkManager(url: url, method: "GET") { (statusCode, error) in
    let size = HTTPMarker.Size(header: 123, body: 1024, bodyAfterDecoding: 2048) // optionally
    let backendTracingID = "Instana-backend-tracing-id" // optionally
    let result = HTTPCaptureResult(statusCode: statusCode, backendTracingID: backendTracingID, responseSize: size, error: error)
    marker.finish(result: result)
}.resume()
 

ビュー

Instana は、アプリケーション・メトリックを論理ビューによってセグメント化することができます。 これを行うには、ユーザーが現在表示しているビューに関するヒントを追加する必要があります。 このビュー名は、setView(name: String)を使用して設定できます。 ビュー名は、別の名前で setView を再度呼び出すまで、すべてのモニター対象ビーコンに付加されます。 ビューの定義には、Class (つまり、 WebViewController) のような技術名や総称名を使用しないでください。 読み取り可能なビュー名を使用します。 例えば、 product detail pagepayment selectionなどです。 その結果、既存のコードと直接関係するページが少なくなります。 viewDidAppearでビュー名を設定することを検討してください。 ビュー名を設定することで、 Instana はページの読み込みだけでなく、ページ遷移も追跡できるようになります。

アプリケーションが状態を (例えば、アクティブから非アクティブまたはバックグラウンドに) 変更すると、ビュー名が自動的に更新されます。 アプリが非アクティブ状態(SMSを受信したとき) Inactive のビュー名は アプリケーションがフォアグラウンドを離れた後、これは Background に設定されます。

static func setView(name: String)
 

構成パラメーター

次の表は、設定パラメータの概要を示しています:

パラメーター 説明
name (String) ビューの名前

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    Instana.setView(name: "User: Details")
}
 

現在のビュー名を取得するには、クラス変数 viewNameを使用できます。 ビュー名の値は、アプリケーションの状態に応じて、Inactive または Background のいずれかになります。

プロパティー 説明
viewName (String、オプション) 現在のビュー名は、 setView(name:)を使用して設定されます。

ユーザーの識別

Instana に送信されるデータに、ユーザー固有の情報を任意で含めることができます。 この情報を使用して、以下のような追加機能をアンロックすることができます。

  • エラーの影響を受けるユーザーの数を計算する
  • 特定のユーザーのデータをフィルターに掛ける
  • ビューの変更または HTTP リクエストを発行したユーザーを特定する

デフォルトでは、Instana はユーザーが識別可能な情報をビーコンに関連付けません。 ユーザーが識別可能な情報をビーコンに関連付ける前に、それぞれのデータ保護法を確認する必要があります。 ユーザー ID を使用してユーザーを識別します。 Instana において、これは特定のメトリクスの計算にのみ使用される String 透過的なものです。 また、 userName および userEmail を使用して、より多くのフィルターにアクセスし、ユーザー情報を表示することもできます。

匿名ユーザーを処理するためにユーザー ID にアクセスできない場合は、代わりにセッション ID を使用することもできます。 セッション ID は、データをフィルタリングするためにユーザー ID ほど有用ではありませんが、影響を受けるユーザー・メトリックまたは固有のユーザー・メトリックを計算するための良い指標です。 認証済みユーザーと非認証ユーザーを明確に区別するために、 Anonymous などのユーザー名を設定することを検討してください。 セッション ID は、使用されているフレームワークまたはプラットフォームに応じて機密データになる可能性があります。 アクセス権を付与する可能性のあるデータを Instana に送信しないよう、セッションIDのハッシュ化を検討してください。

Instana にすでに送信されたデータは、事後的に更新することはできません。 アプリの起動プロセスにおいて、直ちにこの API を呼び出してください。

static func setUser(id: String, email: String?, name: String?)
 

構成パラメーター

次の表は、設定パラメータの概要を示しています:

パラメーター 説明
id (String) ユーザーの ID。
email (String、オプション) ユーザーの E メール・アドレス
name (String、オプション) ユーザーの名前

設定しない値には nil を渡すことができます。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
     Instana.setup(key: InstanaKey, reportingURL: InstanaURL)
     Instana.setUser(id: someID, email: "email@example.com", name: "John")
     return true
}
 

別の方法として、ユーザー・プロパティーを個別に設定することもできます。

ユーザー ID

ユーザー ID を設定します。

static func setUser(id: String)
 
構成パラメーター

次の表は、設定パラメータの概要を示しています:

パラメーター 説明
id (String) ユーザーの ID。

ユーザーの E メール・アドレス

ユーザーの E メール・アドレスを設定します。

static func setUser(email: String)
 
構成パラメーター

次の表は、設定パラメータの概要を示しています:

パラメーター 説明
email (String) ユーザーの E メール・アドレス

パラメーター

以下の表にパラメータの概要を示します:

パラメーター 説明
name (String) ユーザーの名前

メタデータ

メタデータ情報は、送信されたデータに添付されます。 メタデータを使用して、UI 構成値、設定、機能フラグ、または分析に役立つ可能性のある追加コンテキストを追跡することを検討してください。 アプリの起動プロセスにおいて、送信されるすべてのデータにキーまたは値を割り当てるよう、メタデータを設定してください。

static func setMeta(value: String, key: String)
 

パラメーター

以下の表にパラメータの概要を示します:

パラメーター 説明
value (String) メタデータとして追加するキーと値のペアの value
key (String) メタデータとして追加するキーと値のペアの key

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    Instana.setup(key: InstanaKey, reportingURL: InstanaURL)
    Instana.setMeta(value: "ReactNative", key: "Platform")
    Instana.setMeta(value: "DEBUG", key: "Environment")
    return true
}
 

モニター対象からの URLSession の除外

Instana iOS エージェントによる監視対象から URLSession 、カスタム項目を除外することができます。

static func ignore(_ session: URLSession)
 

構成パラメーター

次の表は、設定パラメータの概要を示しています:

パラメーター 説明
session (URLSession) モニターから除外される URLSession

モニター対象からの URL の除外

正規表現に一致するURLを除外することで、 Instana への送信を防ぐことができます。 この関数の活用例として、パスワードなどの機密データを含むすべての HTTP リクエストを除外することが挙げられます。

static func setIgnoreURLs(matching regex: [NSRegularExpression])
 

構成パラメーター

次の表は、設定パラメータの概要を示しています:

パラメーター 説明
regex ([NSRegularExpression]) 無視したい URL と一致する NSRegularExpression オブジェクトの配列。

let regex = try! NSRegularExpression(pattern: "/.*(&|\?)password=.*/i")
Instana.setIgnoreURLs(matching: [regex])
 

この例では、クエリにパスワードが含まれるすべてのURLが無視されます。

あるいは、以下の例のような完全な URL を無視することもできます。

Instana.setIgnore(urls: [URL(string: "https://www.example.com")!])
 

カスタム・イベントのレポート

カスタムイベントを使用すると、標準外のアクティビティ、重要なインタラクション、およびカスタムタイミングに関するレポートを Instana に送信できます。 特に、検出されなかったエラー (パンくずリスト) を分析したり、より多くのパフォーマンス・メトリックを追跡したりするのに役立ちます。

static func reportEvent(name: String, timestamp: Instana.Types.Milliseconds? = nil, duration: Instana.Types.Milliseconds? = nil, backendTracingID: String? = nil, error: Error? = nil, meta: [String: String]? = nil, viewName: String? = Instana.viewName)
 

構成パラメーター

次の表は、設定パラメータの概要を示しています:

パラメーター 説明
name (String) カスタム・ビーコンの送信の結果としてアプリで発生したイベントの種類を定義します。
timestamp (Int64、オプション) イベントが開始されたときのタイム・スタンプ (ミリ秒)。 タイム・スタンプを指定しない場合、現在時刻がタイム・スタンプとして使用されます。 タイム・スタンプを指定せずに期間を設定した場合、タイム・スタンプは現在時刻から期間を減算することによって計算されます。 (タイム・スタンプ = 現在時刻-期間)
duration (Int64、オプション) イベントの持続時間 (ミリ秒)。 デフォルト値は 0 です。
backendTracingID (String、オプション) このイベントのバックエンド・トレースを作成するための ID。
error (Error、オプション) より多くのコンテキストを提供するためのエラー・オブジェクト。
meta ([String: String]、オプション) キーと値のデータ。この単一のイベントについてのみ、 Instana にメタデータを送信するために使用できます。
viewName (String、オプション) 要求をグループ化するためのストリングをビューに渡すことができます。 nil を送信すると、 viewName は無視されます。 あるいは、パラメーター viewName を省略して、 setView(name: String)で設定した現在のビュー名を使用することもできます。
customMetric (Double、オプション) 小数点以下 4 桁までの精度のカスタム・メトリック・データ。 デフォルト値は、呼び出し元によって customMetric が設定されていないことを示す Double.nan ものです。 このメトリックには機密情報を含めないでください。

Instana.reportEvent(name: "Event-Name")
Instana.reportEvent(name: "Event-Name", viewName: "User: Details")
Instana.reportEvent(name: "Event-Name", timestamp: 1590149955086, duration: 124842, backendTracingID: "some-id", error: NSError(domain: "Some", code: -1, userInfo: nil), meta: ["Key": "Value"], viewName: "User: Details")
Instana.reportEvent(name: "Event-Name", customMetric: 1234.567)
 

収集を有効または無効にする

データ収集は、実行時にいつでも有効にすることができます。 これにより、データ収集の遅延開始 (例えば、ユーザーの同意後) が有効になります。

プロパティー 説明
collectionEnabled (Bool) データ収集を有効または無効にするためのフラグ

ロギングを有効にする

Instana iOS エージェントには、デバッグのためにロギングの機能があります。 Xcodeで INSTANA_DEBUG_LOGLEVEL 環境変数を追加します。 値として、以下のいずれかの値をログ・レベルとして渡す必要があります。

  • 0 = デバッグ情報、警告、およびエラー
  • 1 = 警告とエラー
  • 2 => エラーのみ

URL のクエリパラメータを非表示にする

収集された URL の照会パラメーターには、機密データが含まれている可能性があります。 したがって、 Instana iOS エージェントは、値を非表示にする必要があるクエリパラメータのキーに対して、正規表現パターンの指定をサポートしています。 編集された値はすべて <redacted>に置き換えられます。 情報の黒塗り処理は、 Instana エージェント内で実行され、その後 Instana に報告されます。 したがって、秘密情報は Instana に送信されず、処理されることはありません。 UI上で「Secrets」を分析したり、 Instana API を使用して取得したりすることはできません。

デフォルトでは、Instana iOS エージェントは、鍵の照会パラメーター値 (「password」、「key」、および「secret」) を自動的に編集するための 3 つの正規表現パターンのリストを使用して構成されています。 リダクションは、自動的にモニターされる要求とその関連ログにのみ適用されます。 手動でモニターされた要求は編集されません。

static func redactHTTPQuery(matching regex: [NSRegularExpression])
 

構成パラメーター

次の表は、設定パラメータの概要を示しています:

パラメーター 説明
regex ([NSRegularExpression]) 編集する値の鍵に一致する NSRegularExpression オブジェクトの配列。

let regex = try! NSRegularExpression(pattern: #"pass(word|wort)"#)
Instana.redactHTTPQuery(matching: [regex])
 

この例では、 HTTP パラメータのキー「password」または「passwort」の値は伏せられています。 キャプチャされた URL は収集され、次 https://example.com/accounts/?password=123&passwort=459 のように表示 https://example.com/accounts/?password=<redacted>&passwort=<redacted>されます。

注:Instana iOS のエージェントでは、パスパラメータ (/account/<account id>/status) やマトリックスパラメータ (/account;accountId=<account id>/status) をシークレットとして扱うことはできません。

HTTP のヘッダーフィールドを取得する

HTTP リクエストおよびレスポンスのヘッダーは、 iOS エージェントによって取得できます。 正規表現を使用して、iOS エージェントがキャプチャーする必要がある HTTP ヘッダー・フィールドの鍵を定義できます。

public static func setCaptureHeaders(matching regex: [NSRegularExpression])
 

構成パラメーター

次の表は、設定パラメータの概要を示しています:

パラメーター 説明
regex ([NSRegularExpression]) キャプチャしたい HTTP リクエストおよびレスポンスヘッダーのキーに対応するオブジェクト NSRegularExpression の配列。

let regex = try! NSRegularExpression(pattern: #"X-Key"#, options: [.caseInsensitive])
Instana.setCaptureHeaders(matching: [regex])
 

この例では、キーが X-Key または である X-KEYHTTP ヘッダーフィールドを示しています。

低速送信モード(バージョン 1.10.0 以降、非推奨)

オプション: 低速送信モード機能をオンにすることができます。

デフォルトでは、ビーコンの送信に失敗した場合、 Instana エージェントは送信が成功するまでビーコンの再送信を試みます。 一部のセルラー・ネットワークではうまく機能しません。 「低速送信モード」機能を有効にすると、ビーコンの送信間隔は、 パラメータ slowSendInterval に割り当てられた時間値に変更されます。 各送信試行は、バッチではなく、1 つのビーコンのみで構成されます (バッチでは最大 100 個のビーコン)。 Instana エージェントは、1つのビーコンが正常に送信されるまで、低速送信モードのままになります。

の有効な時間範囲は、 slowSendInterval 2~3600秒です。

import InstanaAgent
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
    let options = InstanaSetupOptions(slowSendInterval: 60.0)
    if !Instana.setup(key: InstanaKey, reportingURL: InstanaURL, options: options) {
        // Error handling here
    }
    ....
    return true
}
 

ユーザー・セッション ID

デフォルトでは、ユーザー・セッションが追跡されます。 この ID は、ランダムに生成された Universally Unique Identifier (UUID) です。 この ID は、アプリのインストール中は変更されません。 パラメータ usiRefreshTimeIntervalInHrs を使用して、ユーザーセッションIDの有効期限を設定できます。

以下のパラメーター値は、ユーザー・セッション ID の状況を示します。

  • 否定値:ユーザーセッションIDは、デフォルトで有効期限なしに設定されています。 この設定のデフォルト値は「 -1 」です。
  • 正数: 設定された時刻の後にユーザー・セッション ID がリフレッシュされます。つまり、新しい UUID が生成されて使用されます。
  • ゼロ: ユーザー・セッション ID は使用不可です。 この値は、 0.0で示されます。

import InstanaAgent
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
    let options = InstanaSetupOptions(usiRefreshTimeIntervalInHrs: 24.0)
    if !Instana.setup(key: InstanaKey, reportingURL: InstanaURL, options: options) {
        // Error handling here
    }
    ....
    return true
}
 

プライバシーマニフェストファイル

プライバシー・マニフェスト・ファイルは、 iOSAgent バージョン 1.8.0以降でサポートされています。 アプリケーションが Apple の要件に準拠している場合、この機能を使用するために追加の構成は必要ありません。