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

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

最終更新日:Mar 12, 2026

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

初期化パラメーター

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

パラメーター必須デフォルト説明
pidStringはい-アプリケーション ID
endpointStringはい-データ送信エンドポイント
envStringいいえprodアプリケーション環境。有効な値: prodgraypredailylocal
versionStringいいえ-アプリケーションバージョン
userObjectいいえ-ユーザー設定。詳細については、「ユーザー パラメーター
spaModeStringいいえfalseシングルページアプリケーション (SPA) のルート追跡モード。有効な値: hashhistoryautofalse
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 ~ 1001 バッチあたりの最大イベント数

使用例

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

sessionConfig パラメーター

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

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

ストレージの詳細

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 パラメーター

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

パラメータータイプ必須デフォルト説明
perfブール値 \オブジェクトいいえtrueページパフォーマンスデータ
webvitalsブール値 \オブジェクトいいえtrueWeb Vitals メトリック
apiブール値 \オブジェクトいいえtrueAPI リクエスト (XMLHttpRequest、フェッチ)
staticResourceブール値 \オブジェクトいいえtrue静的リソースリクエスト
consoleErrorブール値 \オブジェクトいいえtrueコンソールエラー
jsErrorブール値 \オブジェクトいいえtrueJavaScript エラー
actionブール値 \オブジェクトいいえtrueユーザー動作

使用例

ユーザー操作のトラッキングを無効化します。

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

evaluateApi パラメーター

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

入力引数

パラメーター説明
optionsObjectリクエストパラメーター:urlheaders、および 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_code番号 \文字列いいえステータスコード
snapshotsStringいいえ診断スナップショット(最大 5,000 文字)。reqHeadersparams、および 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 パラメーター

特定のリソースまたは例外イベントをレポート対象から除外します。

パラメータータイプ必須説明
リソースMatchOption \MatchOption[]いいえマッチする静的リソースおよび API イベント (XMLHttpRequest、フェッチ) を除外します。
例外MatchOption \MatchOption[]いいえマッチする例外イベントを除外します。

MatchOption 型

type MatchOption = string | RegExp | ((value: string) => boolean);
  • 文字列 — 指定された値で始まる任意の URL またはメッセージと一致します。たとえば、'https://api.aliyun.com''https://api.aliyun.com/v1/resource' と一致します。

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

  • 関数 — 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はい-検出をトリガーするイベント。有効な値: LOADERRORROUTE_CHANGELEAVE
delayNumberいいえ0トリガーイベント(ERROR および LEAVE を除く)発生後、検出を開始するまでの遅延時間(ミリ秒)
testerString \機能はい-検出方法。有効な値: HAS_CONTENTSAMPLESCREENSHOT、またはカスタム関数
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 × 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() で設定)およびイベントレベルのプロパティ(evaluateApisendCustomsendException、または 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 で有効化する

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

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

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

パラメータータイプ必須説明
nameStringはいリソース名
typeStringはいリソース タイプ (例: cssjavascriptxmlhttprequestfetchapiimagefont)
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,
  },
});