すべてのプロダクト
Search
ドキュメントセンター

Application Real-Time Monitoring Service:Web および HTML5 向け RUM SDK 構成リファレンス

最終更新日:Aug 18, 2026

Web および HTML5 向けのリアルユーザーモニタリング (RUM) SDK は、データ収集、セッション管理、イベントフィルタリング、ホワイトスクリーン検出のための構成オプションを提供します。このリファレンスでは、一般的な SDK の構成、ランタイム API、および使用例について説明します。

初期化パラメーター

これらのパラメーターを ArmsRum.init() に渡して、起動時に SDK を構成します。

パラメータータイプ必須デフォルト説明
pidStringはい-アプリケーション ID
endpointStringはい-データ報告エンドポイント
envStringいいえprodアプリケーション環境。有効値:prod、gray、pre、daily、local
versionStringいいえ-アプリケーションバージョン
userObjectいいえ-ユーザー設定。詳細については、ユーザーパラメーター
spaModeStringいいえfalseシングルページアプリケーション (SPA) のルート追跡モード。有効値:hash、history、auto、false
beforeReportFunctionいいえ-各レポートが送信される前に呼び出されるコールバックで、報告データを変更またはブロックします
reportConfigObjectいいえ-データ報告設定。詳細については、reportConfig パラメーター
sessionConfigObjectいいえ-セッションのサンプリングとストレージ設定。詳細については、sessionConfig パラメーター
collectorsObjectいいえ-データコレクターの切り替え。詳細については、collectors パラメーター
parseViewNameFunctionいいえ-ビュー名 (view.name) のカスタムパーサー。ページの URL を入力として受け取ります
parseResourceNameFunctionいいえ-リソース名 (resource.name) のカスタムパーサー。リソースの URL を入力として受け取ります
evaluateApiFunctionいいえ-API イベントのカスタムパーサー。詳細については、evaluateApi パラメーター
filtersObjectいいえ-イベントフィルター規則。詳細については、filters パラメーター
whiteScreenObjectいいえ-ホワイトスクリーン検出設定。詳細については、whiteScreen パラメーター
propertiesObjectいいえ-すべてのイベントにアタッチされるグローバルカスタムプロパティ。詳細については、properties パラメーター
remoteConfigObjectいいえ-動的構成配信。詳細については、動的構成

CDN による初期化

Alibaba Cloud コンテンツデリバリーネットワーク (CDN) を通じて SDK をロードする場合、グローバル名前空間 RumSDK.default からアクセスします。

const ArmsRum = window.RumSDK.default;

// SDK がロードされた後に初期化します。
// SDK スクリプトタグの前に window.__rum を定義した場合は、このステップをスキップします。
ArmsRum.init({
  pid: "<your-app-id>",
  endpoint: "<your-endpoint>",
});

// ランタイムで構成を更新
ArmsRum.setConfig('env', 'pre');

npm による初期化

import ArmsRum from '@arms/rum-browser';

ArmsRum.init({
  pid: "<your-app-id>",
  endpoint: "<your-endpoint>",
});

ユーザーパラメーター

user オブジェクトを通じて、RUM セッションをビジネスアカウントに関連付けます。

パラメータータイプ必須デフォルト説明
idStringいいえ-ユーザー ID。SDK によって自動生成され、変更できません
nameStringいいえ-ユーザー名
tagsStringいいえ-ユーザータグ
重要

user.id を上書きしないでください。SDK はこの値を自動生成するため、上書きするとユニーク訪問者 (UV) の計算に影響します。セッションをアカウントシステムにリンクするには、代わりに user.name または user.tags を使用してください。

例

ArmsRum.init({
  pid: "<your-app-id>",
  endpoint: "<your-endpoint>",
  user: {
    name: 'your user.name',
    tags: 'your user.tags',
  },
});

reportConfig パラメーター

報告間隔とバッチサイズを制御します。

パラメータータイプ必須デフォルト有効範囲説明
flushTimeNumberいいえ30000 -- 10000報告間隔 (ミリ秒)。即時報告するには 0 に設定します
maxEventCountNumberいいえ201 -- 100バッチあたりの最大イベント数

