Application Real-Time Monitoring Service (ARMS) のミニゲーム用 Real User Monitoring (RUM) SDK は、ビジネス要件に合わせて幅広いカスタム構成を提供します。このトピックでは、参考のために、ミニゲームの一般的な SDK 構成について説明します。
SDK パラメーター
パラメーター | タイプ | 説明 | 必須 | デフォルト値 |
pid | 文字列 | ミニゲーム ID。 | はい | - |
endpoint | 文字列 | モニタリングデータのレポート先アドレス。 | はい | - |
env | 文字列 | ミニゲームの環境。有効な値:
| いいえ | prod |
version | 文字列 | ミニゲームのバージョン。 | いいえ | - |
user | オブジェクト | ユーザー設定。デフォルトでは、ユーザー ID(user.id)は SDK によって生成されます。 | いいえ | - |
beforeReport | 関数 | レポートされるデータを変更またはブロックするために、データのレポート前に呼び出される関数。 | いいえ | - |
reportConfig | オブジェクト | データレポート設定。詳細については、「reportConfig パラメーター」をご参照ください。 | いいえ | - |
sessionConfig | オブジェクト | セッションのサンプリングレートとタイムアウト設定。詳細については、「sessionConfig パラメーター」をご参照ください。 | いいえ | - |
collectors | オブジェクト | コレクター設定。詳細については、「コレクターパラメーター」をご参照ください。 | いいえ | - |
parseResourceName | 関数 | リソース名(resource.name)の解析に使用する関数。入力パラメーターはリソースの URL です。 | いいえ | - |
evaluateApi | 関数 | API イベントの解析に使用する関数。詳細については、「evaluateApi パラメーター」をご参照ください。 | いいえ | - |
filters | オブジェクト | イベントフィルタリング設定。詳細については、フィルター構成を参照してください。 | いいえ | - |
properties | オブジェクト | すべてのイベントに有効なカスタムプロパティ。詳細については、「properties 構成」をご参照ください。 | いいえ | - |
ユーザーパラメーター
パラメーター | タイプ | 説明 | 必須 | デフォルト値 |
id | String | ユーザー ID。SDK によって生成され、変更できません。 | いいえ | デフォルトで SDK によって生成されます |
tags | String | タグ。 | いいえ | - |
name | String | ユーザー名。 | いいえ | - |
例
独自のアカウントシステムを使用する場合、ユーザー ID (user.id) ではなく、ユーザー名 (user.name) またはタグ (user.tags) を変更することをお勧めします。ユーザー ID を上書きすると、ユニークビジター (UV) データに影響します。
armsRum.init({
pid: "your app id",
endpoint: "your endpoint",
user: {
name: 'your user.name',
tags: 'your user.tags',
},
});
reportConfig パラメーター
パラメーター | タイプ | 説明 | 必須 | デフォルト値 |
flushTime | 数値 | データがレポートされる間隔。 有効な値: 0 ~ 10000。 | いいえ | 3000 |
maxEventCount | 数値 | 一度にレポートされるデータエントリの最大数。 有効な値: 1 ~ 100。 | いいえ | 20 |
例
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 | 数値 | セッションのタイムアウト期間。単位:ミリ秒。デフォルト値: 3600000 ( 1 時間)。 | いいえ | 3600000 |
パラメーター | タイプ | 説明 | 必須 | デフォルト値 |
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 や例外などのコレクターを使用して、ミニゲームのモニタリングデータを収集します。
パラメータ | 種類 | 説明 | 必須 | デフォルト値 |
perf | ブール値 | オブジェクト | ミニゲームのパフォーマンスデータを追跡します。 | いいえ | true |
api | ブール値 | オブジェクト | API リクエストを追跡します。 | いいえ | true |
staticResource | ブール値 | オブジェクト | 静的リソースのリクエストを追跡します。 | いいえ | true |
consoleError | ブール値 | オブジェクト | コンソールエラーを追跡します。 | いいえ | true |
jsError | ブール値 | オブジェクト | JavaScript エラーを追跡します。 | いいえ | true |
action | ブール値 | オブジェクト | ユーザーの動作を追跡します。 | いいえ | true |
例
次の例では、ユーザー操作データの収集は無効になっています。
armsRum.init({
pid: "your app id", // アプリID
endpoint: "your endpoint", // エンドポイント
collectors: {
api: false, // API 収集を無効化
},
});
evaluateApi パラメーター
evaluateApi 関数は、API リクエストイベントのカスタム解析を提供します。
パラメーター | タイプ | 説明 |
options | Object | リクエストパラメーター。 url、ヘッダー、データなど。パラメーターはリクエストメソッドによって異なります。 |
response | Object | リクエストのレスポンス本文。 |
error | Error | エラー。このパラメーターはオプションであり、リクエストが失敗した場合にのみ使用できます。 |
この関数は非同期で呼び出すことができます。 Promise<IApiBaseAttr> が返されます。次の表は IApiBaseAttr について説明しています。
パラメーター | タイプ | 説明 | 必須 |
name | String | API 名。通常は収束された URL で、最大 1,000 文字です。 たとえば、URL が 重要 このパラメーターは、parseResourceName 関数によって返されるものよりも優先されます。 | いいえ |
message | String | API 情報。 1,000 文字以内の API を説明する短い文字列です。 | いいえ |
success | Number | リクエストが成功したかどうかを示します。有効な値:
| いいえ |
duration | Number | リクエストの合計時間。 | |
status_code | Number | string | 状態コード。 | いいえ |
snapshots | String | スナップショット。 説明 スナップショットには、リクエストヘッダー、パラメーター、レスポンスヘッダーに関する情報が保存されます。スナップショットを構成するフィールドをカスタマイズできます。スナップショットは、主に例外のトラブルシューティングに使用されます。スナップショットはインデックスを持たないため、クエリまたは集約のフィルター条件として設定できません。最大 5,000 文字の文字列のみ可能です。 | いいえ |
例
armsRum.init({
pid: "your app id",
endpoint: "your endpoint",
evaluateApi: async (options, response, error) => {
// 返されたフィールドはデフォルトのコンテンツを上書きします。フィールドが返されない場合は、デフォルトのコンテンツが使用されます。
return {
name: 'my-custom-api',
success: error ? 0 : 1,
// オプション。
snapshots: JSON.stringify({
params: 'page=1&size=10', // 入力パラメーター。
response: '', // 戻り値。
reqHeaders: '', // リクエストヘッダー。
resHeaders: '', // レスポンスヘッダー。
}),
properties: {
prop_msg: 'custom msg',
prop_num: 1,
},
};
},
});
フィルター パラメーター
フィルター パラメーターは、レポートする必要のないリソース イベントと例外イベントを除外します。
パラメータ | 種類 | 説明 | 必須 |
resource | MatchOption | MatchOption[] | レポートする必要のない静的リソースと API(XMLHttpRequest や fetch など)に関連するイベントを除外します。 | いいえ |
exception | MatchOption | MatchOption[] | レポートする必要のない例外イベントを除外します。 | いいえ |
MatchOption
type MatchOption = string | RegExp | ((value: string, error?: Error) => boolean);string: 指定された値で始まる URL と一致します。たとえば、
https://api.aliyun.comはhttps://api.aliyun.com/v1/resourceと一致します。RegExp: 正規表現と URL を指定します。
function: 関数を使用して、URL が一致するかどうかを判断します。true が返された場合、URL は一致します。例外をフィルタリングする場合、2 番目のパラメーター(Error オブジェクト)が渡されます。
入力が MatchOption[] の場合、上記の条件が順番に評価され、いずれかの条件が満たされると除外されます。
例
armsRum.init({
pid: "your app id",
endpoint: "your endpoint",
filters: {
// 例外イベントを除外する
exception: [
'Test error', // 'Test error' で始まるエラーメッセージをフィルタリングします。
/^Script error\.?$/, // 正規表現を指定します。
(msg, error) => {
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,
},
});
その他の パラメーター
SDK では、IP アドレスと UserAgent に基づいて解決される共通プロパティを設定できます。事前に設定されたパラメーターは、自動的に解決されたパラメーターよりも優先順位が高くなります。
パラメータ | 種類 | 説明 | 必須 |
device | Object | デバイス情報。 | いいえ |
os | Object | システムとコンテナーの情報。 | いいえ |
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 | String | タイプ。 | はい |
name | String | 名前。 | はい |
group | String | グループ。 | いいえ |
value | Number | 値。 | いいえ |
properties | Object | カスタム プロパティ。 | いいえ |
armsRum.sendCustom({
// 必須。
type: 'CustomEvnetType1',
name: 'customEventName2',
// オプション。
group: 'customEventGroup3',
value: 111.11,
properties: {
prop_msg: 'custom msg',
prop_num: 1,
},
});
sendException
カスタム例外データをレポートするには、名前とメッセージ パラメーターを指定する必要があります。
パラメータ | タイプ | 説明 | 必須 |
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,
},
});