Application Real-Time Monitoring Service (ARMS) のブラウザ監視は、さまざまな要件に対応するために、多様な SDK 設定項目を提供します。たとえば、これらの設定項目を使用して、URL、API オペレーション、または JavaScript (JS) エラーを無視したり、URL から重要でない文字を削除してページを集約したり、ランダムサンプリングを使用してレポートされるデータやワークロードを削減したりできます。
このトピックのメソッド
pid | uid | tag | page | setUsername | enableSPA | parseHash | disableHook | ignoreUrlCase | urlHelper | apiHelper | parseResponse | ignore | disabled | sample | pvSample | sendResource | useFmp | enableLinkTrace | release | environment | behavior | c1\c2\c3 | autoSendPerf
SDK 設定項目の使用
SDK 設定項目は、次のいずれかの方法で使用できます。
-
ページにブラウザ監視エージェントをインストールする際に、要件に応じて config にパラメーターを追加します。
たとえば、次のサンプルコードでは、デフォルトの pid パラメーターに加えて、シングルページアプリケーション (SPA) 用の enableSPA パラメーターが config に追加されています。
<script> !(function(c,b,d,a){c[a]||(c[a]={});c[a].config={pid:"xxxxxx",enableSPA:true}; with(b)with(body)with(insertBefore(createElement("script"),firstChild))setAttribute("crossorigin","",src=d) })(window,document,"https://sdk.rum.aliyuncs.com/v1/bl.js","__bl"); </script> -
ページの初期化後、JavaScript コードで setConfig メソッドを呼び出して設定項目を変更します。
__bl.setConfig(next)メソッドは、次のパラメーターを受け入れます。パラメーター
タイプ
説明
必須
デフォルト値
next
Object
変更したい設定項目とその値。
はい
なし
pid
|
|
|
|
|
|
pid |
String |
プロジェクトの一意の ID です。ARMS がサイトを作成する際に自動的に生成されます。 |
はい |
なし |
uid
|
|
|
|
|
|
uid |
String |
ユーザーの ID です。値はユーザーの識別子であり、ユーザーの検索に使用できます。カスタム値を指定できます。このパラメーターを指定しない場合、SDK によって自動的に生成され、6 か月ごとに更新されます。 |
|
|
次のコードは、setConfig メソッドを呼び出して SDK 設定項目を変更する方法の例を示しています。
__bl.setConfig({
uid: 12345
});
ミニプログラムを監視する場合、setConfig メソッドを呼び出して uid パラメーターを変更することはできません。代わりに、setUsername メソッドを呼び出してユーザーを識別できます。
tag
|
|
|
|
|
|
tag |
String |
入力タグです。各ログにはタグが付与されます。 |
いいえ |
なし |
page
|
|
|
|
|
|
page |
String |
ページ名。 |
いいえ |
デフォルトでは、現在のページ URL の主要部分である |
ignoreErrors プロパティを使用して、レポートしたいエラーをクエリできます。詳細については、「ignore」をご参照ください。
setUsername
|
|
|
|
|
|
setUsername |
Function |
String 型のユーザー名を返す必要があるメソッドを設定するために使用されます。 |
いいえ |
なし |
この設定項目は、関数を作成するために使用されます。この関数は、文字列としてユーザー名を取得するために使用されます。ユーザー名が取得された後、エンドツーエンドのセッション追跡を実装し、ユーザー名に基づいてセッションをクエリして問題をトラブルシューティングできます。
ページの初期化時にユーザー名を取得できない場合は、一時的なユーザー名の代わりに、戻り値を null に設定できます。戻り値を null に設定すると、SDK がログを送信する際に setUsername メソッドが再度呼び出されてユーザー名が取得されます。ただし、戻り値を一時的なユーザー名に設定すると、その一時的なユーザー名が使用され、setUsername は実際のユーザー名を取得するために再度呼び出されることはありません。
setUsername メソッドは、ランタイム中に一度しか設定できません。メソッドを変更するには、アプリケーションを再起動する必要があります。
次のコードは、setConfig メソッドを呼び出して SDK 設定項目を変更する方法の例を示しています。
__bl.setConfig({
setUsername: function () {
return "username_xxx";
}
});
enableSPA
|
|
|
|
|
|
enableSPA |
Boolean |
ページの hashchange イベントをリッスンし、PV を再度レポートします。これは、シングルページアプリケーションのシナリオに適用されます。 |
いいえ (Web シナリオでのみサポート) |
|
parseHash
|
|
|
|
|
|
parseHash |
Function |
enableSPA と一緒に使用します。 |
いいえ |
下記参照 |
シングルページアプリケーション (SPA) のシナリオ (「SPA のページデータレポート」をご参照ください) で、enableSPA が true に設定されている場合、hashchange イベントが発生すると、parseHash パラメーターが URL ハッシュを Page フィールドに解析します。
Default value
デフォルト値は、次の文字列処理メソッドを使用して取得されます。
function (hash) {
var page = hash ? hash.replace(/^#/, '').replace(/\?.*$/, '') : '';
return page || '[index]';
}
通常、このパラメーターを変更する必要はありません。ただし、カスタムページ名を使用してページ固有のデータをレポートする場合や、URL ハッシュが複雑な場合は、この設定項目を変更できます。例:
// URL ハッシュとページ名の間のマッピングを定義します。
var PAGE_MAP = {
'/': 'ホームページ',
'/contact': 'お問い合わせ',
'/list': 'データリスト',
// ...
};
// ページの読み込み後に SDK メソッドを呼び出します。
window.addEventListener('load', function (e) {
// setConfig メソッドを呼び出して SDK 設定項目を変更します。
__bl.setConfig({
parseHash: function (hash) {
key = hash.replace(/\?.*$/, '');
return PAGE_MAP[key] || '不明なページ';
}
});
});
disableHook
disableHook パラメーターは、設定が初期化されたときにのみ有効になります。
|
|
|
|
|
|
disableHook |
Boolean |
AJAX リクエストリスナーを無効にします。 |
いいえ |
|
ignoreUrlCase
|
|
|
|
|
|
ignoreUrlCase |
Boolean |
ページ URL の大文字と小文字を区別しません。 |
いいえ |
|
urlHelper
|
|
|
|
|
|
urlHelper |
* |
古いパラメーター ignoreUrlPath の代わりに、URL フィルタリングルールを設定するために使用されます。 |
いいえ |
下記参照 |
ページ URL が http://example.com/projects/123456 のような場合 (projects の後の数字はプロジェクト ID)、ページとして example.com/projects/123456 をレポートすると、データを表示する際にページが単一のカテゴリにクラスター化されるのを防ぎます。この場合、類似のページが確実にクラスター化されるように、urlHelper パラメーターを使用して、この例のプロジェクト ID のような重要でない文字をフィルタリングできます。
urlHelper パラメーターは、ignoreUrlPath パラメーターを置き換えて、ページ URL 内の重要でない文字を無視します。ignoreUrlPath パラメーターを指定した場合でも、その設定は有効です。ignoreUrlPath と urlHelper の両方のパラメーターが指定されている場合は、urlHelper パラメーターで指定された設定が有効になります。
-
この設定は、SDK がページ URL をページ値として自動的にキャプチャする場合にのみ適用されます。 setPage または setConfig メソッドを呼び出してページ値を手動で設定した場合 (「SDK メソッド」をご参照ください)、または enableSPA が
trueに設定されている場合、SDK はこの設定を無視します。
Default value
この設定項目のデフォルト値は、次のサンプルコードの配列です。ほとんどの場合、この値を変更する必要はありません。
[
// パス内のすべての数字をアスタリスク (*) に置き換えます。
{rule: /\/([a-z\-_]+)?\d{2,20}/g, target: '/$1**'},
// URL の末尾のスラッシュ (/) を削除します。
/\/$/
]
デフォルトでは、この設定はパスセグメントに続く数値識別子を置き換えます。たとえば、xxxx/00001 と xxxx/00002 は、元の URL xxxx/123456 と同様に、xxxx/** になります。
値のタイプ
urlHelper パラメーターの値は、次のいずれかのタイプになります。
-
StringまたはRegExp(正規表現):URL 文字列の一致した部分を削除します。 -
Object<rule, target>: rule キーと target キーを持つオブジェクトです。これらは、JavaScript の String.prototype.replace() メソッドに引数として渡されます。詳細については、 String.prototype.replace() のドキュメントをご参照ください。 -
Function:元の URL 文字列を引数として受け入れる関数です。その戻り値が最終的なページ値として使用されます。 -
Array:複数のルールを含む配列で、各ルールは上記のいずれかのタイプになります。
apiHelper
|
|
|
|
|
|
apiHelper |
* |
古いパラメーター ignoreApiPath の代わりに、API フィルタリングルールを設定するために使用されます。 |
いいえ |
下記参照 |
このパラメーターは、API オペレーションに関するページ固有のデータが自動的にレポートされる際に、ページ URL 内の重要でない文字を削除するために使用されます。このパラメーターの使用法と機能は、urlHelper と同じです。
apiHelper パラメーターは、ignoreApiPath パラメーターを置き換えて、API オペレーションの URL 内の重要でない文字を無視します。ignoreApiPath パラメーターを指定した場合でも、その設定は有効です。ignoreApiPath と apiHelper の両方のパラメーターが指定されている場合は、apiHelper パラメーターで指定された設定が有効になります。
Default value
このパラメーターのデフォルト値はオブジェクトであり、変更する必要はありません。
{rule: /(\w+)\/\d{2,}/g, target: '$1'}
このデフォルト設定は、xxxx/123456 のように、API URL パス内の末尾の数字をフィルタリングします。
https://arms.console.alibabacloud.com/apm?pid=fr6fbgbeot の pid パラメーターのように、クエリ文字列 (API URL の ? の後の部分) からパラメーターをレポートする必要がある場合は、手動レポートを使用する必要があります。
parseResponse
|
|
|
|
|
|
parseResponse |
Function |
自動レポート API 中に返されるデータを解析するために使用されます。 |
いいえ |
下記参照 |
この設定項目は、API オペレーションのページ固有のデータが自動的にレポートされる際に返されるデータを解析するために使用されます。
Default value
次のサンプルコードは、デフォルト設定を示しています。
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};
}
デフォルトの関数は、応答を解析して msg プロパティと code プロパティを抽出します。この関数はほとんどのアプリケーションに適していますが、ビジネス要件を満たさない場合はオーバーライドできます。
ignore
|
|
|
|
|
|
ignore |
Object |
指定された URL/API/JS エラーを無視します。ルールに一致するログは無視され、レポートされません。これには、サブ設定項目 ignoreUrls、ignoreApis、ignoreErrors、および ignoreResErrors が含まれます。 |
いいえ |
下記参照 |
ignore パラメーターの値は、ignoreUrls、ignoreApis、ignoreErrors、および ignoreResErrors の 4 つのプロパティを含むオブジェクトです。パラメーター値の 1 つ以上のプロパティを設定できます。
Default value
次のサンプルコードは、デフォルト設定を示しています。
ignore: {
ignoreUrls: [],
ignoreApis: [],
ignoreErrors: [],
ignoreResErrors: []
},
ignoreUrls
ignoreUrls プロパティは、無視する URL を指定します。指定されたパターンに一致する URL からのログはレポートされません。値は、string、正規表現、関数、またはこれらのタイプを含む配列にすることができます。例:
__bl.setConfig({
ignore: {
ignoreUrls: [
'http://host1/', // 文字列
/.+?host2.+/, // 正規表現
function(str) { // 関数
if (str && str.indexOf('host3') >= 0) {
return true; // レポートしない
}
return false; // レポートする
}]
}
});
ignoreApis
ignoreApis プロパティは、無視する API を指定します。指定されたパターンに一致する API への呼び出しは監視されません。値は、string、正規表現、関数、またはこれらのタイプを含む配列にすることができます。例:
__bl.setConfig({
ignore: {
ignoreApis: [
'api1','api2','api3', // 文字列
/^random/, // 正規表現
function(str) { // 関数
if (str && str.indexOf('api3') >= 0) return true; // レポートしない
return false; // レポートする
}]
}
});
ignoreErrors
ignoreErrors プロパティは、無視する JS エラーを指定します。指定されたパターンに一致する JS エラーはレポートされません。値は、string、正規表現、関数、またはこれらのタイプを含む配列にすることができます。例:
__bl.setConfig({
ignore: {
ignoreErrors: [
'test error', // 文字列
/^Script error\.?$/, // 正規表現
function(str) { // 関数
if (str && str.indexOf('Unknown error') >= 0) return true; // レポートしない
return false; // レポートする
}]
}
});
ignoreResErrors
ignoreResErrors プロパティは、無視するリソースエラーを指定します。指定されたパターンに一致するリソースエラーはレポートされません。値は、string、正規表現、関数、またはこれらのタイプを含む配列にすることができます。例:
__bl.setConfig({
ignore: {
ignoreResErrors: [
'http://xx/picture.jpg', // 文字列
/jpg$/, // 正規表現
function(str) { // 関数
if (str && str.indexOf('xx.jpg') >= 0) return true; // レポートしない
return false; // レポートする
}]
}
});
disabled
|
|
|
|
|
|
disabled |
Boolean |
ログレポート機能を無効にするかどうかを指定します。 |
いいえ |
|
sample
|
|
|
|
|
sample |
Integer |
API ログのサンプリング設定を行います。値は 1 から 100 までの整数でなければなりません。 |
いいえ |
|
メリット:
サンプリングされた API データのみをレポートすることでコストを削減します。ignore パラメーターを設定して、監視が不要なデータを特定することを推奨します。詳細については、「ignore」をご参照ください。
データ収集のパフォーマンスオーバーヘッドを削減します。
説明:
この設定項目を設定して、パフォーマンスログと成功した API オペレーションに関するログをランダムに選択してレポートできます。これにより、レポートされるデータ量とワークロードが削減されます。ARMS がバックグラウンドでレポートされたログを処理する際、ARMS はサンプリング設定に基づいてデータを復元します。このようにして、JS エラー率や API 失敗率などのメトリックはサンプリングの影響を受けず、正確なままです。ただし、このパラメーターを設定すると、API の詳細などの詳細データが取得できなくなる場合があります。
-
sampleのデフォルト値は1です。有効値は 1 から 100 までの整数です。サンプリングレートは1/sampleです。たとえば、1は 100% のサンプリング、10は 10% のサンプリング、100は 1% のサンプリングを意味します。
総データ量が少なく、ランダムサンプリングが実行される場合、統計結果に大きな偏差が生じる可能性があります。1 日の平均ページビュー (PV) が 100 万を超える Web サイトでこの設定項目を使用することを推奨します。
pvSample
パラメーター | タイプ | 説明 | 必須 | デフォルト値 |
pvSample |
Integer |
PV ログのサンプリング設定を行います。値は 1 から 100 までの整数で、サンプリングレートは |
いいえ |
|
メリット:
サンプリングされた PV データのみをレポートすることでコストを削減します。
データ収集のパフォーマンスオーバーヘッドを削減します。
説明:
この設定項目を設定して、PV ログをランダムに選択してレポートできます。これにより、レポートされるデータ量とワークロードが削減されます。ARMS がバックグラウンドでレポートされたログを処理する際、ARMS はサンプリング設定に基づいてデータを復元します。このようにして、JS エラー率などのメトリックはサンプリングの影響を受けず、正確なままです。
-
pvSampleのデフォルト値は1です。サンプリングレートは1/pvSampleです。たとえば、値1は 100% のサンプリング、10は 10% のサンプリング、100は 1% のサンプリングを意味します。
sendResource
|
|
|
|
|
|
sendResource |
Boolean |
ページ上の静的リソースをレポートします。 |
いいえ |
|
sendResource パラメーターが true に設定されている場合、ページの load イベントがトリガーされると、ページ上の静的リソースがレポートされます。ページの読み込みが遅い場合、セッショントレースページでその静的リソースのウォーターフォール図を表示して原因を特定できます。
次のコードは、sendResource パラメーターを設定する方法の例を示しています。
<script>
!(function(c,b,d,a){c[a]||(c[a]={});c[a].config={pid:"xxxxxx",sendResource:true};
with(b)with(body)with(insertBefore(createElement("script"),firstChild))setAttribute("crossorigin","",src=d)
})(window,document,"https://sdk.rum.aliyuncs.com/v1/bl.js","__bl");
</script>
ページの読み込みが遅い問題をトラブルシューティングする場合、前のサンプルコードに示すように、config で sendResource パラメーターを設定する必要があります。これにより、load イベントがトリガーされたときに静的リソースがレポートされます。setConfig メソッドを呼び出すと、load イベントが完了した後に静的リソースがレポートされる可能性があります。この場合、sendResource パラメーターは、ページの読み込みが遅い原因を特定するのに役立ちません。
useFmp
|
|
|
|
|
|
useFmp |
Boolean |
ファーストスクリーン FMP (First Meaningful Paint、初回有効レンダリング) データを収集します。 |
いいえ |
|
enableLinkTrace
|
|
|
|
|
|
enableLinkTrace |
Boolean |
詳細については、「フロントツーバックトレースを使用して API エラーを診断する」をご参照ください。 |
いいえ (Web シナリオ、Alipay アプレット、WeChat アプレット、DingTalk アプレットでのみサポート) |
|
release
ページの初期化中に config で release を設定する必要があります。setConfig メソッドを呼び出さないでください。
|
|
|
|
|
|
release |
String |
アプリケーションのバージョンです。異なるバージョンのレポート情報を表示するために、このパラメーターを設定することを推奨します。 |
いいえ |
|
environment
|
|
|
|
|
|
environment |
String |
環境フィールドです。有効値:prod、gray、pre、daily、local。
|
いいえ |
|
behavior
|
|
|
|
|
|
behavior |
Boolean |
エラーを報告するユーザーの動作を記録して、トラブルシューティングを容易にするかどうかを指定します。 |
いいえ (Web およびミニプログラムシナリオでのみサポート) |
ブラウザのデフォルト値は |
autoSendPerf
|
|
|
|
|
|
autoSendPerf |
Boolean |
パフォーマンスログの自動送信を許可するかどうかを指定します。 |
いいえ |
|
c1\c2\c3
上記の設定項目に加えて、ARMS SDK は、ビジネス要件に合わせてフィールドを設定できる 3 つのカスタム設定項目を提供します。フィールドを設定すると、そのフィールド値はすべてのレポートされるログに含まれます。
|
|
|
|
|
|
c1 |
String |
カスタムサービスフィールドです。各ログにこのフィールドが含まれます。 |
いいえ |
なし |
|
c2 |
String |
カスタムサービスフィールドです。各ログにこのフィールドが含まれます。 |
いいえ |
なし |
|
c3 |
String |
カスタムサービスフィールドです。各ログにこのフィールドが含まれます。 |
いいえ |
なし |
c1\c2\c3 は、現在のカスタムページ上のすべてのレポートに含まれるデータです。通常、c1\c2\c3 はご利用のサービスに関連しています。JavaScript 用のブラウザ監視 SDK を初期化する際に、ユーザーの VIP レベルなど、データをクエリするための SDK パラメーターを指定できます。