RUMブラウザのデータモデル

Splunk Observability Cloud Real User Monitoring (RUM) を使用して、ブラウザベースの Web アプリケーションから収集するデータを理解します。

ブラウザ RUM エージェントは、フロントエンドのウェブアプリケーションに関する一般的な RUM テレメトリデータと、いくつかのインストルメンテーションからのデータを収集します。

一般的なデータ型

Splunk RUM データモデルは、OpenTelemetry の規約に従って、以下の論理エンティティを表します:

トレース

単一の論理的な操作の結果としてトリガーされる一連のイベントで、アプリケーションのさまざまなコンポーネントに分散されます。トレースには、プロセス、ネットワーク、およびセキュリティの境界を越えたイベントが含まれます。RUM トレースは、たとえば、誰かが Web サイト上でアクションを開始するためにボタンをタップしたときに開始されます。RUM と APM を併用する場合、トレースは、ユーザーアクションによって開始される要求を処理するダウンストリームサービス間で行われたコールを表します。

スパン

トランザクション内の操作。単一スパンには、論理的な名前、操作の開始および終了タイムスタンプ、およびキャプチャされたデータにリンクされたイベントと属性が含まれます。スパンは、親スパンと、0 個以上の隣接するスパンへの参照を持っている場合があります。スパンには、ユニバーサル属性とカスタム属性があります。

セッション

一定期間にわたってアプリケーションと対話した際に単一のユーザーが実行したアクションに対応するトレースのコレクション。デフォルトでは、セッションは、セッションでキャプチャされた最後のイベントから 15 分が経過するまで持続します。最大セッション時間は 4 時間です。

インタラクション

ユーザーがユーザーインターフェイス内で実行するアクションが反映されます。一般的なインタラクションの種類には、マウスのクリック、タッチスクリーンのタップ、キーボードイベントなどがあります。

ユーザー

デフォルトでは、Splunk RUM はアイデンティティデータを収集しません。トレースを特定のユーザーにマッピングするには、手動のインストルメンテーションが必要です。ユーザーは、ユーザー名、電子メールアドレス、または合成識別子で表すことができます。合成表現は、PII 規制によりユーザーの識別が許可されていない状況で役立ちます。

基本プロパティ

以下のプロパティは、Splunk RUM でインストルメンテーションされるすべての Web アプリケーションに共通です:

Name

タイプ

説明

id

文字列

トレース内のスパンに対して生成される一意の64ビット識別子。

parentId

文字列

親スパン ID。スパンがトレース内のルートスパンである場合は省略。

name

文字列

スパンが表す論理演算。たとえば、/pay または /customers/{1}/details

duration

数字

持続時間(マイクロ秒)。

traceId

文字列

トレースに属するすべてのスパンに設定される一意の128ビット識別子。

timestamp

数字

スパン開始時刻(エポックマイクロ秒)。未完了な場合には、値がありません。

tags

オブジェクト

特定のタグに基づくスパンの検索と分析を可能にする追加コンテキスト。

annotations

配列

待ち時間を説明するイベントと、それが起こった時間を関連付けます。

メトリクス

以下の表は、Splunk RUM for Browser で利用可能なすべてのメトリクス一覧です。Splunk RUM のすべてのエラーには sf_error=true というディメンションがあります。接頭辞 rum.node. を持つメトリクスはページレベルメトリクスであり、接頭辞 rum. を持つメトリクスは複数ページの集約です。ページレベルのメトリクスにはディメンション sf_node_name もあり、特定のページでのフィルタリングに使用できます。また、ページレベルのメトリクスがキャプチャされるのは、カスタム URL グループ化ルールが設定されている場合にのみです。

アプリレベルのメトリクス名

UI名

ページレベルのメトリクス

説明

rum.workflow.count

カスタムイベント・カウント

rum.node.workflow.count

指定された時間範囲内で選択されたカスタムイベントを持つスパンの総数。

rum.workflow.time.ns.p75

カスタムイベント期間

rum.node.workflow.time.ns.p75

指定された時間範囲内で、選択されたカスタムイベントを持つスパンのp75時間(ナノ秒単位)。

rum.page_view.count

ページビューとルート変更

rum.node.page_view.count

指定された時間範囲をページ別に並べ替えたページビューとルート変更の総数。

rum.page_view.time.ns.p75

ページビューとルート変更時間

rum.node.page_view.time.ns.p75

ドキュメントロードの p75 時間(ナノ秒単位)、または指定された時間範囲のルート変更時間。Splunk RUM のルート変更は、期間がゼロ秒のイベントです。詳細については、「ドキュメントのロード」を参照してください。

rum.client_error.count

JavaScriptエラー

rum.node.client_error.count

指定した時間範囲内でJavaScriptエラーが発生したスパンの総数。

rum.webvitals_lcp.time.ns.p75

最大コンテンツの描画(LCP)時間

rum.node.webvitals_lcp.time.ns.p75

指定された時間範囲におけるLCPのp75時間(ナノ秒単位)。

rum.webvitals_inp.time.ns.p75

INP(インタラクションから次の描画まで)

rum.node.rum.webvitals_inp.time.ns.p75

指定された時間範囲におけるINPのp75時間(ナノ秒単位)。

rum.webvitals_cls.score.p75

