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 パラメーターを指定できます。