iOS API
Instana iOS API は、 iOS アプリケーションのカスタムコードでデータを取得し、Instana バックエンドに送信するための一連の関数です。
iOS エージェントバージョン
iOS エージェントの詳細なリリース履歴とバージョンごとの更新については、 GitHub の Changelog ファイルを参照してください。
Instana iOS エージェント API
Instana iOS エージェントは、 Instana クラスメソッドで起動できます。
Instana iOS エージェントのセットアップ
didFinishLaunchingWithOptions の早い段階で、setup 関数を呼び出して、Instana iOS エージェントを初期化する。 インスタナの開始を遅らせないでください。 アプリが起動したら、すぐにセットアップを呼び出してください。 インスタナのディレイは、 Instana.collectionEnabled フラグを使って有効にも無効にもできる。
static func setup(key: String, reportingURL: URL)
構成パラメーター
次の表は、コンフィギュレーション・パラメータの概要である:
| パラメーター | 説明 |
|---|---|
key ( String ) |
Instana のモニタリング構成キー。 |
reportingURL ( URL ) |
モニタリングデータの送信先であるインスタナインスタンスを指す URL。 |
httpCaptureConfig ( HTTPCaptureConfig 任意) |
デフォルトでは、 HTTP リクエストとレスポンスが自動的にキャプチャされる。 自動監視を無効にするには、このパラメータを manual に設定するか、 automaticAndManual HTTP キャプチャ設定で両方のモードを併用する。 HTTP セッション監視をオフにするには、 none. |
collectionEnabled ( Bool 任意) |
デフォルトでは、データ収集はセットアップとともにオンになっています。 Instanaをセットアップするが、データ収集を無視するには、セットアップでこのパラメータを false 。 このパラメータは、エージェントがデータを収集する前にユーザの同意が必要なシナリオに有用である。 デフォルト値はtrueです。 |
enableCrashReporting ( Bool 任意) |
デフォルトでは、クラッシュレポートはセットアップで無効になっています。 このプロパティを使用すると、クラッシュレポートを後で有効にすることができ、アプリがInstanaクラッシュデータの収集を開始できるようになります。 このプロパティは、エージェントがクラッシュデータを収集する前に明示的なユーザーの同意が必要なシナリオで最も有用である。 デフォルト値は falseです。 |
slowSendInterval ( Double 任意) |
このパラメータは、ビーコン送信失敗時の低速送信モード機能を有効にする。 デフォルト値は 0.0 で、これは低速送信モードが無効であることを意味する。 |
usiRefreshTimeIntervalInHrs ( Double 任意) |
このパラメータは、 usi ( userSessionIdentifier ) のリフレッシュ頻度を設定する。 時間単位で価値を提供する必要がある。 デフォルト値は -1.0、つまりユーザー・セッションIDは決してリフレッシュされない。 以下のパラメータ値は、 usi のステータスを示す:負数:この値は、 usi がデフォルトの動作を保持し、リフレッシュしないことを示す。 - 正の数:正の数:この値は、指定された時間間隔で usi が更新されることを示す。 - ゼロ: この値は、 usi が Instana バックエンドに送信されず、識別子が無効化されることを示します。 |
autoCaptureScreenNames ( Bool 任意) |
(公開プレビュー) このパラメータを true に設定すると、画面名の自動キャプチャが有効になります。 UIViewController をスーパークラスとするビューコントローラは、直接または間接的に自動キャプチャできます。 UIKit の場合、 accessibilityLabel または navigationItem.title が設定されているビューコントローラーは自動的にキャプチャされます。 ビュー名は( accessibilityLabel または navigationItem.title) @( ViewControllerClassName )として設定される。 どちらも設定されていない場合、ビュー名は@( ViewControllerClassName )となる。 SwiftUI, の場合、 navigationTitle が設定されたビューは自動的にキャプチャされるが、そうでない場合は無視される。 デフォルト値はfalseです。 |
debugAllScreenNames ( Bool 任意) |
(パブリックプレビュー) このパラメータは autoCaptureScreenNames をデバッグします。 debugAllScreenNames を true に設定し、 autoCaptureScreenNames も true に設定すると、すべてのビューコントローラーがキャプチャされる。 autoCaptureScreenNames が false に設定されている場合、 debugAllScreenNames は無視される。 本番環境では、 debugAllScreenNames パラメータを false に設定する必要がある。 デフォルト値はfalseです。 |
queryTrackedDomainList ( regex 任意) |
デフォルトでは、 iOS エージェントは、すべてのパラメータを含む完全な URL を収集する。 この設定を使用すると、指定した正規表現のリストに一致するURLのパラメータのみを収集するようにエージェントを設定できます。 提供された正規表現のリストに基づいて、 iOS エージェントは以下のように URL を追跡する: - URL がリストのエントリと一致する場合、すべてのパラメータを含む URL 全体が収集されます。 - URL がリストのエントリと一致しない場合、クエリパラメータと URL のフラグメントは Instana バックエンドに送信されません。 - 指定されたリストが空の場合、デフォルトの動作が適用され、パラメータを含む完全な URL が追跡されます。 |
rateLimits ( RateLimits 任意) |
このパラメータでは、特定の時間間隔内に送信できるビーコン数の制限をカスタマイズできます。 利用可能なオプションは3つある:DEFAULT_LIMITS、MID_LIMITS、MAX_LIMITSである。 DEFAULT_LIMITS : - 500ビーコン/5分 - 20ビーコン/10秒 MID_LIMITS : - 1000ビーコン/5分 - 40ビーコン/10秒 MAX_LIMITS : - 2500ビーコン/5分 - 100ビーコン/10秒 |
dropBeaconReporting ( Bool 任意) |
このパラメータは、ドロップされたビーコンの報告を有効にする。 ビーコンの数がレート制限に達すると、新しいビーコンはInstanaサーバーに送信されずにドロップされます。 このパラメータが true に設定されている場合、ドロップされたビーコンは内部で追跡され、ビーコンカウントがレート制限を超えなくなると、ビーコンレポートが Instana バックエンドに送信されます。 デフォルト値はfalseです。 |
trustDeviceTiming ( Boolean 任意) |
このオプションを有効にすると、各ビーコンには、ビーコン作成タイムスタンプを信頼するよう Instana バックエンドに指示するフラグが含まれます。 デフォルトでは、ビーコンが作成されてから30分以上経過してから受信された場合、バックエンドは作成時刻をサーバーの受信時刻で上書きする。 この設定のデフォルト値はfalseである。 |
enableW3CHeaders ( Boolean 任意) |
このオプションを有効にすると、 iOS エージェントは、監視対象の API 呼び出しに traceparent と tracestate ヘッダーを含めます。 これらのヘッダーは、バックエンドがInstanaエージェントでインスツルメンテーションされていなくても、バックエンドの相関を可能にします。 このような場合、 バックエンド トレースの詳細を Instana バックエンドにエクスポートするには、互換性のある監視ツール ( OpenTelemetry など) を使用する必要があります。 このオプションを無効にすると、Instana エージェントがバックエンドも監視している場合に、バックエンド相関が可能になります。 デフォルトの設定は「偽」です。 |
perfConfig ( InstanaPerformanceConfig 任意) |
このパラメータは、アプリケーションパフォーマンスの監視を設定する。 性能構成パラメータについては、 表2を参照のこと。 |
パフォーマンス構成パラメーター
次の表は、パフォーマンス構成パラメータの概要である
| パラメーター | 説明 |
|---|---|
enableAppStartTimeReport ( Bool 任意) |
このパラメータは、コールドスタート時間やウォームスタート時間など、アプリケーションの開始時間の報告を可能にする。 * コールドスタート時間 : iOS app、バックグラウンドからではなく、ゼロから起動した場合にかかる時間。 測定は、ダイナミック・ライブラリの初期化後に開始され、アプリケーションのUIがインタラクティブになった時点で終了する。 * ウォームスタート時間 :完全に終了しておらず、バックグラウンドで実行されているアプリの起動にかかった時間。 起動時間の単位はミリ秒。 デフォルト値はtrueです。 |
enableAnrReport ( Bool 任意) |
このパラメータは、アプリケーションが応答しなかった場合(application not respond)の報告を可能にする。デフォルト値は false である。 |
anrThreshold ( Double 任意) |
このパラメータは、アプリケーションが無応答(application not respond)と見なされるまでの時間を秒単位で指定する。このパラメータは enableAnrReport が true に設定されている場合にのみ適用される。 デフォルト値は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。 |
例
let key = Instana.key
let url = Instana.reportingURL
セッション ID
各 Instana エージェントインスタンスには一意のセッション識別子があり、アプリの他の目的に使用できます。
| プロパティー | 説明 |
|---|---|
sessionID (String、オプション) |
現行セッションの ID。 このセッションIDはセットアップ中に作成される。 |
例
let sessionID = Instana.sessionID
自動 HTTP モニタリング
デフォルトでは、 HTTP セッションが自動的にキャプチャされる。 Instana iOS エージェントは、Foundation の NSURLProtocol を使用して、HTTP 要求および応答をモニターします。 NSURLProtocol ですべての NSURLSession を自動的に観測するには、 NSURLSession で何らかの方法でスウィズリングする必要がある。 自動 HTTP セッション監視を停止するには、すべてのリクエストとレスポンスを手動でキャプチャする必要があります。
手動 HTTP モニタリング
HTTP セッションを手動でキャプチャするには、 httpCaptureConfig: .manual を使用して Instana をセットアップし、対応する機能を使用する必要があります。 URLRequest または URL を使って、 HTTP リクエストとレスポンスを手動でキャプチャできます。
自動および手動 HTTP モニタリング
HTTP セッションを自動または手動でキャプチャするには、 httpCaptureConfig: .automaticAndManual を使用して Instana をセットアップする必要があります。 自動インスツルメンテーションを使用するか、手動で HTTP リクエストとレスポンスをキャプチャすることができます。
取り込みの開始 (URLRequest)
URLRequest の HTTP キャプチャを開始する関数と、オプションのビュー名。 HTTPMarker オブジェクトが返される。 このオブジェクトは、 HTTP レスポンスの結果を設定するために必要である。
static func startCapture(_ request: URLRequest?, viewName: String? = nil) -> HTTPMarker
構成パラメーター
次の表は、コンフィギュレーション・パラメータの概要である:
| パラメーター | 説明 |
|---|---|
request (URLRequest) |
キャプチャするURLリクエスト |
viewName (String、オプション) |
このリクエストに関連する可視ビューの名前。 |
戻り値: HTTP 応答の結果 (HTTP 状況コード、サイズ、エラー) を設定するための HTTP マーカー。
取り込みの開始 (URL)
この関数は、 URL、 HTTP メソッド、およびオプションのビュー名について、 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) |
headerBytes、 bodyBytes、 bodyBytesAfterDecoding を含む httpSize オブジェクト。 |
finish または cancel を呼び出した後に、 HTTPMarker のメソッドを呼び出さないように注意してください。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 でリクエストが完了した後、 HTTPMarker に finish をコールする。
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 ステータスが "failed internally "に設定される。
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 レスポンス・サイズを手動で設定することもできる:
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 。 ビューの定義には、クラス(つまり、 WebViewController )のような技術的または一般的な名前を使用しないでください。 ビューには読みやすい名前を使用する。 例えば、 product detail page や payment 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:) で設定します。 |
例
let viewName = Instana.viewName
ユーザーの識別
ユーザー固有の情報は、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) |
ユーザーの識別子 |
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) |
ユーザーの識別子 |
ユーザーの E メール・アドレス
ユーザーのメールアドレスを設定します:
static func setUser(email: String)
構成パラメーター
次の表は、コンフィギュレーション・パラメータの概要である:
| パラメーター | 説明 |
|---|---|
email (String) |
ユーザーの E メール・アドレス |
ユーザー名
ユーザー名を設定する:
static func setUser(name: String)
パラメーター
以下の表にパラメーターの概要を示す:
| パラメーター | 説明 |
|---|---|
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 の除外
カスタム URLSession を Instana iOS エージェントによる監視対象から除外することができます。
static func ignore(_ session: URLSession)
構成パラメーター
次の表は、コンフィギュレーション・パラメータの概要である:
| パラメーター | 説明 |
|---|---|
session (URLSession) |
監視から除外されるURLセッション |
例
let session = URLSession(configuration: .default)
Instana.ignore(session)
モニター対象からの 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桁までの精度を持つカスタムメトリックデータ。 デフォルト値は Double.nan 。これは、 customMetric が呼び出し側によって設定されていないことを示す。 この指標に機密情報を含めないこと。 |
例
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.collectionEnabled = true
ロギングを有効にする
Instana iOS エージェントには、デバッグのためにロギングの機能があります。 Xcodeで環境変数 INSTANA_DEBUG_LOGLEVEL 。 値として、以下の値のいずれかをログレベルとして渡さなければならない:
- 0 = デバッグ情報、警告、エラー
- 1 = 警告とエラー
- 2 => エラーのみ
URL クエリパラメータの再編集
収集したURLのクエリパラメータには、機密データが含まれている可能性がある。 そのため、Instana iOS エージェントは、値を冗長化する必要があるクエリパラメータキーの正規表現パターンの指定をサポートしています。 冗長化された値はすべて <redacted> に置き換えられる。 Instanaに報告される前に、Instanaエージェント内で再編集が行われます。 したがって、秘密は処理のためにインスタナに届かない。 シークレットは、UI で分析したり、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> として表示される。
/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-KEY をキーとする HTTP ヘッダーフィールドを示している。
スロー送信モード
オプション:低速送信モード機能をオンにすることができます。
デフォルトでは、ビーコン送信が失敗すると、Instana エージェントは送信が成功するまでビーコンの再送信を試みます。 一部の携帯電話ネットワークではうまく動作しない。 スロー送信モード機能を有効にすると、ビーコン送信間隔は、パラメータに割り当てられた時間値に変更される。 slowSendInterval パラメーターに割り当てられた時間値に変更される。 各送信試行は、バッチではなく1つのビーコンのみで構成される(バッチは最大100ビーコン)。 Instanaエージェントは、1つのビーコンが正常に送信されるまで、低速送信モードを維持します。
の有効な時間範囲は秒単位で2~3600である。 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は、アプリがインストールされている間は変更されません。 パラメータを使用して、ユーザー・セッションIDの有効期限を設定できます。 usiRefreshTimeIntervalInHrs パラメータで設定できます。
以下のパラメータ値は、ユーザー・セッションIDのステータスを示す:
- 負の数:負数:ユーザー・セッションIDは、デフォルトでは期限切れにならないように設定されている。 この設定のデフォルト値は -1 です。
- 正の数:つまり、新しい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 以降サポートされています。 アプリがアップルの要件に準拠していれば、この機能を使用するために特別な設定は必要ない。