You need to enable JavaScript to run this app.
文档中心
应用性能监控全链路版

应用性能监控全链路版

复制全文
下载 pdf
SDK 接入
上报格式
复制全文
下载 pdf
上报格式
如果使用beforeSend 生命周期 或者使用条件采样,您需要关注SDK 的上报格式。​
ReportEvent​
​
export type SendEvent =​
| CustomReport​
| HttpReport​
| JsErrorReport​
| PageviewReport​
| PerformanceReport​
| PerformanceLongTaskReport​
| PerformanceTimingReport​
| ResourceErrorReport​
| ResourceReport​
| BlankReport​
​
export type WebReport = Omit<SendEvent,'common'> ​
​
export type ReportEvent<T extends WebReport> = T & {​
extra?: Partial<Common>​
// 允许额外上报一些 context 覆盖组装上下文,主要在预收集与预加载场景​
overrides?: Partial<Common>​
}​
​
Common​
​
interface Common {​
/** 应用标识 */​
aid: number​
/** 页面标识 */​
pid: string​
/** 页面访问标识,用于区别同一个 pid 的多次访问 */​
view_id: string​
/** 用户标识,由接入方设定 */​
user_id: string​
/** 设备标识,保存在本地存储 */​
device_id: string​
/** 实例会话标识 */​
session_id: string​
/** 自定义维度 */​
context: { [key: string]: string }​
/** 代码部署版本,注意:release 请勿前导 0 */​
release: string​
/** 代码部署环境 */​
env: string​
/** 环境 */​
url: string​
protocol: string​
domain: string​
path: string​
query: string​
/** 动态变化,需要监听 */​
network_type: string​
/** 客户端时间戳,发生时间 */​
timestamp: number​
/** 上报 SDK 版本 */​
sdk_version: string​
/** 上报 SDK 名称, 以区分第三方 SDK */​
sdk_name: string​
/** 当前事件命中的有效采样率 */​
sample_rate: number​
}​
​
Custom​
​
interface CustomReport {​
/** custom */​
ev_type: string​
payload: CustomPayload​
common: Common​
}​
​
interface CustomPayload {​
/** 自定义名称, type 为 event时必填 */​
name?: string​
/** 自定义数值 */​
metrics?: { [key: string]: number }​
/** 事件本身的维度,不要跟外部 context 合并 */​
categories?: { [key: string]: string }​
/** 自定义日志内容,可以是日志或者对象的 JSON 表示, type为log 时必填。建议长度不要超过1024,平台侧可能会截断过长的日志 */​
content?: string​
/** 自定义日志的级别 debug | info | warn | error */​
level?: string​
/** 自定义类型 event | log */​
type: string​
}​
​
Http​
​
interface HttpReport {​
/** http */​
ev_type: string​
payload: HttpPayload​
common: Common​
}​
​
interface HttpPayload {​
/** xhr | fetch | request | jsbridge */​
api: string​
request: HttpReq​
response: HttpRes​
duration: number​
extra?: { [key: string]: string }​
trace?: HttpTrace​
}​
​
interface HttpReq {​
method: string​
url: string​
protocol: string​
domain: string​
path: string​
query: string​
headers?: { [key: string]: string }​
body?: string​
timestamp: number​
}​
​
interface HttpRes {​
status: number​
is_custom_error: boolean​
headers?: { [key: string]: string }​
body?: string​
timing?: PerformanceResourceTiming​
timestamp: number​
}​
​
interface HttpTrace {​
trace_id: string​
trace_host: string​
log_id: string​
}​
​
JS Error​
​
interface JsErrorReport {​
/** js_error */​
ev_type: string​
payload: JsErrorPayload​
common: Common​
}​
​
interface JsErrorPayload {​
error: JsError​
breadcrumbs: Array<Breadcrumb>​
extra?: { [key: string]: string }​
react?: ReactInfo​
}​
​
interface JsError {​
/** 错误名称 */​
name?: string​
/** 错误信息 */​
message: string​
/** 堆栈 */​
stack?: string​
/** 错误文件名 */​
filename?: string​
lineno?: string​
colno?: string​
}​
​
interface Breadcrumb {​
/** dom | http */​
type: string​
/** xpath, keyvalue | url */​
message: string​
/** ui.click, ui.keypress | post,get */​
category: string​
/** status: 400 for http */​
data?: { [key: string]: string }​
timestamp: number​
}​
​
interface ReactInfo {​
version: string​
componentStack: string​
}​
​
Pageview​
​
interface PageviewReport {​
/** pageview */​
ev_type: string​
payload: PageviewPayload​
common: Common​
}​
​
interface PageviewPayload {​
pid: string​
/** 触发原因 init | path change | hash change | history state change | user-set */​
source: string​
}​
​
Performance Longtask​
​
interface PerformanceLongtaskReport {​
/** performance_longtask */​
ev_type: string​
payload: PerformanceLongtaskPayload​
common: Common​
}​
​
interface PerformanceLongtaskPayload {​
/** 性能指标类型, perf => 传统性能, spa => SPA 性能, garfish => garfish 微前端性能 */​
type: string​
longtasks: Array<PerformanceLongtask>​
}​
​
interface PerformanceLongtask {​
/** struct PerformanceEntry { */​
duration: number​
entryType: string​
name: string​
startTime: number​
/** } */​
attribution?: Array<TaskAttributionTiming>​
}​
​
interface TaskAttributionTiming {​
/** struct PerformanceEntry { */​
duration: number​
entryType: string​
name: string​
startTime: number​
/** } */​
containerType: string​
containerSrc: string​
containerId: string​
containerName: string​
}​
​
Performance Timing​
​
interface PerformanceTimingReport {​
/** performance_timing */​
ev_type: string​
payload: PerformanceTimingPayload​
common: Common​
}​
​
interface PerformanceTimingPayload {​
timing?: PerformanceTiming​
navigation_timing?: PerformanceNavigationTiming​
/** 是否跳出 */​
isBounced: boolean​
}​
​
interface PerformanceTiming {​
connectEnd: number​
connectStart: number​
domComplete: number​
domContentLoadedEventEnd: number​
domContentLoadedEventStart: number​
domInteractive: number​
domLoading: number​
domainLookupEnd: number​
domainLookupStart: number​
fetchStart: number​
loadEventEnd: number​
loadEventStart: number​
navigationStart: number​
redirectEnd: number​
redirectStart: number​
requestStart: number​
responseEnd: number​
responseStart: number​
secureConnectionStart: number​
unloadEventEnd: number​
unloadEventStart: number​
}​
​
interface PerformanceNavigationTiming {​
/** struct PerformanceResourceTiming { */​
/** struct PerformanceEntry { */​
duration: number​
entryType: string​
name: string​
startTime: number​
/** } */​
connectEnd: number​
connectStart: number​
decodedBodySize: number​
domainLookupEnd: number​
domainLookupStart: number​
encodedBodySize: number​
fetchStart: number​
initiatorType: string​
nextHopProtocol: string​
redirectEnd: number​
redirectStart: number​
requestStart: number​
responseEnd: number​
responseStart: number​
secureConnectionStart: number​
transferSize: number​
workerStart: number​
/** } */​
domComplete: number​
domContentLoadedEventEnd: number​
domContentLoadedEventStart: number​
domInteractive: number​
loadEventEnd: number​
loadEventStart: number​
redirectCount: number​
type: string​
unloadEventEnd: number​
unloadEventStart: number​
}​
​
interface PerformanceResourceTiming {​
/** struct PerformanceEntry { */​
duration: number​
entryType: string​
name: string​
startTime: number​
/** } */​
connectEnd: number​
connectStart: number​
decodedBodySize: number​
domainLookupEnd: number​
domainLookupStart: number​
encodedBodySize: number​
fetchStart: number​
initiatorType: string​
nextHopProtocol: string​
redirectEnd: number​
redirectStart: number​
requestStart: number​
responseEnd: number​
responseStart: number​
secureConnectionStart: number​
transferSize: number​
workerStart: number​
serverTiming?: Array<PerformanceServerTiming>​
}​
​
interface PerformanceServerTiming {​
description: string​
duration: number​
name: string​
}​
​
更多参数说明,请参见mdn Web APIs。​
Performance​
​
interface PerformanceReport {​
/** performance */​
ev_type: string​
payload: PerformancePayload​
common: Common​
}​
​
interface PerformancePayload {​
/** 指标名称 */​
name: string​
/** 当前值 */​
value: number​
/** 性能指标类型, perf => 传统性能, spa => SPA 性能 */​
type: string​
/** 是否支持 */​
isSupport?: boolean​
/** 是否是Polyfill */​
isPolyfill?: boolean​
/** 是否跳出 */​
isBounced?: boolean​
/** 是否自定义 */​
isCustom?: boolean​
/** 指标的相关信息 */​
extra?: { [key: string]: string }​
}​
​
Resource Error​
​
interface ResourceErrorReport {​
/** resource_error */​
ev_type: string​
payload: ResourceErrorPayload​
common: Common​
}​
​
interface ResourceErrorPayload {​
/** 触发标签的类型 script/link/css */​
type: string​
url: string​
protocol: string​
domain: string​
path: string​
query: string​
timing?: PerformanceResourceTiming​
}​
​
Resource​
​
type ResourcePayload = PerformanceResourceTiming​
​
interface ResourceReport {​
/** resource */​
ev_type: string​
payload: ResourcePayload​
common: Common​
}​
​
​
最近更新时间:2025.06.18 19:25:23
这个页面对您有帮助吗?
有用
有用
无用
无用