全部產品
Search
文件中心

Application Real-Time Monitoring Service:SDK參考

更新時間:Jul 06, 2024

ARMS前端監控提供一系列SDK配置項,讓您能夠通過設定參數來滿足額外需求,例如忽略指定URL、API、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配置項:

  • 向頁面插入BI探針時在config中添加額外參數。

    例如,以下範例程式碼的config中,除了預設的pid參數外,還添加了用於單頁面應用(Single Page Application)情境的enableSPA參數。

    <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>                    
  • 頁面初始化完成後,在前端JS代碼中調用setConfig方法來修改配置項。

    __bl.setConfig(next)調用參數說明:

    參數

    類型

    描述

    是否必選

    預設值

    next

    Object

    需要修改的配置項以及值

pid

pid
String
專案唯一ID,由ARMS在建立網站時自動產生。

[回到頂部]

uid

uid
String
使用者ID,用於標識訪問使用者,可手動設定,用於根據使用者ID檢索。如果不配置,則由SDK隨機自動產生且每半年更新一次。
  • Weex情境:必需
  • 其他情境:非必需
  • Weex情境:無
  • 其他情境:由SDK自動產生

樣本:調用setConfig方法修改SDK配置項。

__bl.setConfig({
    uid: 12345
});        
說明

對於setConfig方法,小程式情境不支援配置uid,您可以使用setUsername代替uid標識使用者。

[回到頂部]

tag

tag
String
傳入的標記,每條日誌都會攜帶該標記。

[回到頂部]

page

page
String
頁面名稱。
預設取當前頁面URL的關鍵區段:host + pathname
說明

您可以根據實際情況,使用ignoreErrors過濾需要上報的錯誤。具體操作,請參見ignore

[回到頂部]

setUsername

setUsername
Function
用於設定一個方法,該方法需要傳回型別為String的使用者名稱稱。

本配置項用於設定一個方法,該方法需要傳回型別為String的使用者名稱稱。配置後可以根據使用者名稱稱進行全鏈路追蹤(會話追蹤)、查詢使用者會話軌跡,便於排查問題。

說明
  • 若頁面載入初期暫時無法擷取使用者名稱,則可設定返回Null,但不要設定返回一個臨時使用者名稱。因為SDK發送日誌時會再次調用setUsername方法擷取使用者名稱,如果之前設定了返回臨時使用者名稱,則會一直沿用最初設定的使用者名稱,不再重新擷取。

  • 在不關閉應用的情況下,setUsername只能設定一次。

樣本:調用setConfig方法修改SDK配置項。

__bl.setConfig({
    setUsername: function () {
        return "username_xxx";
    }
});            

[回到頂部]

enableSPA

enableSPA
Boolean
監聽頁面的hashchange事件並重新上報PV,適用於單頁面應用情境。
否(僅Web情境支援)
false

[回到頂部]

parseHash

parseHash
Function
enableSPA搭配使用。
見下文

單頁面應用情境中(參見SPA頁面上報),在enableSPA設為true的前提下,頁面觸發hashchange事件時,parseHash參數用於將URL Hash解析為Page欄位。

預設值

其預設值由一個簡單的字串處理方法獲得:

