0.0.3-dev • Published 2 years ago

monitor-test v0.0.3-dev

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

web-performance-monitor

网页性能监控 18 项数据指标,浏览器信息,错误收集上报方案,前端工程化。

version: 1.2

监控范围

通用

  • 浏览器信息

  • 网页标题

  • URL

  • 上报时间 ( YYYY-MM-DD HH:mm:ss / timestamp )

错误收集

  • JavaScript 语法错误

  • 资源加载错误

  • Promise 错误

性能监控

Base

  1. 上次页面卸载耗时

  2. 连接时间

  3. 重定向耗时

  4. 请求耗时

  5. 获取首字节时间 ( TTFB )

  6. 响应读取时间

  7. Dom 解析时间

  8. 脚本执行时间

  9. Dom 渲染耗时

  10. 首次可交互时间

  11. 页面完整加载时间

  12. 白屏时间

Render

  1. FMP ( First Meaningful Paint ) : 首次有意义的绘制

  2. LCP ( Large Contentful Paint ) : 最大内容渲染

  3. FP ( First Paint ) : 首次绘制时间

  4. FCP ( First Content Paint ) : 首次内容绘制时间

  5. FID ( First Input Delay ) : 首次交互延迟

Resource

  1. 资源加载时间 ( JavaScript / Css / Img )

使用

本项目默认基于 Aliyun 日志监控服务上报,你可以在 ./src/config/index.js 配置日志上报地址:

  // 上报服务器
  export const __HOST__ = 'region.log.aliyuncs.com'

  // 上报项目
  export const __PROJECT__ = 'project-name'

  // 上报存储区
  export const __LOG_STORE__ = 'store-name'

  // 上报时间(单位 s)
  // 当未满 __LIMIT__ 条日志时,每隔 __MAX_TIME__ 秒上报一次
  export const __MAX_TIME__ = 10

  // 单次上报日志数
  export const __LIMIT__ = 10

之后执行构建:

  yarn build

最后在网站链入 ./dist/web-monitor.min.js 即可开启上报:

<body>
  <!-- ... -->
  <script src="/dist/web-monitor.min.js"></script>
</body>

开发

开发构建:

  yarn dev

之后在 ./test/index.html 进行本地调试,当处于 development 模式时,所有上报均会在控制台打印。

自定义上报

如果你需要自定义上报,可以在统一发送出口 ./src/sender/send.js 实现 logger.send() 方法。

实现前:

import { generalInfo } from '../monitor/general'
import { getLogger } from './index'

// 原上报方法
export function send(logstore, msg, pre = '') {
  const logger = getLogger(logstore)

  logger.send(pre, {
    ...generalInfo(),  // 通用信息对象
    ...msg             // 当前上报信息对象
  })
}

实现后:

import { generalInfo } from '../monitor/general'

// 新上报方法
export function send(logstore, msg, pre = '') {
  const logger = new NewLogger(options)

  logger.send({
    ...generalInfo(),
    ...msg
  })
}

如果需要满足更复杂的场景,可以继续实现 ./src/sender/index.js 中派发日志实例的出口。

上报一览

User-Agent

key说明
UA_uauser-agent
UA_browser_name浏览器名
UA_browser_major浏览器主版本
UA_browser_version浏览器版本
UA_cpu_architecture系统 cpu 架构
UA_engine_name浏览器渲染引擎
UA_engine_version浏览器渲染引擎版本
UA_os_name用户操作系统
UA_os_version用户操作系统版本

Common

key说明
title网页标题
url当前网址
timestamp上报时的时间戳
date上报时的格式化时间
type上报类型 error / performance
subType上报子类型

Error

JavaScript

key说明
type上报类型 error
subType上报子类型 js_error
message错误信息
position错误位置
stack栈信息
selector错误元素选择器

Resource

key说明
type上报类型 error
subType上报子类型 resource_error
tagName错误节点标签名
selector错误元素选择器

Promise

key说明
type上报类型 error
subType上报子类型 promise_error
message错误信息
position错误位置
stack栈信息
selector错误元素选择器

Performance

Base

key说明
type上报类型 performance
subType上报子类型 base
connect连接时间
domContentLoaded脚本执行时间
domRenderDom 渲染耗时
interactive首次可交互时间
load完整加载时间
parseDOMDom 解析时间
redirect重定向耗时
request请求耗时
response响应读取时间
ttfb获取首字节时间
unload上次页面卸载耗时
whiteScreen白屏时间

Paint

Core
key说明
type上报类型 performance
subType上报子类型 paint_core
FCP_duration首次内容绘制时间延迟
FCP_startTime首次内容绘制开始时间
FP_duration首次绘制时间延迟
FP_startTime首次绘制开始时间
FID
key说明
type上报类型 performance
subType上报子类型 paint_fid
FID_duration首次交互处理耗时
FID_inputDelay首次交互处理延迟
FID_selector首次交互元素选择器
FID_startTime首次交互时间

Resource

key说明
type上报类型 performance
subType上报子类型 resource
res_type_n_nametype 类型的第 n 个资源名称
res_type_n_durationtype 类型的第 n 个资源加载耗时
res_type_n_protocoltype 类型的第 n 个资源所用协议
res_type_n_sizetype 类型的第 n 个资源大小

其他

上报单位

默认统一采用 s 为单位,保留 3 位小数,你可以在 ./src/config/index.js 修改:

  /**
   * 上报保留位数
   * 默认为小数点后 3 位
   */
  export const __RETAIN__ = 3