例

ArmsRum.init({
  pid: "<your-app-id>",
  endpoint: "<your-endpoint>",
  reportConfig: {
    flushTime: 0,       // 即時報告
    maxEventCount: 50,  // バッチあたり最大 50 イベント
  },
});

sessionConfig パラメーター

セッションのサンプリング、期間制限、およびストレージを構成します。

パラメータータイプ必須デフォルト説明
sampleRateNumberいいえ1サンプリングレート (0 から 1)。たとえば、0.5 はセッションの 50% をサンプリングします
maxDurationNumberいいえ86400000最大セッション期間 (ミリ秒)。デフォルト:24 時間
overtimeNumberいいえ3600000セッション非アクティブタイムアウト (ミリ秒)。デフォルト:1 時間
storageStringいいえlocalStorageセッションデータの保存場所。有効値:cookie、localStorage

ストレージの詳細

storage パラメーターは、SDK が以下のデータを永続化する場所を決定します。

  • _arms_uid -- ユニークユーザー ID (user.id)

  • _arms_session -- セッションメタデータ。フォーマット:${sessionId}-${sampled}-${startTime}-${lastTime}

    • sessionId -- ユニークセッション識別子

    • sampled -- このセッションがサンプリングによって選択されたかどうか

    • startTime -- セッション開始タイムスタンプ

    • lastTime -- 最終アクティビティタイムスタンプ

例

ArmsRum.init({
  pid: "<your-app-id>",
  endpoint: "<your-endpoint>",
  sessionConfig: {
    sampleRate: 0.5,          // セッションの 50% をサンプリング
    maxDuration: 86400000,    // 最大 24 時間
    overtime: 3600000,        // 1 時間の非アクティブタイムアウト
    storage: 'cookie',        // localStorage の代わりに cookie を使用
  },
});

collectors パラメーター

個々のデータコレクターを切り替えます。デフォルトではすべてのコレクターが有効です。

パラメータータイプ必須デフォルト説明
perfBoolean \Objectいいえtrueページパフォーマンスデータ
webvitalsBoolean \ObjectいいえtrueWeb Vitals メトリック
apiBoolean \ObjectいいえtrueAPI リクエスト (XMLHttpRequest, fetch)
staticResourceBoolean \Objectいいえtrue静的リソースリクエスト
consoleErrorBoolean \Objectいいえtrueコンソールエラー
jsErrorBoolean \ObjectいいえtrueJavaScript エラー
actionBoolean \Objectいいえtrueユーザー行動。デフォルトでは、SDK は 6 種類の DOM 要素 (button、a、input、select、option、textarea) のクリックイベントを収集します。div、dt、span などの非インタラクティブなタグのクリックイベントは、cursor:pointer、onclick、role=button、または tabindex:0 が設定されていても自動的に収集されません。SDK は getClosestTargetAncestorElement を呼び出して DOM ツリーを遡り、最も近いインタラクティブな祖先要素を探します。そのため、button または a タグでラップされた要素は、祖先マッチングによって収集されます
trackUserInteractionsBooleanいいえfalsediv、dt、span などの非インタラクティブなタグを含む、すべての要素のクリックを収集するかどうか。有効にすると、SDK はクリック座標とビューポート情報も記録するため、ヒートマップ分析に適しています

収集範囲と代替案

追跡する必要のある要素がデフォルトの収集範囲外にある場合は、次のいずれかのアプローチを使用します。

  • DOM 構造の調整 (推奨):監視したい要素を button または a タグでラップします。SDK は祖先マッチングを通じて自動的に収集します。

  • trackUserInteractions の使用:trackUserInteractions: true を設定すると、SDK は非インタラクティブなタグを含むすべての要素のクリックイベントを収集します。このアプローチはヒートマップ分析に適しています。

  • sendCustom API の使用:ArmsRum.sendCustom() を呼び出して、デフォルトの収集範囲外のクリックイベントを手動で報告します。パラメーターの詳細については、sendCustom をご参照ください。

