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