本文介绍创建SLS RUM实例,以及将Web页面监控数据接入到SLS RUM的操作步骤。

操作步骤

  1. 登录日志服务控制台
  2. 日志应用区域,单击SLS Rum
  3. 创建实例。
    1. SLS RUM页面,单击创建实例
    2. 创建实例面板中,配置如下参数,然后单击接入数据
      参数 描述
      实例名称 SLS RUM实例的名称。
      实例描述 SLS RUM实例的描述信息。
      项目Project 用于管理SLS RUM资产(Logstore、仪表盘等)的Project。
      实例ID SLS RUM实例的ID。
      角色权限 日志服务使用AliyunLogETLRole访问Logstore中的数据。

      如果您使用的阿里云账号还未完成AliyunLogETLRole授权,请单击您需要授权系统角色AliyunLogETLRole,根据页面提示完成授权。

      如果您要使用RAM用户操作,则使用阿里云账号完成AliyunLogETLRole授权后,还需要使用阿里云账号授予RAM用户数据加工操作权限。更多信息,请参见授予RAM用户数据加工操作权限

  4. 接入数据。
    1. 接入数据配置向导的选择框架步骤中,选择框架,然后单击下一步
      目前仅支持Web框架。
    2. 接入数据配置向导的配置步骤中,配置如下参数。
      参数 说明
      env环境 当您将不同环境(开发、测试、集成)中的Web页面监控数据接入到同一个RUM实例中时,env环境可用于区分不同环境中的Web页面监控数据。
      服务名 当您将不同的服务(网站、业务、部门)中的Web页面监控数据接入到同一个RUM实例中时,服务名可用于区分不同服务中的Web页面监控数据。
      会话回放 打开会话回放开关后,您可以通过可视化方式捕获和回放用户在您网站的浏览体验。更多信息,请参见会话回放
      采样率 设置性能数据的上报量、成功的API请求数据的上报量、成功的资源加载数据的上报量。
      错误上报 打开错误上报开关,表示允许RUM SDK将上报JS错误和资源加载错误。
      上报资源性能数据 打开上报资源性能数据开关,表示允许RUM SDK将上报资源性能数据(js、css、image、audio、vedio)。
      上报请求信息 打开上报请求信息开关,表示允许RUM SDK将上报API请求数据(fetch、xhr)。
      上报页面加载性能 打开上报页面加载性能开关,表示允许RUM SDK将上报页面加载性能数据。
      链路追踪 打开链路追踪开关,表示允许RUM SDK将上报前后端链路追踪数据。该配置将联合SLS Trace服务。
      完成上述配置后,系统将生成对应的脚本信息。示例如下:
      • CDN同步
        <script src="https://o.alicdn.com/sls/sls-rum/sls-rum.js"></script>
            <script>
               window.SLS_RUM &&
                 SLS_RUM.init({
                   host: 'cn-hangzhou.log.aliyuncs.com',
                   project: 'test-demo',
                   logstore: 'dsfqwe-rum-raw',
                   instance: 'dsfqwe',
                   env:  'prod',
                   service:  'web',
                   sessionReplay:  'false',
                   enableError:  true,
                   enableResourcePerf:  true,
                   enableAjax:  true,
                   enablePerf:  true,
                   enableTrace:  true,
                   sampleRate:  0.1,
                 })
            </script>
      • CDN异步
            <script>
              (function (h, o, u, n, d) {
                h=h[d]=h[d]||{q:[],onReady:function(c){h.q.push(c)},p:[],addLog:function(log){h.p.push(log)},};d=o.createElement(u);d.async=1;d.src=n;n=o.getElementsByTagName(u)[0];n.parentNode.insertBefore(d,n)
              })(window, document, 'script', 'https://o.alicdn.com/sls/sls-rum/sls-rum.js', 'SLS_RUM')
              SLS_RUM.onReady(function () {
                SLS_RUM.init({
                  host: 'cn-hangzhou.log.aliyuncs.com',
                  project: 'test-demo',
                  logstore: 'dsfqwe-rum-raw',
                  instance: 'dsfqwe',
                  env:  'prod',
                    service:  'web',
                    sessionReplay:  'false',
                    enableError:  true,
                    enableResourcePerf:  true,
                    enableAjax:  true,
                    enablePerf:  true,
                    enableTrace:  true,
                    sampleRate:  0.1,
                })
              })
            <script>
        根据您的配置生成上述配置项后,RUM SDK还支持添加uidnicknameversioncustom配置项。
        • uid

          RUM SDK会自动生成用户ID,统计PV/UV等信息。用户ID不具备特定的业务属性,也不能准确统计UV等信息。uid生成规则:为每个浏览器分配一个用户ID。

          SLS_RUM.init({
            // 其他配置
          
            uid: 12****87,
          })
        • nickname
          RUM SDK支持配置用户名,用于满足统计需求。
          SLS_RUM.init({
          
            // 其他配置
          
            nickname: '张三',
          })
        • version
          RUM SDK支持配置应用版本号,用于满足统计需求。version字段便于查看不同版本的上报统计情况。
          SLS_RUM.init({
            // 其他配置
          
            version: '1.0.0',
          })
        • custom

          自定义字段,JSON格式。不局限字段的属性名和内容,支持嵌套JSON格式的Value,并且支持自定义解析。

          SLS_RUM.init({
            // 其他配置
          
            custom: {
              d: 'e',
            },
          })
    3. 将上述的脚本复制到Web页面的所有html的head标签中。
      设置完成后,RUM SDK开始上报监控数据。
    4. 接入数据配置向导的配置步骤中,单击下一步
    5. 接入数据配置向导的检查数据步骤中,单击检查数据
    6. 确认数据无误后,单击完成

