DataFlux RUM Web 端数据指标监控
npm install dataflux-rm-sdk-javascriptDataFlux RUM 能够通过收集各个应用的指标数据,以可视化的方式分析各个应用端的性能
| 接入方式 | 简介 |
| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| NPM | 通过把 SDK 代码一起打包到你的前端项目中,此方式可以确保对前端页面的性能不会有任何影响,不过可能会错过 SDK 初始化之前的的请求、错误的收集。 |
| CDN 异步加载 | 通过 CDN 加速缓存,以异步脚本引入的方式,引入 SDK 脚本,此方式可以确保 SDK 脚本的下载不会影响页面的加载性能,不过可能会错过 SDK 初始化之前的的请求、错误的收集。 |
| CDN 同步加载 | 通过 CDN 加速缓存,以同步脚本引入的方式,引入 SDK 脚本,此方式可以确保能够收集到所有的错误,资源,请求,性能指标。不过可能会影响页面的加载性能。 |
``javascript
import { datafluxRum } from '@cloudcare/browser-rum'
datafluxRum.init({
applicationId: '
datakitOrigin: '
// env: 'production',
// version: '1.0.0',
})
`
`html`
`html`
src="https://static.dataflux.cn/browser-sdk/v2/dataflux-rum.js"
type="text/javascript"
>
| 参数 | 类型 | 是否必须 | 默认值 | 描述 |
| ------------------------------------------------- | ------- | -------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| applicationId | String | 是 | | 从 dataflux 创建的应用 ID |datakitOrigin
| | String | 是 | | datakit 数据上报 Origin 注释: 协议(包括://),域名(或IP地址)[和端口号] 例如:https://www.datakit.com, http://100.20.34.3:8088 |env
| | String | 否 | | web 应用当前环境, 如 prod:线上环境;gray:灰度环境;pre:预发布环境 common:日常环境;local:本地环境; |version
| | String | 否 | | web 应用的版本号 |resourceSampleRate
| | Number | 否 | 100 | 资源指标数据收集百分比: 100表示全收集,0表示不收集 |sampleRate
| | Number | 否 | 100 | 指标数据收集百分比: 100表示全收集,0表示不收集 |trackSessionAcrossSubdomains
| | Boolean | 否 | false | 同一个域名下面的子域名共享缓存 |allowedDDTracingOrigins
| $\color{#FF0000}{新增}$ | Array | 否 | [] | 允许注入ddtrace 采集器所需header头部的所有请求列表。可以是请求的origin,也可以是是正则,origin: 协议(包括://),域名(或IP地址)[和端口号] 例如:["https://api.example.com", /https:\/\/.*\.my-api-domain\.com/] |trackInteractions
| $\color{#FF0000}{新增}$ | Boolean | 否 | false | 是否开启用户行为采集 |问题
中看到 Script error. 这样的错误信息,同时并没有包含任何详细信息。
$3
1. 用户使用的浏览器不支持错误的捕获 (概率极小)。
2. 出错的脚本文件是跨域加载到页面的。
对于用户浏览器不支持的情况,这种我们是无法处理的;这里主要解决跨域脚本错误无法收集的原因和解决方案。$3
一般情况下脚本文件是使用
#### 2.脚本文件存放 CDN 上
在 CDN 设置中添加 Header`
Access-Control-Allow-Origin: *
`
在非同源脚本所在的 Script 标签上添加属 crossorigin="anonymous"`
`
#### 3. 脚本文件从第三方加载
在非同源脚本所在的 Script 标签上添加属 crossorigin="anonymous"`
`$3
GlobalEventHandlers.onerrorCross-Origin Resource Sharing (CORS)
$3
在数据上报过程中,部分资源timing数据有可能收集不完整。比如tcp,dns数据没有收集上报。
$3
1. 比如dns数据没有收集到,有可能是您应用的这个资源请求是以keep-alive保持链接的,这种情况只有在你第一次请求的时候,会有创建链接的过程,之后的请求都会保持同一连接,不会再重新创建tcp连接。所以会出现dns数据没有的情况,或者数据为0。
2. 应用的资源是以跨域的形式加载到页面的,和你的网站并非是同源(主要原因)。
3. 浏览器不支持Performance API(极少数情况)
$3
#### 1.资源文件直接存放在服务器在服务器上资源文件输出时添加 Header
`
Timing-Allow-Origin: *
`#### 2.资源文件存放 CDN 上
在 CDN 设置中添加 Header
`
Timing-Allow-Origin: *
``
Resource Timing Standard; W3C Editor's Draft