説明

@arms/rum-browser v0.1.13 でのテストによると、collectors.action は collectors.click に名前が変更され、trackUserInteractions は collectors.click のサブオプションになりました。実際に使用する SDK バージョンのパラメーター名をご参照ください。

例

ユーザーインタラクションの追跡を無効にする:

ArmsRum.init({
  pid: "<your-app-id>",
  endpoint: "<your-endpoint>",
  collectors: {
    action: false,
  },
});

evaluateApi パラメーター

evaluateApi 関数は、XMLHttpRequest および fetch イベントの解析方法をカスタマイズします。3 つの引数を受け取り、Promise<IApiBaseAttr> を返します。

入力引数

パラメータータイプ説明
optionsObjectリクエストパラメーター:url、headers、data。正確なフィールドはリクエストメソッドによって異なります
responseObject応答本文
errorErrorエラーオブジェクト。リクエストが失敗した場合にのみ存在します

戻り値の型 (IApiBaseAttr)

返されたフィールドは SDK のデフォルトをオーバーライドします。省略されたフィールドはデフォルト値のままです。

フィールドタイプ必須説明
nameStringいいえAPI 名。通常は収束された URL (最大 1,000 文字)。例:/list/123 の場合は /list/$id。parseResourceName
messageStringいいえAPI 呼び出しの簡単な説明 (最大 1,000 文字)
successNumberいいえリクエスト結果:1 = 成功、0 = 失敗、-1 = 不明
durationNumberいいえAPI の合計所要時間
status_codeNumber \Stringいいえステータスコード
snapshotsStringいいえ診断スナップショット (最大 5,000 文字)。reqHeaders、params、resHeaders を保存します。インデックス化されておらず、クエリや集約には使用できません

例

ArmsRum.init({
  pid: "<your-app-id>",
  endpoint: "<your-endpoint>",
  evaluateApi: async (options, response, error) => {
    let respText = '';
    if (response && response.text) {
      respText = await response.text();
    }

    return {
      name: 'my-custom-api',
      success: error ? 0 : 1,
      snapshots: JSON.stringify({
        params: 'page=1&size=10',
        response: respText.substring(0, 2000),
        reqHeaders: '',
        resHeaders: '',
      }),
      properties: {
        prop_msg: 'custom msg',
        prop_num: 1,
      },
    };
  },
});

filters パラメーター

特定のリソースまたは例外イベントを報告から除外します。

パラメータータイプ必須説明
resourceMatchOption \MatchOption[]いいえ一致する静的リソースおよび API イベント (XMLHttpRequest, fetch) を除外します
exceptionMatchOption \MatchOption[]いいえ一致する例外イベントを除外します

MatchOption 型

type MatchOption = string | RegExp | ((value: string) => boolean);
  • String -- 指定された値で始まる URL またはメッセージに一致します。例:'https://api.aliyun.com' は 'https://api.aliyun.com/v1/resource' に一致します。

  • RegExp -- URL またはメッセージを正規表現と照合します。

  • Function -- URL またはメッセージを入力として受け取ります。イベントを除外するには true を返します。

MatchOption 値の配列を渡すと、条件は順番に評価されます。いずれかの条件が一致した場合、イベントは除外されます。

例

ArmsRum.init({
  pid: "<your-app-id>",
  endpoint: "<your-endpoint>",
  filters: {
    exception: [
      'Test error',                           // 'Test error' で始まるメッセージ
      /^Script error\.?$/,                    // この正規表現に一致するメッセージ
      (msg) => msg.includes('example-error'), // カスタムマッチ関数
    ],
    resource: [
      'https://example.com/',   // 'https://example.com/' で始まる URL
      /localhost/i,             // 'localhost' を含む URL
      (url) => url.includes('example-resource'),
    ],
  },
});

whiteScreen パラメーター

アプリケーションの空白またはホワイトスクリーンの状態を検出します。Chrome 40 および IE 9 以降でサポートされています。