支持部分参数热更新

在某些场景中,不一定能立即获取uid等用户参数,SLS RUM允许在SDK初始化后动态设置这部分参数。当前支持热更新的参数有uidnicknameenvserviceversioncustom。调用方式如下所示。
SLS_RUM.setOptions({
  uid: 'uid'
  nickname: 'newnickname',
  env: 'newEnv',
  custom: {
    c: 'newCustom',
  },
  version: 'newVersion',
  service: 'newService',
})

附录:SDK配置项

参数 类型 是否必填 示例 描述
project String
project: 'test-demo'
用于管理SLS RUM资产(Logstore、仪表盘等)的Project。
host String
host: 'cn-hangzhou.log.aliyuncs.com'
Project所在地域。
logstore String
logstore: 'dsfqwe-rum-raw'
用于存储原始监控数据的Logstore名称。
instance String
instance: 'dsfqwe'
RUM实例名称。
sampleRate Number
sampleRate: 0.1
默认采用率,同时可控制性能数据的采样率、API请求成功的采样率、资源加载成功的采用率。默认值:1。
perfSampleRate Number
perfSampleRate: 1
用于控制性能数据的采样率。默认值:1。

如果没有配置该参数,则使用sampleRate控制性能数据的采样率。perfSampleRate的优先级高于sampleRate

resSampleRate Number
resSampleRate: 1
用于控制资源加载成功的采用率。默认值:1。

如果没有配置该参数,则使用sampleRate控制性能数据的采样率。resSampleRate的优先级高于sampleRate

apiSampleRate Number
apiSampleRate: 1
用于控制API请求成功的采用率。默认值:1。

如果没有配置该参数,则使用sampleRate控制性能数据的采样率。apiSampleRate的优先级高于sampleRate

env String
env:  'prod'
当您将不同环境(开发、测试、集成)中的Web页面监控数据接入到同一个RUM实例中时,env环境可用于区分不同环境中的Web页面监控数据。
service String
service:  'web'
当您将不同的服务(网站、业务、部门)中的Web页面监控数据接入到同一个RUM实例中时,服务名可用于区分不同服务中的Web页面监控数据。
version String
version: '1.0.0'
应用版本号。

RUM SDK支持配置应用版本号,用于满足统计需求。version字段便于查看不同版本的上报统计情况。

uid String
uid: 12****87
用户ID。

RUM SDK会自动生成用户ID,统计PV/UV等信息。用户ID不具备特定的业务属性,也不能准确统计UV等信息。

uid生成规则:为每个浏览器分配一个用户ID。

nickname String
nickname: 'Andy'
用户名。

RUM SDK支持配置用户名,用于满足统计需求。

custom JSON
custom: {
    d: 'e',
  }
自定义字段。

不局限字段的属性名和内容,支持嵌套JSON格式的Value,并且支持自定义解析。

enableError Boolean
enableError:  true,
是否上报JS错误、资源加载错误。默认值:true。
enablePerf Boolean
enablePerf:  true
是否上报页面加载性能数据。默认值:true。
enableResourcePerf Boolean
enableResourcePerf:  true
是否上报资源性能数据(js、css、image、audio、vedio)。默认值:true。
enableAjax Boolean
enableAjax:  true
是否上报请求数据(fetch、xhr)。默认值:true。
enableTrace Boolean
enableTrace:  false
是否开启链路追踪功能。默认值:false。
enableConsoleLog String、Boolean
enableConsoleLog: 'error'
是否记录Console打印信息。默认值:error。取值:
  • 'error':只记录error级别的日志。
  • 'warn':记录warn、error级别的日志。
  • 'log':记录error、warn、log级别的日志。
  • 'info':记录error、warn、log、info级别的日志。
  • 'debug':记录所有级别的日志。
  • false:不记录Console打印信息。
enableTrackBody String、Boolean
enableTrackBody: 'error'
是否记录请求Body信息,默认值:error。取值:
  • 'always':记录请求Body信息。
  • 'error':只记录错误信息。
  • false:不记录请求Body信息。
transportTimeThreshold Number
transportTimeThreshold: 2
发送数据的时间阈值,在该阈值时间内的数据会被合并发送。单位:秒,默认值:2。

设置为0,表示立即发送。

transportCountThreshold Number
transportCountThreshold: 10
发送数据的条数阈值,在该阈值内的数据会被合并发送。默认值:10。

设置为0或1,表示立即发送。

ignoreAjax Array<(url: string, status?: number) => boolean | string | RegExp>
ignoreAjax: [
            /ignore/,
            'www.example.com',
            (url) => {
              if (url.includes('example')) {
                return false
              }
              return true
            },
          ],
Ajax请求过滤函数。如果匹配,则不上报相关数据。
ignoreResource Array<(url: string) => boolean | string | RegExp>
ignoreResource: [
            /ignore/,
            'www.example.com',
            (url) => {
              if (url.includes('example')) {
                return false
              }
              return true
            },
          ],
资源过滤函数。如果匹配,则不上报相关数据。
ignoreError Array<(url: string) => boolean | string | RegExp>
ignoreError: [
            /ignore/,
            'www.example.com',
            (url) => {
              if (url.includes('example')) {
                return false
              }
              return true
            },
          ],
错误过滤函数。如果匹配,则不上报相关数据。

后续步骤

查看数据报表。更多信息,请参见数据报表