React Nativeアプリケーションを手動でインストルメンテーションする 🔗
Splunk RUM 用の React Native アプリケーションを手動でインストルメンテーションして、追加のテレメトリを収集したり、個人識別情報 (PII) をサニタイズしたり、グローバル属性を追加したりすることができます。
グローバル属性の管理 🔗
グローバル属性は、すべての報告データに追加されるキーと値のペアです。グローバル属性は、アプリやユーザー固有の値をタグとして報告するのに便利です。
次の例は、コード内でグローバル属性を定義する方法を示しています:
SplunkRum.setGlobalAttributes({
'enduser.id': 'Test User',
});
グローバル属性を使用してユーザーメタデータを追加する 🔗
デフォルトでは、React Native RUMエージェントは、トレースをサイトのユーザーに自動的にリンクしません。しかし、トレースをフィルターリングまたはデバッグするために、ユーザーのメタデータを収集する必要がある可能性があります。
OpenTelemetry仕様のグローバル属性( enduser.id
や enduser.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-Timing
と traceparent
のドキュメントを参照してください。