Docs » Splunk Observability Cloud でサポートされているインテグレーション » モバイルおよび Web アプリケーションを Splunk RUM でインストルメンテーションする » Splunk RUM に React Native アプリケーションをインストルメンテーションする » React Nativeアプリケーションを手動でインストルメンテーションする

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

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)

位置情報の更新 🔗

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

updateLocation: (latitude: number, longitude: number)

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

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

To create the Server-Timing header manually, provide a Server-Timing header with the name traceparent, where the desc field holds the version, the trace ID, the parent ID, and the trace flag.

次の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 ウェブサイトの Server-Timingtraceparent のドキュメントを参照してください。

This page was last updated on 2023年05月31日.