パラメータータイプ説明
detectionRulesArray<DetectionRule>1 つ以上の検出規則。規則は構成された順序で実行されます

DetectionRule

パラメーター型必須デフォルト説明
targetStringはい-モニター対象の要素の CSS セレクター
test_whenArrayはい-検出をトリガーするイベント。有効な値:LOAD、ERROR、ROUTE_CHANGE、LEAVE
delayNumberいいえ0トリガーイベント (ERROR と LEAVE を除く) の後、検出が開始されるまでの遅延時間 (ミリ秒)
testerString | 関数関数はい-検出メソッド。有効な値:HAS_CONTENT、SAMPLE、SCREENSHOT、またはカスタム関数
ignoreUrlListArray<String>いいえ[]スキップするページの URL
configOptionsConfigOptionsいいえ-テスター固有のオプション。詳細は ConfigOptions

トリガーイベント

イベント説明
LOADページの読み込みが完了します
ERRORグローバルな JavaScript エラーが発生します
ROUTE_CHANGEルート (履歴またはハッシュ) が変更されます
LEAVEページが閉じられようとしています

検出メソッド

メソッド仕組み
HAS_CONTENTノードが存在し、textContent
SAMPLEターゲット領域全体にサンプリングポイントを設定し、各ポイントの最上位 DOM 要素が許可された要素セットに属しているかどうかをチェックします
SCREENSHOTキャンバスのスクリーンショットを撮り、ピクセルブロックを比較してホワイトスクリーン率を計算します
カスタム関数ターゲット要素を入力として受け取ります。CustomTesterResult または Promise<CustomTesterResult>

CustomTesterResult 型:

type CustomTesterResult = {
  hasContent: boolean;               // true = コンテンツが存在する; false = ホワイトスクリーンが検出された
  message?: string;                  // エラーメッセージ
  snapshot?: Record<string, any>;    // 診断データ
}

ConfigOptions

SCREENSHOT および SAMPLE 検出メソッドに固有のオプション。

SCREENSHOT オプション:

パラメータータイプデフォルト説明
colorRangeArray<String>['rgb(255, 255, 255)']「白」として扱われる色。フォーマット:rgb(r, g, b)
fillColorString'rgba(0, 100, 200, 255)'スクリーンショット撮影時に画像、動画、キャンバス、SVG、iframe に適用される塗りつぶし色。colorRange
horizontalOffsetNumber0ターゲット要素の左端からの水平オフセット (px)。左のサイドバーを除外するために使用します
verticalOffsetNumber0ターゲット要素の上端からの垂直オフセット (px)。上のナビゲーションバーを除外するために使用します
pixelsNumber10比較用のピクセルブロックサイズ (pixels x pixels)
thresholdNumber0.8ホワイトスクリーン率のしきい値。この値を超えるとホワイトスクリーンイベントがトリガーされます
dprNumber0.3スクリーンショット画像のスケーリング比率
ignoreElementsArray<String>[]スクリーンショットから除外する要素の CSS セレクター

SAMPLE オプション:

パラメータータイプデフォルト説明
sampleMethod`1 \2 \3`2サンプリングパターン:1 = 十字、2 = 交差十字、3 = 米字
checkPointsNumber10放射状のサンプリングポイント数。合計ポイント数:十字/交差十字 = 4 * checkPoints + 1; 米字 = 8 * checkPoints + 1
thresholdNumber0.8ホワイトスクリーン率のしきい値
whiteBoxElementsArray<String>[]「白」と見なされる要素の CSS セレクター。サンプリングポイントの最上位要素がセレクターのいずれかに一致すると、ホワイトスクリーンカウントが増加します

共有オプション:

SCREENSHOT と SAMPLE の両方が debug オプション (Boolean、デフォルト:false) をサポートします。有効にすると、検出の詳細がブラウザーの開発者ツールコンソールに出力されます。

例

スクリーンショットベースの検出:

