React Nativeアプリケーションを手動でインストルメンテーションする

React Native RUM エージェントを使用して、Splunk Observability Cloud リアルユーザーモニタリング / RUM 用に React Native アプリケーションを手動でインストルメンテーションし、追加のテレメトリを収集したり、個人識別情報 (PII) をサニタイズしたり、グローバル属性を追加したりできます。

Splunk RUM 用の React Native アプリケーションを手動でインストルメンテーションして、追加のテレメトリを収集したり、個人識別情報 (PII) をサニタイズしたり、グローバル属性を追加したりすることができます。

グローバル属性の管理

グローバル属性は、すべての報告データに追加されるキーと値のペアです。グローバル属性は、アプリやユーザー固有の値をタグとして報告するのに便利です。

次の例は、コード内でグローバル属性を定義する方法を示しています:

SplunkRum.setGlobalAttributes({
   'enduser.id': 'Test User',
});

グローバル属性を使用してユーザーメタデータを追加する

デフォルトでは、React Native RUM エージェントはサイトのユーザーにトレースを自動的にリンクしません。ただし、トレースをフィルタリングまたはデバッグするために、ユーザーメタデータの収集が必要になる場合があります。

OpenTelemetry仕様のグローバル属性( enduser.idenduser.role など)をスパンに追加することで、ユーザーを特定することができます。

以下の例は、初期化時にユーザーデータにアクセスできるかどうかに応じて、エージェントの初期化時または初期化後に識別メタデータをグローバル属性として追加する方法を示しています。

初期化時に識別メタデータを追加する

const RumConfig: ReactNativeConfiguration = {
   realm: '<realm>',
   rumAccessToken: '<rum-access-token>',
   applicationName: '<your-app-name>',
   environment: '<your-environment>',
   globalAttributes: {
      enduser.id: 'user-id-123456',
      enduser.role: 'premium'
   },
}

初期化後に識別メタデータを追加

SplunkRum.setGlobalAttributes({
   'enduser.id': 'user-id-123456',
   'enduser.role': 'premium'
});

カスタムイベントの報告

OpenTelemetry Swift API を使って、React Native アプリケーションで起こっているカスタムイベントをレポートすることができます。

次の例では、OTel Swift API を使用して、時間を設定したい関数をレポートする方法を示します:

func calculateTax() {
   let tracer = OpenTelemetrySDK.instance.tracerProvider.get(instrumentationName: "MyApp")
   let span = tracer.spanBuilder(spanName: "calculateTax").startSpan()
   span.setAttribute(key: "numClaims", value: claims.count)
   span.setAttribute(key: "workflow.name", value: "<your_workflow>") // This allows the event to appear in the UI
 //...
 //...
   span.end() // You can also use defer for this
}

エラー報告の設定

reportError 関数を使用して、処理されたエラー、例外、メッセージを報告することができます。

次の例は、カスタムエラーを報告する方法を示しています:

reportError: (err: any, isFatal?: boolean)

位置情報の更新

注: updateLocation メソッドは、2025 年 2 月 4 日の時点で Splunk RUM では非推奨です。このメソッドは引き続き機能しますが、将来のバージョンでは削除されます。この注釈に代わるものはありません。

RUM ライブラリには、緯度経度をグローバル属性として設定する方法があります。例:

updateLocation: (latitude: number, longitude: number)

Splunk APM からサーバートレースコンテキストを追加する

React Native RUM エージェントは、APM インストルメンテーションによって提供されるバックエンドデータを使用して、Server-Timing ヘッダーを通してサーバートレースコンテキストを収集します。場合によっては、ヘッダーを手動で生成する必要があります。

Server-Timing ヘッダーを手動で作成するには、traceparent という名前の Server-Timing ヘッダーを用意します。desc フィールドには、バージョン、トレース ID、親 ID、トレースフラグが格納されます。

次のHTTPヘッダーを考えてみます:

Server-Timing: traceparent;desc="00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01"

この例は、以下のデータを含むコンテキストに解決します:

version=00 trace-id=4bf92f3577b34da6a3ce929d0e0e4736
parent-id=00f067aa0ba902b7 trace-flags=01

traceparent ヘッダーの値を生成するときは、それが以下の正規表現にマッチすることを確認します:

00-([0-9a-f]{32})-([0-9a-f]{16})-01

パターンにマッチしない値を持つサーバータイミングヘッダーは自動的に破棄されます。詳しくは、W3C Web サイトの Server-Timingtraceparent のドキュメントを参照してください。