本文介紹如何通過Log ServiceSDK接入小程式的Web使用者體驗資料。
前提條件
已建立1.1.0及以上版本的全棧可觀測執行個體。具體操作,請參見建立全棧可觀測執行個體。
安裝和初始化
本文以接入微信小程式的資料為例。
在日誌應用地區的智能營運頁簽下,單擊全棧可觀測。
在執行個體列表中,單擊目標執行個體。
重要該執行個體需為1.1.0及以上版本。
在左側導覽列中,選擇
。在接入資料對話方塊中,完成如下配置。
單擊微信小程式,然後單擊下一步。
配置基礎資訊。
參數
說明
環境
設定環境資訊後,當您將不同環境(開發、測試、整合)中的小程式使用者體驗資料接入到同一個執行個體中時,資料中將被添加環境資訊,便於您區分不同環境中的小程式的使用者體驗資料。
服務名
設定服務名後,當您將不同的服務(網站、業務、部門)中的小程式使用者體驗資料接入到同一個執行個體中時,資料中將被添加服務資訊,便於您區分不同服務中的小程式使用者體驗資料。
上報請求數據
開啟上報請求數據開關,表示允許SDK上報API請求資料(fetch、xhr)。
鏈路追蹤
開啟鏈路追蹤開關,表示允許SDK上報前後端鏈路追蹤資料。
完成上述配置後,系統將產生對應的安裝和初始化指令碼。
複製上述指令碼,進行SDK安裝和初始化。
小程式相關的SDK只支援通過NPM進行安裝。
安裝NPM包。
npm install @aliyun-sls/web-trace-mini
初始化SDK。
其中,SLS_TRACER還支援添加其他配置項。更多資訊,請參見附錄一:SLS_TRACER配置項。
import { SLS_TRACER } from '@aliyun-sls/web-trace-mini'; SLS_TRACER.init({ host: 'cn-beijing.log.aliyuncs.com',// 您在建立執行個體時所綁定的Project的訪問網域名稱。 project: 'demo-test',// 您在建立執行個體時所綁定的Project。 logstore: 'demo-test-raw', //Logstore名稱。建立執行個體後,Log Service會自動產生一個名為{instance}-raw的Logstore。 workspace: 'demo-test',// 工作空間名稱,即執行個體ID。 env: 'prod',// 自訂環境。 service: 'miniprogram',// 服務名稱。 enableRequest: true,// 上報API請求資料。 enableTrace: true // 開啟鏈路監控。 })
接入SDK後,訪問您的測試小程式,產生測試資料。
返回到Log Service控制台的全棧可觀測應用中。
在接入資料對話方塊中,單擊下一步。
在接入資料設定精靈的檢查數據步驟中,單擊檢查數據。
確認資料無誤後,單擊完成。
上報自訂事件
SLS_TRACER SDK支援自動對某些事件進行監控,同時還支援您手動上報日誌。
SLS_TRACER.addLog()
介面用於上報自訂事件,該介面支援定義一個JSON格式的參數及支援嵌套JSON格式。上報的資料支援使用Log Service查詢和分析語句。SLS_TRACER.addLog()
介面的調用方式如下:
SLS_TRACER.addLog({
key: 'value',
number: 1,
array: [],
json: {
json: 'json'
}
})
支援部分參數熱更新
在某些情境中,不一定能立即擷取uid等使用者參數,SLS_TRACER SDK允許在SDK初始化後動態設定這部分參數。當前支援熱更新的參數有uid
、nickname
、env
、service
、version
、custom
。調用方式如下所示。
SLS_TRACER.setOptions({
uid: 'uid',
nickname: 'newnickname',
env: 'newEnv',
custom: {
c: 'newCustom',
},
version: 'newVersion',
service: 'newService',
})
自訂外掛程式
SLS_TRACER SDK支援在上報資料過程中修改資料。
// 必須在init之前調用。
SLS_TRACER.use({
name: 'myPlugin',
run: function () {
this.subscribe(
'*', // 訂閱所有的資料來源。如果是自訂訂閱的事件,必須設定為星號(*)。
(data, next) => {
//
//
// 可以根據data.otBase.t,確定資料類型。
//
//
next(data) // 將新的資料傳入下一個處理者時,必須調用,否則該條資料會停止上報。
},
0, // 通過優先順序(0~99),控制執行外掛程式的順序。
)
},
})
// data的資料類型。
export interface NotifyData<OT extends Partial<OTTrace>, Extra = Record<string, any> | undefined> {
otBase: OT
extra: Extra
}
附錄一:SLS_TRACER配置項
參數名 | 類型 | 是否必填 | 範例 | 描述 |
project | string | 是 | 'my-project' | 您在建立執行個體時所綁定的Project名稱。 |
host | string | 是 | 'cn-hangzhou.log.aliyuncs.com' | 您在建立執行個體時所綁定的Project的訪問網域名稱。如何擷取,請參見公網。 |
logstore | string | 是 | 'my-logstore-raw' | 建立執行個體後,Log Service會自動產生一個名為{instance}-raw的Logstore。其中{instance}為執行個體ID。 此處需配置為該Logstore。 |
workspace | string | 是 | 'my-workspace' | 工作空間名稱,即執行個體ID。 |
uid | string | 否 | '123456' | 使用者ID。 |
nickname | string | 否 | 'Alice' | 使用者暱稱。 |
env | string | 否 | 'prod' | 自訂環境。 |
service | string | 否 | 'miniprogram' | 服務名稱。 |
version | string | 否 | '1.0.0' | 版本號碼。 |
custom | Record<string, any> | 否 | { key: 'value' } | 自訂參數。 該欄位用於儲存應用程式中的自訂資訊,可以是任何類型的JSON對象。 |
trackTimeThreshold | number | 否 | 5 | 發送資料的時間閾值,單位:秒(s)。預設值:2。 0表示立即發送。 |
trackCountThreshold | number | 否 | 20 | 發送資料的條數閾值。預設值:10。 |
enableTrace | boolean | 否 | true | 是否開啟鏈路追蹤功能。 |
enableTraceRequestConfig | (((value: string) => boolean) | string | RegExp)[] | 否 | 無 | 需要開啟Trace功能的請求。 該參數為數群組類型,包含需要開啟Trace功能的請求的類型和URL。 |
customTraceHeaders | Record<string, string> | 否 | 無 | Trace Header。該欄位用於在發送請求時自訂Trace Header。 |
enableRequest | boolean | 否 | true | 是否上報請求資料。 |
ignoreRequestConfig | (((value: string, status: number) => boolean) | string | RegExp)[] | 否 | 無 | 不需要上報的請求。 該參數為數群組類型,包含不需要上報的請求的類型和URL。 |
enableRequestBodyConfig | IEnableTrackRequestBody | 否 | 無 | 需要記錄Body的請求。該欄位為一個對象,包含需要記錄Body的請求的類型和URL。 |
enableRuntimeError | boolean | 否 | true | 是否上報JS錯誤。 |
ignoreRuntimeErrorConfig | (((value: string) => boolean) | string | RegExp)[] | 否 | 無 | 運行時需要忽略的錯誤。 該參數為數群組類型,包含需要忽略的錯誤類型。 |
enableResourceError | boolean | 否 | true | 是否上報JS資源錯誤。 |
enableResourcePerf | boolean | 否 | true | 是否上報資源效能資料(js、css、image、audio、video)。 |
ignoreResourceConfig | (((value: string) => boolean) | string | RegExp)[] | 否 | 無 | 需要忽略的資源請求。 該參數為數群組類型,包含需要忽略的資源的類型和URL。 |
enablePerf | boolean | 否 | true | 是否上報頁面載入效能資料。 |
enableConsoleLog | enum | 否 | 'warn' | 記錄層級,取值為error、warn、log、info、debug、false。 配置為info 則只記錄 error、warn、info 層級的日誌。 |
platformSDK | any | 否 | wx | 小程式平台的SDK。 已經適配的平台可以不填寫。適配平台如下:
|
platformRequestName | string | 否 | request | 小程式平台SDK發送請求的介面名稱,例如微信小程式的為request。 預設使用request或httpRequest。 |
附錄二:日誌欄位詳情
小程式使用者體驗資料的欄位詳情與Web使用者體驗資料類似。更多資訊,請參見附錄二:日誌欄位詳情。