ArmsRum.init({
  pid: "<your-app-id>",
  endpoint: "<your-endpoint>",
  whiteScreen: {
    detectionRules: [{
      target: '#root',
      test_when: ['LOAD', 'ERROR', 'ROUTE_CHANGE', 'LEAVE'],
      delay: 5000,
      tester: 'SCREENSHOT',
      configOptions: {
        colorRange: ['rgb(255, 255, 255)', 'rgb(0, 0, 0)'],
        threshold: 0.9,
        pixels: 10,
        horizontalOffset: 210,
        verticalOffset: 50,
      },
    }],
  },
});

サンプリングベースの検出:

ArmsRum.init({
  pid: "<your-app-id>",
  endpoint: "<your-endpoint>",
  whiteScreen: {
    detectionRules: [{
      target: '#root',
      test_when: ['LOAD', 'ERROR', 'ROUTE_CHANGE', 'LEAVE'],
      delay: 5000,
      tester: 'SAMPLE',
      configOptions: {
        sampleMethod: 2,
        checkPoints: 10,
        threshold: 0.9,
        whiteBoxElements: ['.el-skeleton'],
      },
    }],
  },
});

カスタム検出関数:

ArmsRum.init({
  pid: "<your-app-id>",
  endpoint: "<your-endpoint>",
  whiteScreen: {
    detectionRules: [{
      target: '#root',
      test_when: ['LOAD', 'ERROR', 'ROUTE_CHANGE', 'LEAVE'],
      delay: 5000,
      tester: async (element) => {
        return {
          hasContent: false,
          message: 'Custom error message',
          snapshot: {
            checkPoints: 100,
            rate: 0.99,
            checkdata: '......',
          },
        };
      },
    }],
  },
});

properties パラメーター

報告されるすべてのイベントにグローバルカスタムプロパティをアタッチします。

パラメータータイプ必須説明
[key: string]String \Numberいいえカスタムのキーと値のペア。キーは JSON 仕様に準拠した文字列で、最大 50 文字 (長い場合は切り捨てられます)。文字列値:最大 2,000 文字。文字列でも数値でもない値は破棄されます

マージ動作

  • グローバルプロパティ (init() で設定) とイベントレベルのプロパティ (evaluateApi、sendCustom、sendException、または sendResource を通じて設定) は、ストレージ時にマージされます。

  • イベントレベルのプロパティが優先されます。同じキーが両方に存在する場合、イベントレベルの値が優先されます。

  • マージ後、最大 20 個のキーと値のペアが保持されます。超過したペアはキーでソートされ、削除されます。

例

ArmsRum.init({
  pid: "<your-app-id>",
  endpoint: "<your-endpoint>",
  properties: {
    prop_string: 'xx',
    prop_number: 2,
    // 50 文字を超えるキーは切り捨てられます
    more_than_50_key_limit_012345678901234567890123456789: 'yy',
    // 2,000 文字を超える文字列値は切り捨てられます
    more_than_2000_value_limit: new Array(2003).join('1'),
    // 無効な型 -- これらのペアは削除されます
    prop_null: null,
    prop_undefined: undefined,
    prop_bool: true,
  },
});

動的構成

SDK は構成設定のリモート配信をサポートしています。初期ロード中に、SDK は init() からの静的な値をオーバーライドするリモート設定をフェッチし、イベントトラッキングやデータ報告などの機能をそれに応じて更新します。

ステップ 1:ARMS コンソールでの構成

  1. アプリケーションリスト に移動し、ご利用のアプリケーションを開きます。

  2. アプリケーション設定 > SDK 設定 に移動します。

  3. 目的の構成値を設定します。

  4. 動的構成の更新を確認 をクリックして、設定をリモートの Object Storage Service (OSS) サーバーにプッシュします。

ステップ 2:SDK での有効化

アプリケーションがホストされている region を含む remoteConfig フィールドを初期化コードに追加します。

CDN:

window.__rum = {
  pid: "<your-app-id>",
  endpoint: "<your-endpoint>",
  remoteConfig: {
    region: "cn-hangzhou"  // 例:シンガポールは "ap-southeast-1"
  }
};
<script async src="https://xxid-sdk.rum.aliyuncs.com/v2/browser-sdk.js"></script>

