本文介紹如何使用ARMS前端監(jiān)控開始監(jiān)控微信小程序,以及相關(guān)的通用配置、API方法和進(jìn)階場景。

背景信息

關(guān)于微信小程序的背景信息,請(qǐng)參見微信小程序。

基礎(chǔ)使用方法

基礎(chǔ)方法包含獲取微信小程序監(jiān)控SDK并初始化、上報(bào)和設(shè)置安全域名這三個(gè)步驟:

  1. 獲取微信小程序監(jiān)控SDK并初始化:

    1. 在微信小程序/utils目錄下新建wxLogger.js文件,并將JS文件的內(nèi)容復(fù)制并粘貼至新建的wxLogger.js文件中。
    2. /utils目錄下新建monitor.js文件,并將以下內(nèi)容添加至新建的monitor.js文件中以完成初始化。
      說明 您可以自定義JS文件的名稱和存放位置。
      • 如果項(xiàng)目使用node module (require) 方式集成,則添加以下內(nèi)容:

        const WXLogger = require('./wxLogger.js');
            const Monitor = WXLogger.init({
                pid: 'xxx',
                region: 'cn',    // 指定應(yīng)用部署的地域:中國設(shè)為cn,海外地區(qū)靠近新加坡的設(shè)為sg。
            });
            export default Monitor;
      • 如果項(xiàng)目使用ES module (import) 方式集成,則添加以下內(nèi)容:

        import WXLogger from './wxLogger.js';
            const Monitor = WXLogger.init({
                pid: 'xxx',
                region: 'cn',    // 指定應(yīng)用部署的地域:中國設(shè)為cn,海外地區(qū)靠近新加坡的設(shè)為sg。
            });
            export default Monitor;
      說明 關(guān)于參數(shù)的詳細(xì)配置,請(qǐng)參見通用SDK配置項(xiàng)。
  2. 使用以下方法靜默采集PV、Error、API、性能及Health數(shù)據(jù):

    1. app.js中,使用Monitor.hookApp(options)方法靜默捕獲Error類日志。其中的options即為App層相應(yīng)的Object配置。

      import Monitor from '/util/monitor';
      
      App(Monitor.hookApp({
        onError(err) {
            console.log('進(jìn)入onError:', err);
        },
        onLaunch() {
          console.log('進(jìn)入onLaunch');
        },
      
        onShow(options) {
        },
        onHide() {
        }
      }));
    2. pageJS文件中通過Monitor.hookPage(options)方法靜默上報(bào)API請(qǐng)求、PV、Health數(shù)據(jù)。

      import Monitor from '/util/monitor';
      // 使用hookPage后,生命周期的API會(huì)自動(dòng)打點(diǎn)。
      Page(Monitor.hookPage({
         data: {},
          onLoad(query) {
          },
          onReady() {
          // 頁面加載完成。
          },
          onShow() {
      
          },
          onLoad(query) {
      
          },
          onHide() {
      
          },
          onUnload() {
      
          }     
      }));
  3. 設(shè)置安全域名:

    • 如果region設(shè)為cn,則將https://arms-retcode.aliyuncs.com添加到Request合法域名。

    • 如果region設(shè)為sg,則將https://arms-retcode-sg.aliyuncs.com添加到Request合法域名。

API方法:靜默打點(diǎn)基礎(chǔ)API

方法 參數(shù) 備注 示例使用場景
hookApp {} 請(qǐng)傳入原有的App參數(shù)。 App的生命周期中自動(dòng)打點(diǎn)。
hookPage {} 請(qǐng)傳入原有的Page參數(shù)。 Page的生命周期中自動(dòng)打點(diǎn)。
說明 小程序監(jiān)控項(xiàng)目如需使用hookApp、hookPage嵌入生命周期打點(diǎn),必須符合標(biāo)準(zhǔn)小程序關(guān)于App和Page的規(guī)范,即App層有onError,Page層有onShowonHideonUnload。使用方法示例,請(qǐng)參見基礎(chǔ)使用方法

API方法:其他設(shè)置API