累積レイアウトシフト(CLS)

rum.node.webvitals_cls.score.p75

与えられた時間範囲におけるCLSのp75時間(ナノ秒単位)。

rum.long_task.count

長いタスク数

rum.node.long_task.count

指定された時間範囲内の長いタスクの総数。

rum.long_task.time.ns.p75

長いタスクの期間

rum.node.long_task.time.ns.p75

ナノ秒単位の長いタスクの期間のp75時間。

rum.resource_request.count

ネットワークリクエスト(HTTPS、XHR、AJAX)

rum.node.resource_request.count

https、XHR、AJAX、retrieveイベントなど、指定した時間範囲内のネットワークリクエストの総数。

rum.resource_request.time.ns.p75

バックエンドとリソースリクエスト期間

rum.node.resource_request.time.ns.p75

指定された時間範囲におけるAJAXとバックエンドのレイテンシのナノ秒単位のp75時間。

rum.resource_request.ttfb.time.ns.p75

最初のバイトまでの時間(TTFB)

rum.node.resource_request.time.ns.p75

指定された時間範囲におけるTTFBのp75時間(ナノ秒)。

デフォルトのタグ

デフォルトでは、ブラウザ RUMエージェントは、すべてのスパンに以下のタグを追加します:

Name

タイプ

説明

app

文字列

コンフィギュレーションで設定されたアプリケーション名。

component

文字列

スパンを生成したインストルメンテーション名。たとえば、document-load のようになります。

location.href

文字列

スパン作成時のロケーションURL。

splunk.rumSessionId

文字列

_splunk_rum_sid Cookieから収集されるセッション ID。「ブラウザ RUM エージェントが使用するクッキー」を参照してください。

splunk.rumVersion

文字列

アプリケーションをインストルメンテーションする Splunk RUM SDK のバージョン。

splunk.scriptInstance

文字列

splunk-otel-web.js インスタンスの 64 ビット ID ID は、ページがリロードされるたびに更新されます。これは、同じブラウザウィンドウ内で同じセッションを共有している異なるタブを区別する場合などに便利です。

otel.status_code

文字列

設定されている場合、値は OK または ERROR のいずれかとなります。

telemetry.sdk.language

文字列

常に webjs です。

telemetry.sdk.name

文字列

常に @splunk/otel-web です。

タイミング注釈のリクエスト

ブラウザ RUMエージェントによって生成されたすべてのスパンは、PerformanceNavigationTiming インターフェイスのためのW3C仕様によって指定されたように、パフォーマンス タイミングで注釈されています:

Name

タイムスタンプ

fetchStart

ブラウザがリソースの取得を開始する直前。

domainLookupStart

ブラウザがリソースのドメイン名検索を開始する直前。

domainLookupEnd

ブラウザがリソースのドメイン名検索を終了した直後。

connectStart

ブラウザがリソースを取得するためにサーバーとの接続を確立し始める直前。

secureConnectionStart

ブラウザが現在の接続を保護するためにハンドシェイクプロセスを開始する直前。

connectEnd

ブラウザがリソースを取得するためにサーバーとの接続を確立し終わった直後。

requestStart

ブラウザがサーバーにリソースのリクエストを開始する直前。

responseStart

ブラウザがサーバーからレスポンスの最初のバイトを受信した直後。

responseEnd

ブラウザがリソースの最後のバイトを受信した直後、またはトランスポート接続が閉じられる直前。

データ転送の制限

ブラウザ RUMエージェントには、以下の制限が組み込まれています:

  • データ・バッチの転送頻度は5秒です。

  • エージェントは 1 コンポーネントあたり 30 秒間に 100 スパンを送信できます。制限を超えて生成されたスパンはドロップされます。

  • タグ値の長さは最大 4,096 文字です。それより長い値は切り捨てられます。

  • スパン数で決まるバッチサイズは20スパンです。

地理的データの収集と保持

ブラウザエージェントは、すべてのビーコン接続のIPアドレスをSplunk Observability Cloudに送信し、Splunk Observability Cloudはそれらを使用して、国や都市などのユーザーの地理的位置をマッピングします。

注: Splunk Observability Cloud は IP から地理的なメタデータのみを計算し、6 時間以内に IP アドレスを削除します。

splunk-rum による RUM ブラウザモデルへの追加

splunk-rum CLI または Webpack ビルドプラグインを使用してソースマップをアップロードしている場合、error.sourceMapIds という名前の新しい属性が RUM ブラウザデータモデルに追加されます。この属性には、以下のようなファイルのURLと sourceMapId のペアのマッピングが含まれています。

  • sourceMapId 属性をソースマップに事前に挿入しておく必要があります(splunk-rum CLI または Webpack ビルドプラグインを使用)。「JavaScript ソースマッピングの設定」を参照してください。
  • エラーの error.stack に記載されているファイルのみが error.sourceMapIds に表示されます。

この属性が RUM ブラウザデータモデルに追加されるのは、splunk-rum CLI または Webpack ビルドプラグインを使用している場合のみです。

インストルメンテーション固有のデータ

ブラウザ RUM のインストルメンテーションとそれらが収集するデータの詳細については、「ブラウザ RUM のインストルメンテーション固有のデータ」を参照してください。