ARMS ブラウザ監視 SDK は、データ収集とレポートを制御する設定項目を提供します。これらの項目を使用して、URL、API、JavaScript エラーをフィルタリングし、URL を正規化してページを集約し、サンプリングによってデータ量を削減します。
設定項目の設定方法
2 つの方法があります。
初期化時 -- ページにブラウザ監視エージェントをインストールする際に、
configにパラメーターを追加します。初期化後 --
__bl.setConfig(next)を呼び出して、ランタイムで設定を更新します。
初期化の例
このスニペットは、必須の pid と 3 つのオプションパラメーター (enableSPA、sendResource、release) を使用してエージェントをインストールします。
<script>
!(function(c,b,d,a){c[a]||(c[a]={});c[a].config={
pid: "<your-pid>",
enableSPA: true,
sendResource: true,
release: "1.0.0"
};
with(b)with(body)with(insertBefore(createElement("script"),firstChild))setAttribute("crossorigin","",src=d)
})(window,document,"https://retcode.alicdn.com/retcode/bl.js","__bl");
</script>setConfig によるランタイム更新
ページのロード後に設定を変更するには、__bl.setConfig(next) を呼び出します。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| next | Object | はい | 更新する設定項目のキーと値のペア |
__bl.setConfig({
uid: "user-12345",
tag: "checkout-flow"
});次のパラメーターは初期化時にのみ有効になり、setConfig では変更できません:disableHook および release。
設定リファレンス
次の表は、機能別にグループ化されたすべての設定項目の一覧です。各項目については、以降のセクションで詳しく説明します。
アイデンティティ
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
| pid | String | なし | プロジェクト ID (必須) |
| uid | String | 自動生成 | ユーザー識別子 |
| setUsername | Function | なし | セッション追跡のためにユーザー名を返すコールバック |
ページと URL
| パラメーター | 型 | デフォルト | 説明 | ||||
|---|---|---|---|---|---|---|---|
| page | String | host + pathname | カスタムページ名 | ||||
| tag | String | なし | すべてのログエントリに付加されるカスタムタグ | ||||
| ignoreUrlCase | Boolean | true | ページ URL のマッチングで大文字と小文字を区別しない | ||||
| urlHelper | String \ | RegExp \ | Object \ | Function \ | Array | 下記参照 | 集約のためにページ URL を正規化する |
| apiHelper | String \ | RegExp \ | Object \ | Function \ | Array | 下記参照 | 集約のために API URL を正規化する |
SPA サポート
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
| enableSPA | Boolean | false | 各ルート変更時に PV を報告する |
| parseHash | Function | 下記参照 | URL ハッシュをページ名に変換する |
データフィルタリング
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
| ignore | Object | 下記参照 | 一致する URL、API、またはエラーのログ報告を抑制する |
| parseResponse | Function | 下記参照 | API 応答から msg と code を抽出する |
サンプリング
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
| sample | Integer (1--100) | 1 | パフォーマンスログと成功した API ログのサンプリングレート |
| pvSample | Integer (1--100) | 1 | PV ログのサンプリングレート |
パフォーマンスとリソースの追跡
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
| sendResource | Boolean | false | ページにロードされた静的リソースを報告する |
| useFmp | Boolean | false | First Meaningful Paint (FMP) データを収集する |
| autoSendPerf | Boolean | true | パフォーマンスログを自動的に送信する |
| disableHook | Boolean | false | AJAX リクエストリスナーを無効にする |
トレースと診断
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
| enableLinkTrace | Boolean | false | フロントエンドからバックエンドへのトレースを有効にする |
| behavior | Boolean | ブラウザ:true、ミニプログラム:false | エラー発生前のユーザーアクションを記録する |
アプリケーションのメタデータ
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
| release | String | undefined | アプリケーションのバージョン文字列 |
| environment | String | prod | デプロイ環境ラベル |
| disabled | Boolean | false | すべてのログ報告を無効にする |
カスタムフィールド
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
| c1, c2, c3 | String | なし | すべてのログエントリに付加されるカスタムフィールド |
ID
pid
| プロパティ | 値 |
|---|---|
| 型 | String |
| 必須 | はい |
| デフォルト | なし |
一意のプロジェクト ID で、ARMS がサイトを作成する際に自動的に生成されます。
uid
| プロパティ | 値 |
|---|---|
| 型 | String |
| 必須 | はい (Weex)、いいえ (その他のシナリオ) |
| デフォルト | Weex:なし、その他:SDK によって自動生成され、6 か月ごとに更新 |
個人ユーザーの検索と追跡のためのユーザー識別子です。カスタム値を指定するか、SDK に自動的に生成させることができます。
__bl.setConfig({
uid: "user-12345"
});ミニプログラム監視では、setConfig は uid を変更できません。代わりに setUsername を使用してください。
setUsername
| プロパティ | 値 |
|---|---|
| 型 | Function |
| 必須 | いいえ |
| デフォルト | なし |
ユーザー名文字列を返すコールバックです。設定すると、エンドツーエンドのセッション追跡と、トラブルシューティングのためのユーザー名によるセッション検索が可能になります。
__bl.setConfig({
setUsername: function () {
return "username_xxx";
}
});動作:
ページのロード時にユーザー名が利用できない場合は、プレースホルダーではなく
nullを返します。SDK はログ送信時に再度setUsernameを呼び出します。プレースホルダーを返すと、その値が使用され、setUsernameは再度呼び出されません。setUsernameは、ランタイムごとに 1 つの割り当てのみを受け付けます。再割り当てするには、アプリケーションを再起動してください。
ページと URL の設定
page
| プロパティ | 値 |
|---|---|
| 型 | String |
| 必須 | いいえ |
| デフォルト | 現在の URL のホスト + パス名 |
自動検出されたページ名をカスタム値でオーバーライドします。
ignoreErrors プロパティを使用して、報告したいエラーをフィルタリングできます。詳細については、「ignore」をご参照ください。
tag
| プロパティ | 値 |
|---|---|
| 型 | String |
| 必須 | いいえ |
| デフォルト | なし |
すべてのログエントリに付加されるカスタムタグです。ARMS コンソールでログを分類またはフィルタリングするためにタグを使用します。
ignoreUrlCase
| プロパティ | 値 |
|---|---|
| 型 | Boolean |
| 必須 | いいえ |
| デフォルト | true |
true に設定すると、ページ URL のマッチングで大文字と小文字が区別されません。
urlHelper
| プロパティ | 値 | ||||
|---|---|---|---|---|---|
| 型 | String \ | RegExp \ | Object\ | Function \ | Array |
| 必須 | いいえ | ||||
| デフォルト | 下記参照 |
動的セグメントを削除してページ URL を正規化し、類似のページが 1 つのエントリに集約されるようにします。非推奨の ignoreUrlPath パラメーターを置き換えます。
URL を正規化する理由:example.com/projects/123456 のような URL は、プロジェクト ID ごとに一意のページ名を生成します。urlHelper は動的セグメントを削除するため、すべてのプロジェクトページが example.com/projects/** として集約されます。
デフォルト値:
[
// 2〜20文字の数字シーケンスを ** に置き換える
{rule: /\/([a-z\-_]+)?\d{2,20}/g, target: '/$1**'},
// 末尾のスラッシュを削除する
/\/$/
]サポートされている値の型:
| 型 | 動作 |
|---|---|
| String または RegExp | 一致した部分文字列は削除されます |
Object {rule, target} | 次のように動作します。String.replace(rule, target) |
| Function | 元の URL を受け取り、ページ名を返します |
| Array | 複数のルールを順番に適用します。各要素は上記のいずれかの型にすることができます |
ignoreUrlPathとurlHelperの両方が設定されている場合、urlHelperが優先されます。urlHelperは、ページ URL が自動検出された場合にのみ適用されます。setPage、setConfig、またはenableSPA: trueがページ名をオーバーライドする場合は効果がありません。詳細については、「SDK メソッド」をご参照ください。
apiHelper
| プロパティ | 値 | ||||
|---|---|---|---|---|---|
| 型 | String \ | RegExp \ | Object\ | Function \ | Array |
| 必須 | いいえ | ||||
| デフォルト | {rule: /(\w+)\/\d{2,}/g, target: '$1'} |
urlHelper がページ URL を正規化するのと同じ方法で、動的セグメントを削除して API URL を正規化します。非推奨の ignoreApiPath パラメーターを置き換えます。
ignoreApiPath と apiHelper の両方が設定されている場合、apiHelper が優先されます。
API データでのクエリパラメーターの報告:クエリパラメーター (例:https://arms.console.aliyun.com/apm?pid=fr6fbgbeot の pid) を含めるには、ignore パラメーターで自動報告を無効にし、api() を手動で呼び出します。詳細については、「api()」をご参照ください。
SPA サポート
enableSPA
| プロパティ | 値 |
|---|---|
| 型 | Boolean |
| 必須 | いいえ (Web のみ) |
| デフォルト | false |
hashchange イベントをリッスンし、各ルート変更時に新しいページビュー (PV) を報告します。シングルページアプリケーション (SPA) ではこれを有効にしてください。
parseHash
| プロパティ | 値 |
|---|---|
| 型 | Function |
| 必須 | いいえ |
| デフォルト | 下記参照 |
enableSPA と一緒に使用します。enableSPA が true で hashchange イベントが発生すると、parseHash は URL ハッシュを Page フィールドのページ名に変換します。詳細については、「SPA のページデータ報告」をご参照ください。
デフォルト値:
function (hash) {
var page = hash ? hash.replace(/^#/, '').replace(/\?.*$/, '') : '';
return page || '[index]';
}通常、デフォルトで十分です。ハッシュをカスタムページ名にマッピングするには、この関数をオーバーライドします。
var PAGE_MAP = {
'/': 'Homepage',
'/contact': 'Contact us',
'/list': 'Data list'
};
window.addEventListener('load', function (e) {
__bl.setConfig({
parseHash: function (hash) {
var key = hash.replace(/\?.*$/, '');
return PAGE_MAP[key] || 'Unknown page';
}
});
});データフィルタリング
ignore
| プロパティ | 値 |
|---|---|
| 型 | Object |
| 必須 | いいえ |
| デフォルト | {ignoreUrls: [], ignoreApis: [], ignoreErrors: [], ignoreResErrors: []} |
指定されたルールに一致する URL、API、JavaScript エラー、またはリソースエラーのログ報告を抑制します。4 つのサブプロパティが含まれています。
各サブプロパティは、String、RegExp、Function、またはこれらの型の配列を受け付けます。
ignoreUrls
一致するページ URL からのログを抑制します。
__bl.setConfig({
ignore: {
ignoreUrls: [
'http://host1/', // 完全な文字列一致
/.+?host2.+/, // 正規表現一致
function(str) { // カスタム関数
if (str && str.indexOf('host3') >= 0) {
return true; // 抑制
}
return false; // 報告
}
]
}
});ignoreApis
一致する API URL からのログを抑制します。
__bl.setConfig({
ignore: {
ignoreApis: [
'api1', 'api2', 'api3', // 文字列一致
/^random/, // 正規表現一致
function(str) { // カスタム関数
if (str && str.indexOf('api3') >= 0) return true;
return false;
}
]
}
});ignoreErrors
一致する JavaScript エラーメッセージを抑制します。
__bl.setConfig({
ignore: {
ignoreErrors: [
'test error', // 文字列一致
/^Script error\.?$/, // 正規表現一致
function(str) { // カスタム関数
if (str && str.indexOf('Unknown error') >= 0) return true;
return false;
}
]
}
});ignoreResErrors
一致するリソース読み込みエラーを抑制します。
__bl.setConfig({
ignore: {
ignoreResErrors: [
'http://xx/picture.jpg', // 文字列一致
/jpg$/, // 正規表現一致
function(str) { // カスタム関数
if (str && str.indexOf('xx.jpg') >= 0) return true;
return false;
}
]
}
});parseResponse
| プロパティ | 値 |
|---|---|
| 型 | Function |
| 必須 | いいえ |
| デフォルト | 下記参照 |
自動報告中に API 応答データを解析します。応答オブジェクトから msg と code を抽出します。
デフォルト値:
function (res) {
if (!res || typeof res !== 'object') return {};
var code = res.code;
var msg = res.msg || res.message || res.subMsg || res.errorMsg || res.ret || res.errorResponse || '';
if (typeof msg === 'object') {
code = code || msg.code;
msg = msg.msg || msg.message || msg.info || msg.ret || JSON.stringify(msg);
}
return {msg: msg, code: code, success: true};
}API 応答が異なる構造を使用している場合は、この関数をオーバーライドしてください。
サンプリング
sample
| プロパティ | 値 |
|---|---|
| 型 | Integer |
| 必須 | いいえ |
| デフォルト | 1 |
| 範囲 | 1--100 |
パフォーマンスログと成功した API ログのサンプリングレートを制御します。サンプリングレート = 1 / sample です。
| 値 | サンプリングレート |
|---|---|
1 | 100% (すべてのデータ) |
10 | 10% |
100 | 1% |
サンプリングはデータ量と収集のオーバーヘッドを削減します。コストを削減するために、ignore パラメーターを使用して、監視が不要なデータの報告を停止することもできます。詳細については、「ignore」をご参照ください。
ARMS は処理中にサンプリングを補正するため、JS エラー率や API 失敗率などの集約メトリックは正確なままです。ただし、個々のログの詳細は失われる可能性があります。
影響を受けるメトリックの詳細については、「統計メトリック」をご参照ください。
トラフィックの少ないサイトでのランダムサンプリングは、大きな統計的偏差を引き起こします。このパラメーターは、1 日のページビューが 100 万を超えるサイトでのみ使用してください。
pvSample
| プロパティ | 値 |
|---|---|
| 型 | Integer |
| 必須 | いいえ |
| デフォルト | 1 |
| 範囲 | 1--100 |
ページビュー (PV) ログのサンプリングレートを制御します。sample と同じ数式です:サンプリングレート = 1 / pvSample。
ARMS は処理中にサンプリングを補正するため、JS エラー率などの集約メトリックは正確なままです。
パフォーマンスとリソースの追跡
sendResource
| プロパティ | 値 |
|---|---|
| 型 | Boolean |
| 必須 | いいえ |
| デフォルト | false |
true に設定すると、load イベントでページにロードされたすべての静的リソースを報告します。セッショントレースのウォーターフォール図を使用して、ページのロードが遅い原因となっているリソースを特定します。
<script>
!(function(c,b,d,a){c[a]||(c[a]={});c[a].config={pid:"<your-pid>",sendResource:true};
with(b)with(body)with(insertBefore(createElement("script"),firstChild))setAttribute("crossorigin","",src=d)
})(window,document,"https://retcode.alicdn.com/retcode/bl.js","__bl");
</script>sendResource は、setConfig ではなく、初期化時に config で設定してください。setConfig を呼び出すと、load イベントが完了した後に実行される可能性があり、その時点では静的リソースデータは利用できなくなっています。
useFmp
| プロパティ | 値 |
|---|---|
| 型 | Boolean |
| 必須 | いいえ |
| デフォルト | false |
ファーストスクリーンレンダリング分析のために、First Meaningful Paint (FMP) データ収集を有効にします。
autoSendPerf
| プロパティ | 値 |
|---|---|
| 型 | Boolean |
| 必須 | いいえ |
| デフォルト | true |
パフォーマンスログを自動的に送信するかどうかを制御します。
disableHook
| プロパティ | 値 |
|---|---|
| 型 | Boolean |
| 必須 | いいえ |
| デフォルト | false |
AJAX リクエストリスナーを無効にします。デフォルトでは、SDK は API の成功率を報告するために AJAX 呼び出しをインターセプトします。
このパラメーターは初期化時にのみ有効です。
トレースと診断
enableLinkTrace
| プロパティ | 値 |
|---|---|
| 型 | Boolean |
| 必須 | いいえ (Web、Alipay ミニプログラム、WeChat ミニプログラム、DingTalk ミニプログラムのみ) |
| デフォルト | false |
フロントからバックへのトレースを有効にし、ブラウザリクエストをサーバー側のトレースと関連付けます。詳細については、「フロントからバックへのトレース機能を使用して API エラーを診断する」をご参照ください。
behavior
| プロパティ | 値 |
|---|---|
| 型 | Boolean |
| 必須 | いいえ (Web およびミニプログラムのみ) |
| デフォルト | ブラウザ:true、ミニプログラム:false |
エラーに至るまでの一連のユーザーアクションを記録し、トラブルシューティングを支援します。
アプリケーションのメタデータ
release
| プロパティ | 値 |
|---|---|
| 型 | String |
| 必須 | いいえ |
| デフォルト | undefined |
アプリケーションのバージョン文字列です。これを設定して、異なるリリース間でモニタリングデータを比較します。
release は、初期化時に config で設定してください。setConfig は使用しないでください。
environment
| プロパティ | 値 |
|---|---|
| 型 | String |
| 必須 | いいえ |
| デフォルト | prod |
デプロイ環境ラベルです。有効な値:
| 値 | 環境 |
|---|---|
prod | 本番 |
gray | 段階的リリース |
pre | ステージング |
daily | デイリー / 開発 |
local | ローカル |
disabled
| プロパティ | 値 |
|---|---|
| 型 | Boolean |
| 必須 | いいえ |
| デフォルト | false |
true に設定すると、すべてのログ報告が無効になります。
カスタムフィールド
c1, c2, c3
| プロパティ | 値 |
|---|---|
| 型 | String |
| 必須 | いいえ |
| デフォルト | なし |
すべてのログエントリに付加される 3 つのカスタムフィールドです。ユーザーの VIP レベル、A/B テストグループ、機能フラグなど、ビジネス固有のデータを保持します。
__bl.setConfig({
c1: "premium",
c2: "experiment-group-B",
c3: "feature-darkmode"
});c1、c2、c3 に設定された値は、現在のページから報告されるすべてのログに含まれます。