方法 參數(shù) 備注
setCommonInfo {[key: string]: string;} 設(shè)置日志基礎(chǔ)字段,可用于灰度發(fā)布等場景。
setConfig {[key: string]: string;} 設(shè)置config字段,具體操作,請(qǐng)參見SDK參考
說明 對(duì)于setConfig方法,小程序場景不支持配置uid,您可以使用setUsername代替uid標(biāo)識(shí)用戶。
pageShow {} Page Show打點(diǎn),發(fā)送PV數(shù)據(jù)。
pageHide {} Page Hide打點(diǎn),發(fā)送Health數(shù)據(jù)。
error String/Object 錯(cuò)誤日志打點(diǎn)。
api 請(qǐng)參見API參考 API類日志上報(bào)。
sum/avg String 自定義求和、求均值日志上報(bào)。

進(jìn)階場景

當(dāng)基礎(chǔ)使用方法無法滿足需求時(shí),請(qǐng)參見以下進(jìn)階場景:

  • 手動(dòng)上報(bào)API相關(guān)信息(不采用靜默上報(bào)方式):

    1. disableHook設(shè)為true,不靜默上報(bào)wx.request請(qǐng)求的日志。

    2. 手動(dòng)調(diào)用api()方法上報(bào)API相關(guān)信息。

  • 取消靜默上報(bào)并改為手動(dòng)打點(diǎn):

    1. AppPage對(duì)應(yīng)的JS文件中不再使用hookApp、hookPage方法。

    2. 如需發(fā)送當(dāng)前頁面的PV數(shù)據(jù),則在PageonShow方法下調(diào)用pageShow()方法。

      說明 請(qǐng)勿與hookPage()方法同時(shí)使用此方法,否則會(huì)造成PV類日志重復(fù)上報(bào)。
      import Monitor from '/util/monitor';
      Page({
          onShow: function() {
              Monitor.pageShow();
          }
      })
    3. 如需發(fā)送當(dāng)前頁面的Health類數(shù)據(jù),統(tǒng)計(jì)當(dāng)前頁面的健康度和頁面停留時(shí)間,則在PageonHideonUnload方法下調(diào)用pageHide()方法。

      說明 請(qǐng)勿與 hookPage()方法同時(shí)使用此方法,否則會(huì)造成日志重復(fù)上報(bào)。
      import Monitor from '/util/monitor';
        Page({
      
            onHide: function() {
                Monitor.pageHide();
            },
            onUnload: function() {
                Monitor.pageHide();
            }
            ... 
        })

通用SDK配置項(xiàng)

ARMS前端監(jiān)控提供一系列SDK配置項(xiàng),讓您能夠通過設(shè)置參數(shù)來滿足額外需求。以下是適用于本文場景的通用配置項(xiàng)。

參數(shù) 類型 描述 是否必選 默認(rèn)值
pid String 項(xiàng)目唯一ID,由ARMS在創(chuàng)建站點(diǎn)時(shí)自動(dòng)生成。
uid String 用戶ID,用于標(biāo)識(shí)訪問用戶,可手動(dòng)配置,用于根據(jù)用戶ID檢索。如果不配置,則由SDK隨機(jī)自動(dòng)生成且每半年更新一次。 SDK自動(dòng)生成
tag String 傳入的標(biāo)記,每條日志都會(huì)攜帶該標(biāo)記。
release String 應(yīng)用版本號(hào)。建議您配置,便于查看不同版本的上報(bào)信息。 undefined
environment String 環(huán)境字段,取值為:prod、gray、pre、dailylocal,其中:
  • prod表示線上環(huán)境。
  • gray表示灰度環(huán)境。
  • pre表示預(yù)發(fā)環(huán)境。
  • daily表示日常環(huán)境。
  • local表示本地環(huán)境。
prod
sample Integer 日志采樣配置,值為1~100的整數(shù)。對(duì)性能日志和成功API日志按照1/sample的比例采樣,關(guān)于性能日志和成功API日志的指標(biāo)說明,請(qǐng)參見統(tǒng)計(jì)指標(biāo)說明。 1
behavior Boolean 是否為了便于排查錯(cuò)誤而記錄報(bào)錯(cuò)的用戶行為。 false
enableLinkTrace Boolean 進(jìn)行前后端鏈路追蹤,請(qǐng)參見使用前后端鏈路追蹤診斷API錯(cuò)誤原因。 false

ARMS前端監(jiān)控還提供了更多SDK配置項(xiàng),可滿足進(jìn)一步的需求。更多信息,請(qǐng)參見SDK參考。