Application Real-Time Monitoring Service (ARMS) のミニプログラム用 Real User Monitoring (RUM) SDK は、ビジネス要件に合わせて幅広いカスタム構成を提供します。このトピックでは、参照用にミニプログラムの一般的な SDK 構成について説明します。
SDK パラメーター
パラメーター | タイプ | 説明 | 必須 | デフォルト値 |
pid | 文字列 | ミニプログラム ID。 | はい | - |
endpoint | 文字列 | モニタリングデータのレポート先アドレス。 | はい | - |
env | - | ミニプログラムの環境:
| いいえ | prod |
version | 文字列 | ミニプログラムのバージョン。 | いいえ | - |
user | オブジェクト | ユーザー設定。デフォルトでは、ユーザー ID(user.id)は SDK によって生成されます。 | いいえ | デフォルトでは user.id は SDK によって生成されます |
collectors | オブジェクト | コレクター設定。 | いいえ | - |
beforeReport | 関数 | レポートされるデータを変更またはブロックするために、データのレポート前に呼び出される関数。 | いいえ | noop |
reportConfig | オブジェクト | データレポート設定。 | いいえ | { flushTime: 3000, maxEventCount: 20 } |
sessionConfig | オブジェクト | セッションのサンプリングレートとタイムアウト設定。詳細については、「SessionConfig パラメーター」をご参照ください。 | いいえ | - |
parseViewName | 関数 | ビュー名 (view.name) を解析するために使用される関数。入力パラメーターはページの URL です。 | いいえ | - |
parseResourceName | 関数 | リソース名 (resource.name) を解析するために使用される関数。入力パラメーターはリソースの URL です。 | いいえ | - |
evaluateApi | 関数 | API イベントを解析するために使用される関数。詳細については、「EvaluateAPI パラメーター」をご参照ください。 | いいえ | - |
filters | オブジェクト | イベントフィルタリング設定。詳細については、「filters パラメーター」をご参照ください。 | いいえ | - |
properties | オブジェクト | すべてのイベントに有効なカスタムプロパティ。詳細については、「properties パラメーター」をご参照ください。 | いいえ | - |
ユーザーパラメーター
パラメーター | タイプ | 説明 | 必須 | デフォルト値 |
id | String | ユーザー ID。SDK によって生成され、変更できません。 | いいえ | SDK によって生成されるデフォルト ID |
tags | String | タグ。 | いいえ | - |
name | String | ユーザー名。 | いいえ | - |
例
独自のアカウントシステムを使用する場合は、ユーザー 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 | 数値 | データがレポートされる間隔 有効な値:0 ~ 10000。 | いいえ | 3000 |
maxEventCount | 数値 | 一度にレポートされるデータエントリの最大数 有効な値:1 ~ 100。 | いいえ | 20 |
例
ユーザー ID を上書きすると、UV データに影響します。
ArmsRum.init({
pid: "your app id",
endpoint: "your endpoint",
reportConfig: {
flushTime: 0, // データが即時レポートされるように指定します
maxEventCount: 50 // 一度にレポートされるデータエントリの最大数を指定します
}
});SessionConfig パラメーター
パラメーター | 型 | 説明 | 必須 | デフォルト値 |
sampleRate | 数値 | サンプリングレート。有効な値: 0 ~ 1。 0.5 は 50% のサンプリングレートを示します。 | いいえ | 1 |
maxDuration | 数値 | セッションの最大期間。単位:ミリ秒。デフォルト値: 86400000 (24 時間)。 | いいえ | 86400000 |
overtime | 数値 | セッションのタイムアウト期間。単位:ミリ秒。デフォルト値: 1800000 (30 分)。 | いいえ | 1800000 |
ユーザー ID とセッション情報は、ミニプログラムのローカルキャッシュに保存されます。
_arms_uid: 一意のユーザー ID (user.id)。
_arms_session: セマンティックセッション情報。
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,
},
});ユーザーパラメーター
SDK は、api や静的リソースなどのコレクターを使用して、ページ モニタリング データを収集します。
パラメーター | 種類 | 説明 | 必須 | 既定値 |
api | ブール値 | オブジェクト | API リクエストを追跡します。 | いいえ | true |
jsError | ブール値 | オブジェクト | JavaScript エラーを追跡します。 | いいえ | true |
コンソールエラー | ブール値 | オブジェクト | console.error によってスローされたエラーを追跡します。 | いいえ | true |
アクション | ブール値 | オブジェクト | ユーザーの動作を追跡します。 | いいえ | true |
例
次の例では、ユーザー操作データの収集は無効になっています。
ArmsRum.init({
pid: "your app id",
endpoint: "your endpoint",
collectors: {
action: false,
}
});EvaluateAPI パラメーター
evaluateApi 関数は、request イベントと httpRequest イベントのカスタム解析を提供します。
パラメーター | タイプ | 説明 |
options | Object | リクエストパラメーター。 url、ヘッダー、データなど。パラメーターはリクエストメソッドによって異なります。 |
response | Object | リクエストのレスポンス本文。 |
error | Error | このパラメーターはオプションであり、リクエストが失敗した場合にのみ渡されます。 |
この関数は非同期的に呼び出すことができます。Promise<IApiBaseAttr> が返されます。次の表に IApiBaseAttr について説明します。
パラメーター | タイプ | 説明 | 必須 |
name | String | API 名。通常は集約された URL で、最大 1,000 文字です。 たとえば、URL が 重要 このフィールドは、parseResourceName 関数によって返されるものよりも優先されます。 | いいえ |
message | String | API を説明する短い文字列。最大 1,000 文字です。 | いいえ |
success | Number | リクエストが成功したかどうかを示します。
| いいえ |
duration | Number | API の合計期間。 | いいえ |
status_code | Number | String | 状態コード。 | いいえ |
snapshots | String | スナップショット。 説明 スナップショットには、reqHeaders、params、resHeaders に関する情報が保存されます。スナップショットを構成するフィールドをカスタマイズできます。スナップショットは、主に例外のトラブルシューティングに使用されます。スナップショットはインデックスを持たないため、クエリまたは集約のフィルター条件として構成することはできません。最大 5,000 文字の文字列のみ可能です。 | いいえ |
例
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: '' // レスポンスヘッダー
})
}
}
});フィルター パラメーター
フィルター パラメーターは、レポートする必要のないリソース イベントと例外イベントを除外します。
パラメーター | タイプ | 説明 | 必須 |
resource | MatchOption | MatchOption[] | レポートする必要のない、静的リソースと XMLHttpRequest や fetch などの API に関連するイベントを除外します。 | いいえ |
exception | MatchOption | 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 が返された場合、URL は一致します。
入力が MatchOption[] の場合、上記の条件が順番に評価され、いずれかの条件が満たされた場合、除外されます。
例
ArmsRum.init({
pid: "your app id",
endpoint: "your endpoint",
filters: {
// 例外イベントを除外する
exception: [
'Test error', // 'Test error' で始まるエラー メッセージ
/^Script error\.?$/, // error.message と一致する正規表現
(msg) => {
return msg.includes('example-error');
},
],
// リソースまたは API イベントを除外する
resource: [
'https://example.com/', // 'https://example.com/' で始まるリソース
/localhost/i,
(url) => {
return url.includes('example-resource');
},
],
},
});properties パラメーター
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 では、IP アドレスと UserAgent に基づいて解決される共通プロパティを設定できます。事前に設定されたフィールドは、自動的に解決されたフィールドよりも優先順位が高くなります。
パラメーター | タイプ | 説明 | 必須 |
device | Object | デバイス情報。 | いいえ |
os | Object | システムとコンテナーの情報。 | いいえ |
geo | Object | 地理位置情報。 | いいえ |
isp | Object | キャリア情報。 | いいえ |
net | Object | ネットワーク情報。 | いいえ |
上記のフィールドの設定項目の詳細については、「共通属性」をご参照ください。
例
ArmsRum.init({
pid: "your app id",
endpoint: "your endpoint",
geo: {
country: 'your custom country info',
city: 'your custom city info',
},
});ReportConfig パラメーター
RUM SDK は、カスタムデータの変更とレポート、および SDK 構成の動的な変更を行うための API を提供します。
構成の取得
この関数は、SDK の構成を取得するために使用できます。
Setconfig
この関数は、SDK の構成を変更するために使用できます。
// 主要な設定を指定します
ArmsRum.setConfig('env', 'pre');
// 次の内容は上書きされる可能性があります
const config = ArmsRum.getConfig();
ArmsRum.setConfig({
...config,
version: '1.0.0',
env: 'pre',
});
Sendcustom
カスタム データをレポートするには、タイプ フィールドと名前フィールドを指定する必要があります。次の表は、データ レポートに関連するパラメーターについて説明しています。ビジネス セマンティクスを定義する必要があります。
パラメーター | タイプ | 説明 | 必須 | デフォルト値 |
type | String | タイプ | はい | - |
name | String | 名前 | はい | - |
group | String | グループ | いいえ | - |
value | Number | 説明 | いいえ | - |
ArmsRum.sendCustom({
type: 'CustomEvnetType1',
name: 'customEventName2',
group: 'customEventGroup3',
value: 111.11
});SendException
カスタム例外データをレポートするには、名前フィールドとメッセージフィールドを指定する必要があります。
パラメータ | タイプ | 説明 | 必須 | デフォルト値 |
name | String | 例外名。 | はい | - |
message | String | 例外情報。 | はい | - |
file | String | 例外が発生したファイル。 | いいえ | - |
stack | String | 例外に関するスタック情報。 | いいえ | - |
line | Number | 例外が発生した行。 | いいえ | - |
column | Number | 例外が発生した列。 | いいえ | - |
ArmsRUM.sendException({
// このパラメーターは必須です
name: 'customErrorName',
message: 'カスタム エラー メッセージ',
// このパラメーターは任意です
file: 'カスタム例外ファイル名',
stack: 'カスタム例外 error.stack',
line: 1,
column: 2
});Sendresource
カスタム リソース データをレポートするには、名前、種類、および期間フィールドを指定する必要があります。
パラメータ | 型 | 説明 | 必須 | デフォルト値 |
name | String | リソース名。 | はい | - |
type | String | リソースの型。例: script、api、image。 | はい | - |
duration | String | 応答時間。 | はい | - |
success | Number | リクエストが成功したかどうかを示します。
| いいえ | - |
method | String | リクエスト メソッド。 | いいえ | - |
status_code | Number | String | 状態コード。 | いいえ | - |
message | String | 返されたメッセージ。 | いいえ | - |
url | String | リクエスト URL。 | いいえ | - |
trace_id | String | トレース ID。 | いいえ | - |
ArmsRum.sendResource({
// このパラメーターは必須です
name: 'getListByPage',
message: 'success',
duration: 800,
// このパラメーターは任意です
url: 'https://www.aliyun.com/data/getListByPage',
});