function (hash) {
    var page = hash ? hash.replace(/^#/, '').replace(/\?.*$/, '') : '';
    return page || '[index]';
}           

此項一般情況下不需要修改。如果需要在上報時使用自訂的頁面名,或者URL的Hash比較複雜,則需要修改此配置項。例如:

// 定義頁面Hash和Page的映射關係。
var PAGE_MAP = {
    '/': '首頁',
    '/contact': '聯絡我們',
    '/list': '資料列表',
    // ...
};
// 頁面load後調用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請求監聽。
false:預設會監聽並用於API調用成功率上報。

[回到頂部]

ignoreUrlCase

ignoreUrlCase
Boolean
忽略Page URL大小寫。
true:預設忽略。

[回到頂部]

urlHelper

urlHelper
*
代替舊參數ignoreUrlPath,用於配置URL過濾規則。
見下文

當頁面URL類似於http://example.com/projects/123456projects後面的數字是專案ID)時,如果將example.com/projects/123456作為page上報,會導致在資料查看時頁面無法聚成一類。這種情況下,為了使同類頁面聚類,可以使用urlHelper參數過濾掉非關鍵字符,例如此例中的專案ID。

重要
  • 用於URL過濾規則的舊參數ignoreUrlPath現已廢棄,請使用新參數urlHelper。若繼續使用舊參數且不使用新參數,配置仍將生效。若同時使用新舊參數,則新參數的配置生效。

  • 此配置項只在自動擷取頁面URL作為Page時才會生效。如果手動調用setPagesetConfig方法(參考前端介面說明)修改過Page,或者如果enableSPA已設為true,則此設定項無效。

預設值

此配置項的預設值是以下數組,一般情況下不需要修改。

[
    // 將所有Path中的數字變成*。
    {rule: /\/([a-z\-_]+)?\d{2,20}/g, target: '/$1**'},
    // 去掉URL末尾的'/'。
    /\/$/
]                    

此設定項的預設值會過濾掉xxxx/123456後面的數字,例如xxxx/00001xxxx/00002都會變成xxxx/**

實值型別

urlHelper的值可以是以下類型:

  • StringRegExp(Regex):將匹配到的字串去掉。

  • Object<rule, target>:對象包含兩個Key(ruletarget)作為JS字串的replace方法的入參。使用方法參見JS相關教程中的String::replace方法。

  • Function:將原字串作為入參執行方法,將執行結果作為Page。

  • Array:用於設定多條規則,每條規則都可以是上述類型之一。

[回到頂部]

apiHelper

apiHelper
*
代替舊參數ignoreApiPath,用於配置API過濾規則。
見下文

用於在自動上報API時過濾介面URL中的非關鍵字符,用法及含義同urlHelper

重要

用於API過濾規則的舊參數ignoreApiPath現已廢棄,請使用新參數apiHelper。若繼續使用舊參數且不使用新參數,配置仍將生效。若同時使用新舊參數,則新參數的配置生效,舊參數的配置不生效。

預設值

預設值是一個對象,一般情況下不需要修改:

{rule: /(\w+)\/\d{2,}/g, target: '$1'}                    

此設定項的預設值會過濾掉介面URL中類似xxxx/123456後面的數字。

如果需要在API中上報?後面的參數,例如:https://arms.console.aliyun.com/apm?pid=fr6fbgbeot中的pid參數,需要按照以下方法手動上報API資料:

  • 使用ignore方法,關閉自動上報。具體操作,請參見ignore

  • 使用api()自行上報API資料。具體操作,請參見api()

[回到頂部]

parseResponse

parseResponse
Function
用於解析自動上報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};
}                    

以上代碼會解析返回的資料,嘗試提取出msgcode。對於一般應用來說,此設定項不需要修改。如果預設值無法滿足業務需求,則可以重新設定。

[回到頂部]

ignore

ignore
Object
忽略指定URL/API/JS錯誤。符合規則的日誌將被忽略且不會被上報,包含子配置項ignoreUrlsignoreApisignoreErrorsignoreResErrors
見下文

ignore的值是一個對象,對象中包含4個屬性:ignoreUrlsignoreApisignoreErrorsignoreResErrors。可單獨設定其中的1個或多個屬性。

預設值

該配置項的預設值為:

ignore: {
        ignoreUrls: [],
        ignoreApis: [],
        ignoreErrors: [],
        ignoreResErrors: []
    },                    

ignoreUrls

ignoreUrls表示忽略某些URL,符合規則的URL下的日誌都不會被上報。值可以是StringRegExpFunction或者以上三種類型組成的數組。樣本:

__bl.setConfig({
                ignore: {
                    ignoreUrls: [
                    'http://host1/',  // 字串
                    /.+?host2.+/,     // Regex
                    function(str) {   // 方法
                        if (str && str.indexOf('host3') >= 0) {
                            return true;   // 不上報
                        }
                        return false;      // 上報
                    }]
                }
            });                    

ignoreApis

ignoreApis表示忽略某些API,符合規則的API將不會被監控。值可以是StringRegExpFunction或者以上三種類型組成的數組。樣本:

__bl.setConfig({
                ignore: {
                    ignoreApis: [
                    'api1','api2','api3', // 字串
                    /^random/,  // Regex
                    function(str) { // 方法
                        if (str && str.indexOf('api3') >= 0) return true;   // 不上報
                        return false;   // 上報
                    }]
                }
            });                    

ignoreErrors

ignoreErrors表示忽略某些JS錯誤,符合規則的JS錯誤不會被上報。值可以是StringRegExpFunction或者以上三種類型組成的數組。樣本:

__bl.setConfig({
                ignore: {
                    ignoreErrors: [
                    'test error', // 字串
                    /^Script error\.?$/, // Regex
                    function(str) { // 方法
                        if (str && str.indexOf('Unknown error') >= 0) return true;   // 不上報
                        return false;   // 上報
                    }]
                }
            });            

ignoreResErrors

ignoreResErrors表示忽略指定的資源錯誤,符合規則的資源錯誤不會被上報。值可以是StringRegExpFunction或者以上三種類型組成的數組。樣本:

__bl.setConfig({
                ignore: {
                    ignoreResErrors: [
                    'http://xx/picture.jpg', // 字串
                    /jpg$/, // Regex
                    function(str) { // 方法
                        if (str && str.indexOf('xx.jpg') >= 0) return true;   // 不上報
                        return false;   // 上報
                    }]
                }
            });

[回到頂部]

disabled

disabled
Boolean
禁用日誌上報功能。
false

[回到頂部]

sample

sample

Integer

API日誌採樣配置,值為1~100的整數。對效能日誌和成功API日誌按照1/sample的比例採樣,關於效能日誌和成功API日誌的指標說明,請參見統計指標說明

1

sample配置項作用:

  • 減小API的資料上報量(降低部分費用),更精確的方案建議使用ignore參數過濾掉某些不需要監控的API資料,更多資訊,請參考ignore

  • 降低採集資料的效能開銷。

sample配置項說明:

  • 為了減小上報量和降低負載,該配置項會對效能和成功API日誌進行隨機採樣上報,幕後處理日誌時會根據對應的採樣配置進行還原,因此不會影響JS錯誤率和失敗API率等指標的計算。但是會導致在查詢API詳情或者相關資料明細的時候,無法保證一定可以查看明細。

  • 採樣值sample預設為1,值可以是1~100的整數,對應的採樣率為1/sample,例如:1表示100%採樣,10表示10%採樣,100表示1%採樣。

警告

由於是隨機採樣,如果原上報量較小,該配置項可能會造成較大的統計結果誤差,建議僅日均PV在100萬以上的網站使用該配置項。

[回到頂部]

pvSample

參數

類型

描述

是否必選

預設值

pvSample

Integer

PV日誌採樣配置,值為1~100的整數。對PV日誌按照1/pvSample的比例採樣。

1

pvSample配置項作用:

  • 減小PV的資料上報量(降低部分費用)。

  • 降低採集資料的效能開銷。

pvSample配置項說明:

  • 為了減小上報量和降低負載,該配置項會對PV日誌進行隨機採樣上報,幕後處理日誌時會根據對應的採樣配置進行還原,樣本量足夠大的情況下對JS錯誤率等指標的計算影響不大。

  • 採樣值pvSample預設為1,值可以是1~100的整數,對應的採樣率為1/pvSample,例如:1表示100%採樣,10表示10%採樣,100表示1%採樣。

[回到頂部]

sendResource

sendResource
Boolean
上報頁面靜態資源。
false

如果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://retcode.alicdn.com/retcode/bl.js","__bl");
</script>            
說明

由於是在頁面load事件觸發時判斷,所以請在config中配置sendResource(如以上樣本所示),不要使用setConfig的方式,因為這種方式可能在頁面load事件完成後才會觸發,從而使該配置項無效。

[回到頂部]

useFmp

useFmp
Boolean
採集首屏FMP(First Meaningful Paint,首次有效渲染)資料。
false

[回到頂部]

enableLinkTrace

enableLinkTrace
Boolean
進行前後端鏈路追蹤,請參見使用前後端鏈路追蹤診斷API錯誤原因
否(僅Web情境、支付寶小程式、微信小程式、DingTalk小程式支援)
false

[回到頂部]

release

重要

請在初始化時的config中配置release,不要使用setConfig的方式。

release
String
應用版本號碼。建議您配置,便於查看不同版本的上報資訊。
undefined

[回到頂部]

environment

environment
String
環境欄位,取值為:prod、gray、pre、daily和local,其中:
  • prod表示線上環境。
  • gray表示灰階環境。
  • pre表示預發環境。
  • daily表示日常環境。
  • local表示本地環境。
prod

[回到頂部]

behavior

behavior
Boolean
是否為了便於排查錯誤而記錄報錯的使用者行為。
否(僅Web情境和小程式情境支援)
Browser預設為true,小程式預設為false

[回到頂部]

autoSendPerf

autoSendPerf
Boolean
是否允許自動發送效能日誌。
true

[回到頂部]

c1\c2\c3

除了以上列出的配置項,您可能還需要更多的附加資訊輔助處理業務問題,因此ARMS SDK提供了3個可自訂欄位的配置項,配置後欄位內容會包含在每一條上報的日誌中。

c1
String
業務自訂欄位,每條日誌都會攜帶該標記。
c2
String
業務自訂欄位,每條日誌都會攜帶該標記。
c3
String
業務自訂欄位,每條日誌都會攜帶該標記。
說明

c1\c2\c3是使用者自訂的當前頁面中所有上報都攜帶的資料(一般具備業務屬性),在初始化JS SDK時傳入SDK的參數,用於篩選資料,例如使用者的VIP等級。

[回到頂部]