本文说明ARMS前端监控各页面的关键统计指标含义以及日志字段的含义。

满意度

性能指数APDEX(全称Application Performance Index)是一个国际通用的应用性能计算标准。该标准将用户对应用的体验定义为三个等级:

  • 满意(0~T)
  • 可容忍(T~4T)
  • 不满意(大于4T)

计算公式为:

Apdex=(满意数+可容忍数/2)/总样本量
Apdex

图片来源:apdex.org

ARMS取页面首次渲染时间(First Paint Time)作为计算指标,默认定义T为2秒。

JS稳定性

JS稳定性在ARMS中是指页面的JS错误率。

在一个PV周期内,如果发生过错误(JS Error),则此PV周期为错误样本。

错误率=错误样本量/总样本量

页面异常除了自动上报的JS Error外,也包括手动调用API参考上报的错误。

访问速度

在ARMS中,访问速度是指页面的首次渲染时间

在性能测速统计中,所有数据都是根据W3C规范中定义的Navigation Timing API计算出来的。

Navigation Timing API

图片来源:www.w3.org

表 1. Web端关键性能指标
上报字段 描述 计算公式 备注
FMP(First Meaningful Paint) 首屏时间 参见FMP技术实现方案
FPT(First Paint Time) 首次渲染时间(白屏时间) responseEnd - fetchStart 从请求开始到浏览器开始解析第一批HTML文档字节的时间差。
TTI(Time to Interact) 首次可交互时间 domInteractive - fetchStart 浏览器完成所有HTML解析并且完成DOM构建,此时浏览器开始加载资源。
Ready HTML加载完成时间, 即DOM Ready时间。 domContentLoadEventEnd - fetchStart 如果页面有同步执行的JS,则同步JS执行时间=Ready-TTI。
Load 页面完全加载时间 loadEventStart - fetchStart Load=首次渲染时间+DOM解析耗时+同步JS执行+资源加载耗时。
FirstByte 首包时间 responseStart - domainLookupStart
表 2. 区间段耗时字段含义
上报字段 描述 计算公式 备注
DNS DNS查询耗时 domainLookupEnd - domainLookupStart
TCP TCP连接耗时 connectEnd - connectStart
TTFB(Time to First Byte) 请求响应耗时 responseStart - requestStart TTFB有多种计算方式,ARMS采用的标准,请参见Google Development定义
Trans 内容传输耗时 responseEnd - responseStart
DOM DOM解析耗时 domInteractive - responseEnd
Res 资源加载耗时 loadEventStart - domContentLoadedEventEnd 表示页面中的同步加载资源。
SSL SSL安全连接耗时 connectEnd - secureConnectionStart 只在HTTPS下有效。
表 3. 小程序关键性能指标
上报字段 描述 计算方式 备注
FPT(First Paint Time) 首次渲染时间 onShow (first page) - onLaunch (app) 小程序从onLaunch到第一个页面onShow之间的时间。

API成功率

API成功率=接口调用成功的样本量/总样本量

统计API成功率的样本除了自动上报的AJAX请求,还包括手动调用API参考上报的数据。

日志字段

下列表格说明了日志中的字段含义。

表 4. 通用字段
字段 含义
uid 用户ID,用于标识访问用户,可手动配置,用于根据用户ID检索。如果不配置,则由SDK自动生成且每半年更新一次。
username 用户名称,需要通过SDK主动上报,否则内容为空。
release 应用版本号
environment 生产环境
page 页面
sampling 采样率
tag 用户自定义Tag
表 5. API
字段 含义
api API请求地址,不带参数。
msg responseText:字符串形式的响应数据。
code 状态码
time API耗时
success API成功与否
表 6. JS错误
字段 含义
msg 报错内容
stack 错误堆栈
cate 错误类型:
  • EvalError:与eval()有关的错误。
  • RangeError:数值变量或参数超出其有效范围。
  • ReferenceError :无效引用。
  • SyntaxError:语法错误。
  • TypeError:变量或参数不属于有效类型。
  • URIError:给encodeURI()decodeURI()传递的参数无效。
  • AggregateError:其中包含了由一个操作产生且需要报告的多个错误。如:Promise.any()产生的错误。
  • 自定义错误类型。
file 出错文件
line 出错行
col 出错列
times 出错次数

日志说明

表 7. 多维分析
日志类型 Type 查询字段

(通用指标字段:所有日志皆可查询过滤)

PV日志 PV 在页面Onload的时候上传,用于计算PV和UV。

PV、UV计算方式:

  • PV:PV日志的条数。
  • UV:对于PV日志,按照UID去重。
性能日志 Perf 性能指标
慢加载日志

(>8s的性能日志)

RES 性能指标
JS错误日志 Error
  • JS错误消息
  • JS文件URL
  • JS错误类型
API日志 API
  • API名称
  • API消息
  • HTTP状态码
  • API耗时
  • 域名
  • API是否报错
  • TraceID
SUM日志 SUM 自定义Key:事件名(如scroll-count)
AVG日志 AVG 自定义Key:事件名(如scroll-time)
资源错误日志 ResourceError 资源错误SRC
Custom
说明
  • Custom是主动上报类型,一般用于自定义的业务监控需求,只有主动上报(调用ARMS探针的API)才有,默认情况下不会主动采集数据。
  • Custom上报数据不会在控制台上展示,您可以基于SLS日志数据自行分析。