Application Real-Time Monitoring Service (ARMS) の Web および HTML5 用 Real User Monitoring (RUM) SDK は、ビジネス要件に合わせて幅広いカスタム構成を提供します。このトピックでは、参考のために、Web および HTML5 アプリケーションの一般的な SDK 構成について説明します。
SDK パラメーター
パラメーター | タイプ | 説明 | 必須 | デフォルト値 |
pid | String | アプリケーション ID。 | はい | - |
endpoint | String | モニタリングデータのレポート先アドレス。 | はい | - |
env | String | アプリケーションの環境。有効な値:
| いいえ | prod |
version | String | アプリケーションのバージョン。 | いいえ | - |
user | Object | ユーザー設定。デフォルトでは、ユーザー ID(user.id)は RUM SDK によって生成されます。 | いいえ | - |
spaMode | String | ページイベントを監視し、ページビューを再度報告するかどうかを指定します。このパラメーターは、シングルページアプリケーション (SPA) に適用できます。有効な値:
| いいえ | false |
beforeReport | Function | レポートされるデータを変更またはブロックするために、データのレポート前に呼び出される関数。 | いいえ | - |
reportConfig | Object | データレポート設定。詳細については、「reportConfig パラメーター」セクションをご参照ください。 | いいえ | - |
sessionConfig | Object | サンプリングやストレージなどのセッションの構成については、「SessionConfig」セクションをご参照ください。 | いいえ | - |
collectors | Object | コレクター設定。 | いいえ | - |
parseViewName | Function | ビュー名 (view.name) を解析するために使用される関数。入力パラメーターはページの URL です。 | いいえ | - |
parseResourceName | Function | リソース名 (resource.name) を解析するために使用される関数。入力パラメーターはリソースの URL です。 | いいえ | - |
evaluateApi | Function | API イベントを解析するために使用される関数。詳細については、「EvaluateApi パラメーター」セクションをご参照ください。 | いいえ | - |
filters | Object | イベントフィルター設定。詳細については、「filters パラメーター」セクションをご参照ください。 | いいえ | - |
whiteScreen | Object | 白い画面の監視を構成するために使用される関数。詳細については、「WhiteScreen パラメーター」セクションをご参照ください。 | いいえ | - |
properties | Object | すべてのイベントに有効なカスタムプロパティ。詳細については、「properties パラメーター」セクションをご参照ください。 | いいえ | - |
remoteConfig | Object | 動的構成。詳細については、「動的構成」セクションをご参照ください。 | いいえ | - |
Alibaba Cloud Content Delivery Network (CDN) を使用してアプリケーションにアクセスする場合は、アプリケーションがグローバル名前空間 RumSDK.default に存在することを確認してください。
const ArmsRum = window.RumSDK.default;
// RUM SDK を使用する前に、SDK がロードされていることを確認してください。
// SDK のロード前に __rum 構成が定義されていない場合は、ここで構成を初期化できます。
ArmsRum.init({
pid: "your app id", // アプリケーションID
endpoint: "your endpoint", // エンドポイント
});
// NPM パッケージまたは CDN ロードによる初期化は同じです。
ArmsRum.setConfig('env', 'pre');
ユーザーパラメーター
パラメーター | タイプ | 説明 | 必須 | デフォルト値 |
id | String | ユーザー ID。SDK によって生成され、変更できません。 | いいえ | - |
tags | String | タグ。 | いいえ | - |
name | String | ユーザー名。 | いいえ | - |
例
独自のアカウントシステムを使用する場合は、ユーザー ID(user.id)ではなく、ユーザー名(user.name)またはタグ(user.tags)を変更することをお勧めします。ユーザー ID を上書きすると、ユニークビジター (UV) データに影響します。
ArmsRum.init({
pid: "your app id", // アプリケーションID
endpoint: "your endpoint", // エンドポイント
user: {
name: 'your user.name', // ユーザー名
tags: 'your user.tags', // ユーザータグ
},
});
reportConfig パラメーター
パラメーター | タイプ | 説明 | 必須 | デフォルト値 |
flushTime | Number | データがレポートされる間隔。 有効な値:0 ~ 10000。 | いいえ | 3000 |
maxEventCount | Number | 一度にレポートされるデータエントリの最大数。 有効な値:1 ~ 100。 | いいえ | 20 |
例
ArmsRum.init({
pid: "your app id", // アプリケーションID
endpoint: "your endpoint", // エンドポイント
reportConfig: {
flushTime: 0, // データがすぐにレポートされるように指定します。
maxEventCount: 50, // 一度にレポートされるデータエントリの最大数を指定します。
},
});
sessionConfig パラメーター
パラメーター | タイプ | 説明 | 必須 | デフォルト値 |
sampleRate | Number | サンプリングレート。有効な値:0 ~ 1。 値 0.5 は 50% のサンプリングレートを指定します。 | いいえ | 1 |
maxDuration | Number | セッションの最大期間。単位:ミリ秒。デフォルト値:86400000(24 時間)。 | いいえ | 86400000 |
overtime | Number | セッションのタイムアウト期間。単位:ミリ秒。デフォルト値:3600000(1 時間)。 | いいえ | 3600000 |
storage | String | セッション関連データの保存場所。有効な値:
| いいえ | localStorage |
storage パラメーターは、user.id とセッション情報を保存します。
_arms_uid: ユニークユーザー ID(user.id)。
_arms_session: セマンティックセッション情報。
sessionId: ユニークセッション ID。
sampled: サンプリングがトリガーされたかどうかを指定します。
startTime: セッションの開始タイムスタンプ。
lastTime: セッションが最後にアクティブになったタイムスタンプ。
`${sessionId}-${sampled}-${startTime}-${lastTime}`
例
ArmsRum.init({
pid: "your app id", // アプリケーションID
endpoint: "your endpoint", // エンドポイント
sessionConfig: {
sampleRate: 0.5, // サンプリングレートは 50% です。
maxDuration: 86400000,
overtime: 3600000,
storage: 'cookie',
},
});
collectors パラメーター
SDK は、api や static Resource などのコレクターを使用して、ページモニタリングデータを収集します。
パラメーター | タイプ | 説明 | 必須 | デフォルト値 |
perf | Boolean | Object | アプリケーションのパフォーマンスデータを追跡します。 | いいえ | true |
webvitals | Boolean | Object | アプリケーションの Web Vitals データを追跡します。 | いいえ | true |
api | Boolean | Object | API リクエストを追跡します。 | いいえ | true |
staticResource | ブール値 | オブジェクト | 静的リソース リクエストを追跡します。 | いいえ | true |
コンソールエラー | ブール値 | オブジェクト | コンソールエラーを追跡します。 | いいえ | true |
jsError | ブール値 | オブジェクト | JavaScript エラーを追跡します。 | いいえ | true |
アクション | ブール値 | オブジェクト | ユーザーの動作を追跡します。 | いいえ | true |
例
以下の例では、ユーザーインタラクションデータの収集が無効化されています。
ArmsRum.init({
pid: "your app id", // アプリケーションID
endpoint: "your endpoint", // エンドポイント
collectors: {
action: false, // 操作
},
});
EvaluateApi パラメーター
evaluateApi 関数は、XMLHttpRequest イベントと fetch イベントのカスタム解析を提供します。
パラメーター | タイプ | 説明 |
options | Object | リクエストパラメーター。 url、ヘッダー、データなど。 パラメーターはリクエストメソッドによって異なります。 |
response | Object | リクエストの応答本文。 |
error | Error | エラー。 このパラメーターはオプションであり、リクエストが失敗した場合にのみ使用できます。 |
この関数は非同期で呼び出すことができます。Promise が返されます。以下の表は IApiBaseAttr について説明しています。
パラメータ | タイプ | 説明 | 必須 |
name | 文字列 | API名。通常は統合 URL で、最大 1,000 文字です。 URL が 重要 このフィールドは、parseResourceName 関数によって返されるものよりも優先されます。 | いいえ |
message | 文字列 | API を説明するために使用される短い文字列で、最大 1,000 文字です。 | いいえ |
success | 数値 | リクエストが成功したかどうかを示します。有効な値:
| いいえ |
duration | 数値 | API の合計期間。 | いいえ |
status_code | 数値 | 文字列 | ステータスコード。 | いいえ |
snapshots | 文字列 | スナップショット。 説明 スナップショットには、reqHeaders、params、および resHeaders に関する情報が保存されます。スナップショットを構成するフィールドをカスタマイズできます。スナップショットは、主に例外のトラブルシューティングに使用されます。スナップショットはインデックスを持たないため、クエリまたは集約のフィルター条件として設定することはできません。最大 5,000 文字の文字列のみ可能です。 | いいえ |
例
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 パラメーター
フィルターパラメータは、報告する必要のないリソースまたは例外イベントを除外します。
パラメーター | タイプ | 説明 | 必須 |
resource | MatchOption | MatchOption[] | レポートする必要のない、静的リソースと XMLHttpRequest や fetch などの API に関連するイベントを除外します。 | いいえ |
exception | MatchOption | MatchOption[] | レポートする必要のない例外イベントを除外します。 | いいえ |
MatchOption
type MatchOption = string | RegExp | ((value: string) => boolean); // MatchOption 型は、文字列、正規表現、または文字列を受け取ってブール値を返す関数のいずれかです。
文字列: 指定された値で始まる任意の URL と一致します。例:
https://api.aliyun.com
。この場合、https://api.aliyun.com/v1/resource
が一致します。正規表現: 正規表現と URL を指定します。
function: 関数を使用して URL が一致するかどうかを判断します。true が返された場合、URL は一致します。
入力が MatchOption[] の場合、上記の条件が順番に評価され、いずれかの条件が満たされると除外されます。
例
ArmsRum.init({
pid: "your app id",
endpoint: "your endpoint",
filters: {
// 例外イベントを除外します。
exception: [
'Test error', // 'Test error' で始まるエラーメッセージ。
/^ Script error\.?$/, // 正規表現に一致するエラーメッセージ。
(msg) => {
return msg.includes('example-error');
},
],
// リソースまたは API イベントを除外します。
resource: [
'https://example.com/', // 'https://example.com/' で始まるリソース。
/localhost/i,
(url) => {
return url.includes('example-resource');
},
],
},
});
whiteScreen パラメーター
whiteScreen パラメーターは、Chrome 40 や IE 9+ などのブラウザでのみサポートされています。
パラメーター | タイプ | 説明 |
detectionRules |
| ルールが設定された順序と遅延に基づいてブラウザを検出するための 1 つ以上のルールを指定します。 |
DetectionRule
パラメーター | タイプ | 必須 | 説明 | デフォルト値 |
target |
| はい | 検出対象の要素を指定します。検出は、セレクターに一致する領域で実行されます。 | なし |
test_when |
| はい | 検出をトリガーできるイベントを指定します。有効な値:
| なし |
delay |
| いいえ |
|
|
tester |
| はい | 検出方法を定義します。有効な値:
| なし |
ignoreUrlList |
| いいえ | 検出する必要のないページ URL のリスト。 |
|
configOptions |
| いいえ | |
|
CustomTesterResult
:
type CustomTesterResult = {
// コンテンツが存在するかどうかを示します。`true` はコンテンツが存在することを示します。それ以外の場合は、ホワイトスクリーンが発生しています。
hasContent: boolean;
// エラーメッセージ
message?: string;
// 例外の スナップショット データ
snapshot?: Record<string, any>;
}
ConfigOptions
ConfigOptions パラメーターは、関連付けられた検出方法でのみ使用できます。
パラメーター | タイプ | 関連付けられたメソッド | 説明 | デフォルト値 |
colorRange |
|
| ホワイトスクリーンと見なされる色のセット。ピクセル比較中に、現在のピクセルブロックが「完全に白」かどうかを判断します。フォーマット: |
|
fillColor |
|
| 塗りつぶしの色。スクリーンショット中に、画像、ビデオ、キャンバス、SVG、iframe などの要素にカラーブロックの塗りつぶしが適用されます。塗りつぶしの色は、 |
|
horizontalOffset |
|
| 対象要素の左端に対するホワイトスクリーン検出領域の左端の水平オフセット。対象要素の左側のメニューをフィルタリングするために使用されます。 |
|
verticalOffset |
|
| 対象要素の上端に対するホワイトスクリーン検出領域の上端の垂直オフセット。対象要素の上部のバーをフィルタリングするために使用されます。 |
|
pixels |
|
| ホワイトスクリーン検出に使用されるピクセルブロックのサイズ。各ブロックのサイズは |
|
threshold |
|
| ホワイトスクリーン率のしきい値。ホワイトスクリーン率がしきい値を超えると、ホワイトスクリーンが発生しています。 |
|
dpr |
|
| スナップショット画像の倍率。 |
|
ignoreElements |
|
| 検出のためにスクリーンショットを撮るときに無視される要素の カスケーディングスタイルシート (CSS) セレクター。 |
|
sampleMethod |
|
| サンプリング方法。有効な値:
|
|
checkPoints |
|
| 放射状サンプリングポイントの数。
|
|
whiteBoxElements |
|
| ホワイトスクリーン要素の CSS セレクターのリスト。サンプリングポイントの最上位 DOM 要素がこれらのセレクターのいずれかと一致すると、ホワイトスクリーンカウントが増加します。 |
|
debug |
|
| デバッグモードを有効にするかどうかを指定します。デバッグモードでは、出力された検出情報が開発者ツールに表示されます。 |
|
例
SCREENSHOT
ArmsRum.init({
pid: "your app id", // アプリ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, // 垂直オフセット
},
}],
},
});
SAMPLE
ArmsRum.init({
pid: "your app id", // アプリ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'], // ホワイトスクリーン要素
},
}],
},
});
CUSTOM
ArmsRum.init({
pid: "your app id", // アプリ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 パラメーター
RUM が提供するプロパティは、すべてのイベントに対して設定できます。
パラメータ | タイプ | 説明 | 必須 |
[キー: 文字列] | 文字列 | 数値 |
| いいえ |
evaluateApi、sendCustom、sendException、および sendResource を使用して、イベントにプロパティを追加できます。プロパティは、そのイベントに対してのみ有効です。
グローバル プロパティとイベント プロパティは、保存時にマージされます。イベント プロパティは、グローバル プロパティよりも優先順位が高くなります。マージ時に同じキーが使用されている場合、イベント プロパティはグローバル プロパティを上書きします。キーと値のペアの数は、マージ後 20 を超えることはできません。 20 を超える場合は、キーに基づいてペアがソートされ、超過分は削除されます。
MySQL のインストール
前提条件
ArmsRum.init({
pid: "your app id",
endpoint: "your endpoint",
properties: {
prop_string: 'xx',
prop_number: 2,
// キーまたは値の長さが制限を超える場合、超過部分は削除されます。
more_than_50_key_limit_012345678901234567890123456789: 'yy',
more_than_2000_value_limit: new Array(2003).join('1'),
// 次の無効なキーと値のペアは削除されます。
prop_null: null,
prop_undefined: undefined,
prop_bool: true,
},
});
動的構成
RUM は、SDK コレクションおよびレポート構成の動的配信をサポートしています。これらの動的構成は、アプリケーションの初期ロード中に SDK によってロードされ、SDK の初期化中に設定された静的構成をオーバーライドします。実装は、コンソールと SDK の 2 つの部分で構成されています。
コンソール構成
動的構成を有効にする前に、ARMS コンソールで [アプリケーション設定] > [SDK 構成] に移動して構成する必要があります。
構成とテストが完了したら、Web アプリ をクリックして、リモート OSS サーバーに構成をプッシュして保存します。
SDK 構成
動的構成配信を有効にするには、SDK 初期化構成に remoteConfig フィールドを追加する必要もあります。初期化時に、SDK はこのフィールドに基づいて OSS からリモート構成をフェッチし、イベントトラッキングやデータレポートなどの機能を更新します。
CDN 経由で SDK を初期化する
window.__rum = {
pid: "your app id",
endpoint: "your endpoint",
remoteConfig: {
// Web アプリケーションがホストされているリージョンを設定します。たとえば、シンガポールは ap-southeast-1 です。
region: "cn-hangzhou"
}
};
// CDN 経由で SDK をロードします
<script async src="https://xxid-sdk.rum.aliyuncs.com/v2/browser-sdk.js"></script>
NPM パッケージ経由で SDK を初期化する
import ArmsRum from '@arms/rum-browser';
ArmsRum.init({
pid: "your app id",
endpoint: "your endpoint",
remoteConfig: {
// Web アプリケーションがホストされているリージョンを設定します。たとえば、シンガポールは ap-southeast-1 です。
region: "cn-hangzhou"
}
});
SDK がリモート構成を取得すると、構成をすぐに適用するだけでなく、ローカルにも保存するため、SDK は次回の初期化時にキャッシュされた構成を優先的に使用できます。
注: SDK が NPM パッケージとして、またはバージョンを指定した CDN 経由でインポートされる場合、動的構成を有効にするには、バージョンが 0.0.37 以上
であることを確認してください。
WhiteScreen パラメーター
whiteScreen パラメーターは、白い画面の監視を構成するために使用されます。このパラメーターは、次のプロパティを持つオブジェクトです。
パラメーター | タイプ | 説明 | 必須 |
device | オブジェクト | デバイス情報です。 | いいえ |
os | オブジェクト | システムおよびコンテナー情報です。 | いいえ |
geo | オブジェクト | 地理位置情報です。 | いいえ |
isp | オブジェクト | キャリア情報です。 | いいえ |
net | オブジェクト | ネットワーク情報です。 | いいえ |
上記のフィールドの設定項目の詳細については、「共通プロパティ」セクションの「ログデータ」トピックをご参照ください。
例
ArmsRum.init({
pid: "your app id", // アプリケーションID
endpoint: "your endpoint", // エンドポイント
geo: {
country: 'your custom country info', // カスタムの国情報
city: 'your custom city info', // カスタムの都市情報
},
});
手順
RUM SDK は、カスタムデータの変更とレポート、および SDK 構成の動的な変更を行うための API を提供します。
getConfig
az webapp create コマンドを使用して、リソース グループに Web アプリを作成します。次の例では、<app-name> をグローバルに一意のアプリ名 (有効な文字は a-z、0-9、および -) に置き換えます。ランタイムは PHP|7.4 に設定されています。WordPress は、PHP の新しいバージョンにもデプロイできます。
setConfig
この関数は、SDK の構成を変更するために使用できます。
// 環境タイプを設定します。
ArmsRum.setConfig('env', 'pre');
// 次の内容は上書きされる可能性があります。
const config = ArmsRum.getConfig();
ArmsRum.setConfig({
...config,
version: '1.0.0',
env: 'pre',
});
sendCustom
カスタムイベントを報告するには、type フィールドと name フィールドを指定する必要があります。以下の表は、データ報告に関連するパラメータを説明しています。ビジネスセマンティクスを定義する必要があります。
パラメータ | 型 | 説明 | 必須 |
type | String | データの型。 | はい |
name | String | データの名前。 | はい |
group | String | データが属するグループ。 | いいえ |
value | Number | データの値。 | いいえ |
properties | Object | カスタム プロパティ。 | いいえ |
ArmsRum.sendCustom({
// Required.
type: 'CustomEvnetType1',
name: 'customEventName2',
// Optional.
group: 'customEventGroup3',
value: 111.11,
properties: {
prop_msg: 'custom msg',
prop_num: 1,
},
});
sendException
カスタム例外データを報告するには、name フィールドと message フィールドを指定する必要があります。
パラメーター | タイプ | 説明 | 必須 |
name | String | 例外名。 | はい |
message | String | 例外情報。 | はい |
file | String | 例外が発生したファイル。 | いいえ |
stack | String | 例外に関するスタック情報。 | いいえ |
line | Number | 例外が発生した行。 | いいえ |
column | Number | 例外が発生した列。 | いいえ |
properties | Object | カスタム プロパティ。 | いいえ |
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 | String | リソースの名前。 | はい |
type | String | リソースのタイプ。例: css、javascript、xmlhttprequest、fetch、api、image、font。 | はい |
duration | String | 応答時間。 | はい |
success | Number | リクエストが成功したかどうかを示します。有効な値:
| いいえ |
method | String | リクエストメソッド。有効な値: | いいえ |
status_code | Number | String | 状態コード。 | いいえ |
message | String | 返されたメッセージ。 | いいえ |
url | String | リクエスト URL。 | いいえ |
trace_id | String | トレース ID。 | いいえ |
properties | Object | カスタムプロパティ。 | いいえ |
ArmsRum.sendResource({
// 必須。
name: 'getListByPage',
message: 'success',
duration: 800,
// オプション。
url: 'https://www.aliyun.com/data/getListByPage',
properties: {
prop_msg: 'custom msg',
prop_num: 1,
},
});