npm:

import ArmsRum from '@arms/rum-browser';

ArmsRum.init({
  pid: "<your-app-id>",
  endpoint: "<your-endpoint>",
  remoteConfig: {
    region: "cn-hangzhou"  // 例:シンガポールは "ap-southeast-1"
  }
});

キャッシュ動作

リモート構成を取得した後、SDK は設定をローカルにキャッシュします。その後の初期化では、SDK はキャッシュされた構成を優先します。

動的構成には、固定バージョンで CDN を介してインポートする場合、SDK バージョン 0.0.37

自動解決パラメーター

SDK は、IP アドレスと User-Agent ヘッダーからこれらのプロパティを自動解決します。明示的に設定された値は、自動解決された値よりも優先されます。

パラメータータイプ必須説明
deviceObjectいいえデバイス情報
osObjectいいえオペレーティングシステムとコンテナ情報
geoObjectいいえ地理位置情報
ispObjectいいえISP/キャリア情報
netObjectいいえネットワーク接続情報

フィールドの詳細については、ログデータトピックの共通プロパティセクションをご参照ください。

例

ArmsRum.init({
  pid: "<your-app-id>",
  endpoint: "<your-endpoint>",
  geo: {
    country: 'your custom country info',
    city: 'your custom city info',
  },
});

SDK API

初期化後、これらのメソッドを使用して構成を変更し、カスタムデータを報告します。

getConfig

現在の SDK 構成を取得します。

const config = ArmsRum.getConfig();

setConfig

ランタイムで SDK 構成を更新します。単一のキーと値のペア、または完全な構成オブジェクトを渡します。

// 単一の値を設定
ArmsRum.setConfig('env', 'pre');

// 複数の値を設定
const config = ArmsRum.getConfig();
ArmsRum.setConfig({
  ...config,
  version: '1.0.0',
  env: 'pre',
});

sendCustom

カスタムイベントを報告します。type および name フィールドは必須です。

パラメータータイプ必須説明
typeStringはいイベントタイプ
nameStringはいイベント名
groupStringいいえイベントグループ
valueNumberいいえ数値
propertiesObjectいいえカスタムプロパティ
ArmsRum.sendCustom({
  type: 'CustomEventType1',
  name: 'customEventName2',
  group: 'customEventGroup3',
  value: 111.11,
  properties: {
    prop_msg: 'custom msg',
    prop_num: 1,
  },
});

sendException

カスタム例外を報告します。name および message フィールドは必須です。

パラメータータイプ必須説明
nameStringはい例外名
messageStringはい例外メッセージ
fileStringいいえソースファイル
stackStringいいえスタックトレース
lineNumberいいえ行番号
columnNumberいいえ列番号
propertiesObjectいいえカスタムプロパティ
ArmsRum.sendException({
  name: 'customErrorName',
  message: 'custom error message',
  file: 'custom exception filename',
  stack: 'custom exception error.stack',
  line: 1,
  column: 2,
  properties: {
    prop_msg: 'custom msg',
    prop_num: 1,
  },
});

sendResource

カスタムリソースイベントを報告します。name、type、および duration フィールドは必須です。

パラメーター型必須説明
nameStringはいリソース名
typeStringはいリソースタイプ (例: css、javascript、xmlhttprequest、fetch、api、image、font)
durationStringはい応答時間
successNumberいいえ結果: 1 = 成功、0 = 失敗、-1 = 不明
methodStringいいえHTTP メソッド
status_codeNumber \Stringいいえステータスコード
messageStringいいえ応答メッセージ
urlStringいいえリクエスト URL
trace_idStringいいえ分散トレース ID
propertiesObjectいいえカスタムプロパティ
ArmsRum.sendResource({
  name: 'getListByPage',
  message: 'success',
  duration: 800,
  url: 'https://www.aliyun.com/data/getListByPage',
  properties: {
    prop_msg: 'custom msg',
    prop_num: 1,
  },
});