统计指标说明

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

满意度

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

  • 满意(0~T)

  • 可容忍(T~4T)

  • 不满意(大于4T)

计算公式为:

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

image

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

JS稳定性

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

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

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

页面异常除了自动上报的JS Error外,也包括手动调用前端接口说明上报的错误。

访问速度

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

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

image
表 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请求,还包括手动调用前端接口说明上报的数据。

日志字段

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

表 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的时候上传,用于计算PVUV。

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日志数据自行分析。