Application Real-Time Monitoring Service (ARMS) のミニプログラム向けリアルユーザーモニタリング (RUM) SDK では、お客様のビジネス要件に応じて、多様なカスタム設定を提供しています。このトピックでは、参考のために、ミニプログラムの一般的な SDK 設定について説明します。
SDK 設定
パラメーター | タイプ | 説明 | 必須 | デフォルト値 |
pid | 文字列 | ミニプログラムの ID です。 | はい | - |
endpoint | 文字列 | モニタリングデータの報告先アドレスです。 | はい | - |
env | - | アプリケーション環境:
| いいえ | prod |
version | 文字列 | ミニプログラムのバージョンです。 | いいえ | - |
user | オブジェクト | ユーザー設定です。SDK はデフォルトで user.id を生成します。 | いいえ | - |
collectors | オブジェクト | 各 コレクター の設定です。 | いいえ | - |
beforeReport | 関数 | データをレポートする前に呼び出され、レポートされるデータを変更またはブロックする関数です。 | いいえ | - |
reportConfig | オブジェクト | レポート設定です。詳細については、「reportConfig 設定」をご参照ください。 | いいえ | { flushTime: 3000, maxEventCount: 20 } |
sessionConfig | オブジェクト | セッションのサンプリングレートとタイムアウト設定です。詳細については、「sessionConfig パラメーター」をご参照ください。 | いいえ | - |
longTaskConfig | オブジェクト | スタッターレポートの最大数とスタッターを判定する時間のしきい値の設定です。詳細については、「longTaskConfig 設定」をご参照ください。 | いいえ | { maxEventCount: 5, renderThreshold: 50 } |
parseViewName | 関数 | ビュー名 (view.name) を解析する関数です。入力パラメーターはページの URL です。 | いいえ | - |
parseResourceName | 関数 | リソース名 (resource.name) を解析する関数です。入力パラメーターはリソースの URL です。 | いいえ | - |
evaluateApi | 関数 | API イベントを解析する関数です。詳細については、「evaluateApi パラメーター」をご参照ください。 | いいえ | - |
filters | オブジェクト | イベントフィルタリング設定です。詳細については、「filters パラメーター」をご参照ください。 | いいえ | - |
properties | オブジェクト | すべてのイベントで有効なカスタムプロパティです。詳細については、「properties パラメーター」をご参照ください。 | いいえ | - |
remoteConfig | オブジェクト | 動的設定です。詳細については、「動的設定」をご参照ください。 | いいえ | - |
ユーザー構成
パラメーター | 型 | 説明 | 必須 | デフォルト値 |
id | 文字列 | ユーザー ID です。SDK によって生成されます。通常、この値は変更しません。 | いいえ | SDK によって生成されるデフォルト ID |
tags | 文字列 | タグです。 | いいえ | - |
name | 文字列 | ユーザー名です。 | いいえ | - |
独自のアカウントシステムを使用する場合は、ユーザー ID (user.id) ではなく、ユーザー名 (user.name) またはタグ (user.tags) を変更することを推奨します。ユーザー ID を上書きすると、ユニーク訪問者 (UV) データに影響します。
例
ArmsRum.init({
pid: "your app id",
endpoint: "your endpoint",
user: {
name: getYourUserName(),
tags: getYourTags(),
}
});reportConfig パラメーター
パラメーター | タイプ | 説明 | 必須 | デフォルト値 |
flushTime | Number | データを報告する間隔です。 有効な値: 0~10000。 単位:ミリ秒 (ms)。 | 任意 | 3000 |
maxEventCount | Number | 一度に報告するデータエントリの最大数です。 有効な値: 1~100。 | 任意 | 20 |
例
ArmsRum.init({
pid: "your app id",
endpoint: "your endpoint",
reportConfig: {
flushTime: 0, // データを直ちに報告します。
maxEventCount: 50 // 一度に報告するデータエントリの最大数を指定します。
}
});sessionConfig 設定
パラメーター | タイプ | 説明 | 必須 | デフォルト値 |
sampleRate | Number | サンプリングレート。有効な値:0~1。 0.5 は、50% のサンプリングレートを示します。 | No | 1 |
maxDuration | Number | セッションの最大継続時間。単位:ミリ秒。デフォルト値:86400000 (24 時間)。 | No | 86400000 |
overtime | Number | セッションのタイムアウト時間。単位:ミリ秒。デフォルト値:1800000 (30 分)。 | No | 1800000 |
ユーザー ID とセッション情報は、ミニプログラムのローカルキャッシュに保存されます:
_arms_uid:一意のユーザー ID (user.id)。_arms_session:セマンティックなセッション情報。この値は、ハイフン (-) で区切られた文字列で、形式は${sessionId}-${sampled}-${startTime}-${lastTime}です。各フィールドの説明は次のとおりです。sessionId:一意のセッション ID。sampled:サンプリングがトリガーされたかどうかを示します。startTime:セッションの開始タイムスタンプ。lastTime:セッションが最後にアクティブだったときのタイムスタンプ。
`${sessionId}-${sampled}-${startTime}-${lastTime}`例
ArmsRum.init({
pid: "your app id",
endpoint: "your endpoint",
sessionConfig: {
sampleRate: 0.5, // サンプリングレートを 50% に指定します。
maxDuration: 86400000,
overtime: 3600000,
},
});longTaskConfig 設定
パラメーター | タイプ | 説明 | 必須 | デフォルト値 |
maxEventCount | Number | 単一のページビュー (PV) でカクつきデータをレポートできる最大回数です。 有効な値: [1, 5]。 | いいえ | 5 |
renderThreshold | Number | setData のカクつきを判断する時間しきい値です。最小値は 50 です。単位:ミリ秒。 | いいえ | 50 |
例
ArmsRum.init({
pid: "your app id",
endpoint: "your endpoint",
longTaskConfig: {
maxEventCount: 4, // 単一の PV 内でカクつきデータを最大 4 回レポートします。
renderThreshold: 100, // 100 ミリ秒を超える setData 操作を、カクつきと見なします。
},
});collectors パラメーター
SDK は、api などのコレクターを使用して、ページモニタリングデータを収集します。
パラメーター | タイプ | 説明 | 必須 | デフォルト値 |
api | ブール値 | オブジェクト | API リクエストを追跡します。 | いいえ | true |
jsError | ブール値 | オブジェクト | JavaScript エラーを追跡します。 | いいえ | true |
consoleError | ブール値 | オブジェクト | console.error がスローするエラーを追跡します。 | いいえ | true |
action | ブール値 | オブジェクト | ユーザーの行動を追跡します。 | いいえ | true |
longTask | ブール値 | オブジェクト | ページのスタッタリングを監視します。 | いいえ | true |
例
ユーザーのクリック行動のリスナーを無効にします。
ArmsRum.init({
pid: "your app id",
endpoint: "your endpoint",
collectors: {
action: false,
}
});evaluateApi パラメータ
evaluateApi 関数は、request や httpRequest イベントなど、API イベントのカスタム解析を提供します。
パラメータ | タイプ | 説明 |
options | Object | url、headers、data を含むリクエストパラメータです。パラメータはリクエストメソッドによって異なります。 |
response | Object | リクエストのレスポンスボディです。 |
error | Error | エラーです。このパラメータはオプションで、リクエストが失敗した場合にのみ渡されます。 |
この関数は非同期で呼び出すことができます。Promise<IApiBaseAttr> を返します。次の表で IApiBaseAttr について説明します。
パラメータ | タイプ | 説明 | 必須 |
name | String | API 名。通常は集約 URL で、最大 1,000 文字です。 たとえば、URL が 重要 このパラメータは、parseResourceName 関数の戻り値よりも優先されます。 | No |
message | String | API の情報。API を説明する簡潔な文字列で、最大 1,000 文字です。 | No |
success | Number | リクエストが成功したかどうかを示します:
| No |
duration | Number | API の応答時間です。 | No |
status_code | Number | String | ステータスコードです。 | No |
snapshots | String | API スナップショットです。 説明 スナップショットは、reqHeaders、params、resHeaders に関する情報を保存します。スナップショットを構成するフィールドはカスタマイズできます。スナップショットは主に例外のトラブルシューティングに使用します。スナップショットにはインデックスがないため、クエリまたは集約のフィルター条件として設定できません。最大 5,000 文字の文字列です。 | No |
例
ArmsRum.init({
pid: "your app id",
endpoint: "your endpoint",
evaluateApi: async (options, response, error) => {
const respText = JSON.stringify(response);
// 返されるフィールドはデフォルト値を上書きします。フィールドが返されない場合は、デフォルト値が使用されます。
return {
name: 'my-custom-api',
success: error ? 0 : 1,
snapshots: JSON.stringify({
params: 'page=1&size=10', // 入力パラメータ。
response: respText.substring(0, 2000), // 戻り値。
reqHeaders: '', // リクエストヘッダー。
resHeaders: '' // レスポンスヘッダー。
})
}
}
});filters パラメーター
filters パラメーターは、報告が不要なリソースイベントおよび例外イベントを除外します。
パラメーター | タイプ | 説明 | 必須 |
resource | MatchOption | MatchOption[] | 静的リソースおよび API (XMLHttpRequest/フェッチ) を含む、収集したリソースイベントをフィルターします。 | いいえ |
exception | MatchOption | MatchOption[] | 収集した例外イベントをフィルターします。 | いいえ |
MatchOption
type MatchOption = string | RegExp | ((value: string) => boolean);文字列: フィルターの対象となる値 (URL またはエラーメッセージ) が、指定した文字列で始まる場合に一致します。たとえば、
resourceフィルターでhttps://api.alibabacloud.comを指定すると、https://api.alibabacloud.com/v1/resourceという URL に一致します。RegExp: 指定された正規表現に値 (URL またはエラーメッセージ) が一致するかどうかをテストします。
関数: 値 (URL またはエラーメッセージ) が一致するかどうかを判断する関数を使用します。
trueが返された場合、その値は一致したと判断されます。
入力が 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');
},
],
},
});プロパティパラメーター
RUM が提供するプロパティは、すべてのイベントに設定できます。
パラメーター | タイプ | 説明 | 必須 |
[key: string] | 文字列 | Number |
| 任意 |
evaluateApi、sendCustom、sendException、および sendResource を使用して、イベントにプロパティを追加できます。プロパティはそのイベントにのみ有効になります。
グローバルプロパティとイベントプロパティは、保存時にマージされます。イベントプロパティはグローバルプロパティよりも優先度が高くなります。イベントプロパティのキーがグローバルプロパティのキーと同じ場合、イベントプロパティがグローバルプロパティを上書きします。マージ後のキーと値のペアの数は 20 個を超えることはできません。20 個を超えた場合、ペアはキーに基づいてソートされ、超過分は削除されます。
例
グローバルに設定されたプロパティは、報告されるすべてのイベントに付加されます。
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 つの部分で実装されています。
コンソール設定
まず、コンソールで設定を構成する必要があります。[Application Settings] > [SDK Configuration] に移動します。設定を完了してテストした後、[Confirm and Update Dynamic Configuration] をクリックします。これにより、設定がリモート OSS エンドポイントにプッシュされて保存されます。
SDK 設定
動的設定の配信をサポートするには、SDK 初期化設定に remoteConfig フィールドを追加します。初期化時に、SDK はこのフィールドを使用して OSS からリモート設定を取得し、取得した設定に基づいてプローブやレポーティングなどの機能を更新します。
import ArmsRum from '@arms/rum-miniapp';
ArmsRum.init({
pid: "your app id",
endpoint: "your endpoint",
remoteConfig: {
// Web アプリケーションが配置されているリージョン。例: Singapore は ap-southeast-1
region: "cn-hangzhou"
}
});
SDK がリモート設定を取得すると、すぐに機能を更新し、設定をローカルキャッシュに保存します。これにより、次回の初期化時に SDK がローカルにキャッシュされた設定を優先的に使用できるようになります。
SDK バージョンは 0.0.37 以降である必要があります。
その他の設定
RUM SDK では、IP アドレスとユーザーエージェントに基づいて解決される共通のプロパティを設定できます。事前に設定されたパラメーターは、自動的に解決されるパラメーターよりも優先されます。
パラメーター | タイプ | 説明 | 必須 |
device | Object | デバイス情報です。 | いいえ |
os | Object | OS 情報です。 | いいえ |
geo | Object | 行政区分情報です。 | いいえ |
isp | Object | ISP 情報です。 | いいえ |
net | Object | ネットワーク情報です。 | いいえ |
前述のパラメーターに関する設定項目の詳細については、「共通属性」をご参照ください。
例
ArmsRum.init({
pid: "your app id",
endpoint: "your endpoint",
geo: {
country: 'your custom country info',
city: 'your custom city info',
},
});SDK API
SDK は、カスタムデータの変更や報告、SDK 設定を動的に変更するための API を提供します。
getConfig
この関数で SDK 設定を取得できます。
setConfig
SDK 設定を変更できます。
// 特定のキーを設定
ArmsRum.setConfig('env', 'pre');
// 以下の設定を上書き
const config = ArmsRum.getConfig();
ArmsRum.setConfig({
...config,
version: '1.0.0',
env: 'pre',
});
sendCustom
カスタムデータを報告するには、type と name パラメーターを指定する必要があります。データ報告に関連するパラメーターを次の表に示します。ビジネスセマンティクスを定義する必要があります。
パラメーター | タイプ | 説明 | 必須 |
type | 文字列 | タイプ。 | はい |
name | 文字列 | 名前。 | はい |
group | 文字列 | グループ。 | いいえ |
value | Number | 値。 | いいえ |
properties | オブジェクト | カスタムプロパティ。 | いいえ |
ArmsRum.sendCustom({
// 必須
type: 'CustomEvnetType1',
name: 'customEventName2',
// オプション
group: 'customEventGroup3',
value: 111.11,
properties: {
prop_msg: 'custom msg',
prop_num: 1,
},
});sendException
カスタム例外データを報告するには、name と message パラメーターを指定する必要があります。
パラメーター | タイプ | 説明 | 必須 |
name | 文字列 | 例外名。 | はい |
message | 文字列 | 例外情報。 | はい |
file | 文字列 | 例外が発生したファイル。 | いいえ |
stack | 文字列 | 例外に関するスタック情報。 | いいえ |
line | Number | 例外が発生した行番号。 | いいえ |
column | Number | 例外が発生した列番号。 | いいえ |
properties | オブジェクト | カスタムプロパティ。 | いいえ |
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 パラメーターを指定する必要があります。
パラメーター | タイプ | 説明 | 必須 |
name | 文字列 | リソース名。 | はい |
type | 文字列 | リソースタイプ。例: | はい |
duration | Number | リクエストの所要時間。 | はい |
success | Number | リクエストが成功したかどうかを示します。
| いいえ |
method | 文字列 | リクエストメソッド。 | いいえ |
status_code | Number | 文字列 | リクエストのステータスコード。 | いいえ |
message | 文字列 | リクエストメッセージ。 | いいえ |
url | 文字列 | リクエストアドレス。 | いいえ |
trace_id | 文字列 | トレース ID。 | いいえ |
properties | オブジェクト | カスタムプロパティ。 | いいえ |
ArmsRum.sendResource({
// 必須
name: 'getListByPage',
type: 'api',
duration: 800,
// オプション
message: 'success',
url: 'https://www.aliyun.com/data/getListByPage',
properties: {
prop_msg: 'custom msg',
prop_num: 1,
},
});