@blueking/open-telemetry 0.0.5 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +50 -2
- package/dist/bk-rum.global.js +3 -3
- package/dist/bk-rum.global.js.map +1 -1
- package/dist/core/config.d.ts +5 -1
- package/dist/core/id.d.ts +8 -0
- package/dist/core/plugin.d.ts +15 -2
- package/dist/core/sdk.d.ts +2 -2
- package/dist/core/throttle.d.ts +20 -0
- package/dist/index.js +798 -543
- package/dist/index.js.map +1 -1
- package/dist/plugins/csp-violation.d.ts +15 -2
- package/dist/plugins/device.d.ts +18 -2
- package/dist/plugins/http-body.d.ts +0 -17
- package/dist/plugins/long-task.d.ts +10 -2
- package/dist/plugins/page-view.d.ts +1 -1
- package/dist/plugins/route-timing.d.ts +1 -5
- package/dist/plugins/session.d.ts +0 -4
- package/dist/plugins/web-vitals.d.ts +1 -1
- package/dist/plugins/websocket.d.ts +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -19,7 +19,7 @@ const bkOT = new BkOpenTelemetry({
|
|
|
19
19
|
### CDN 引入
|
|
20
20
|
|
|
21
21
|
```html
|
|
22
|
-
<script src="https://unpkg.com/@blueking/open-telemetry
|
|
22
|
+
<script src="https://unpkg.com/@blueking/open-telemetry/dist/bk-rum.global.js"></script>
|
|
23
23
|
<script>
|
|
24
24
|
const bkOT = new BkOpenTelemetry({
|
|
25
25
|
endpoint: 'https://your-otlp-collector',
|
|
@@ -75,6 +75,7 @@ new BkOpenTelemetry({
|
|
|
75
75
|
enabled: true,
|
|
76
76
|
debug: false,
|
|
77
77
|
sampleRate: 1,
|
|
78
|
+
spanProcessor: 'batch',
|
|
78
79
|
headers: {
|
|
79
80
|
'X-Custom-Header': 'value',
|
|
80
81
|
},
|
|
@@ -92,10 +93,13 @@ new BkOpenTelemetry({
|
|
|
92
93
|
- `enabled`: 是否启用 SDK,默认 `true`。
|
|
93
94
|
- `debug`: 是否在控制台打印上报数据,默认 `false`。
|
|
94
95
|
- `sampleRate`: 采样率,范围 `0 - 1`,默认 `1`。
|
|
96
|
+
- `spanProcessor`: trace 处理模式,默认 `batch`;可选 `simple` 用于本地调试。
|
|
95
97
|
- `headers`: 附加上报请求头,显式传入的 header 可覆盖 token 生成的同名 header。
|
|
96
98
|
- `signalEndpoints`: 分别配置 trace、metric、log 的完整上报地址,优先级高于统一 `endpoint`。
|
|
97
99
|
- `traces` / `metrics` / `logs`: 分别配置 trace、metric、log 的高级请求参数;其中 `endpoint` 优先级低于 `signalEndpoints`。
|
|
98
100
|
|
|
101
|
+
`spanProcessor: 'batch'` 会批量缓存并定时上报 trace,适合生产环境;`spanProcessor: 'simple'` 会在 span 结束后立即触发导出,适合本地调试,不建议生产环境使用。
|
|
102
|
+
|
|
99
103
|
## RUM 采集配置
|
|
100
104
|
|
|
101
105
|
所有采集能力统一放在 `rum` 下配置:
|
|
@@ -139,7 +143,7 @@ new BkOpenTelemetry({
|
|
|
139
143
|
- `pageView`: 采集页面访问和 SPA 路由变化。
|
|
140
144
|
- `error`: 采集 JS 错误、未处理 Promise rejection、资源加载失败。
|
|
141
145
|
- `webVitals`: 采集 LCP、CLS、INP、FCP、TTFB。
|
|
142
|
-
- `blankScreen`:
|
|
146
|
+
- `blankScreen`: 检测白屏,SPA 项目建议显式配置 `rootSelector` 为应用挂载点(详见下文「白屏检测」)。
|
|
143
147
|
- `device`: 采集浏览器、系统、网络等设备信息。
|
|
144
148
|
- `session`: 维护匿名会话。
|
|
145
149
|
- `websocket`: 采集 WebSocket 连接和消息事件。
|
|
@@ -148,6 +152,50 @@ new BkOpenTelemetry({
|
|
|
148
152
|
- `cspViolation`: 采集 CSP violation。
|
|
149
153
|
- `httpBody`: 采集请求/响应 body,建议配合 `redact` 做脱敏。
|
|
150
154
|
|
|
155
|
+
### 白屏检测
|
|
156
|
+
|
|
157
|
+
页面就绪后延迟一段时间,在视口的 5 个采样点用 `document.elementFromPoint` 判断这些点是否落在"根元素"或裸 body 上,命中比例超过阈值即视为白屏。命中后会同时上报:
|
|
158
|
+
|
|
159
|
+
- metric: `browser.blank_screen.count`(仅带低基数维度 `bk.rum.blank_screen.root`)
|
|
160
|
+
- log: `browser.blank_screen`(携带评分、命中元素、DOM 节点数等高基数信息)
|
|
161
|
+
|
|
162
|
+
完整配置示例:
|
|
163
|
+
|
|
164
|
+
```javascript
|
|
165
|
+
new BkOpenTelemetry({
|
|
166
|
+
endpoint: 'https://your-otlp-collector',
|
|
167
|
+
token: 'your-report-token',
|
|
168
|
+
rum: {
|
|
169
|
+
blankScreen: {
|
|
170
|
+
// SPA 项目强烈建议设置为应用挂载点,例如 '#app' / '#root'
|
|
171
|
+
rootSelector: '#app',
|
|
172
|
+
// 页面 ready 后延迟多少毫秒开始检测,默认 3000
|
|
173
|
+
checkDelay: 3000,
|
|
174
|
+
// 命中比例阈值,范围 0 - 1,默认 0.8
|
|
175
|
+
threshold: 0.8,
|
|
176
|
+
// 自定义"加载中"占位选择器,命中样本会从分母里剔除,避免骨架屏被误判为白屏
|
|
177
|
+
ignoreSelectors: ['.app-loading', '.page-skeleton'],
|
|
178
|
+
},
|
|
179
|
+
},
|
|
180
|
+
});
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
配置项说明:
|
|
184
|
+
|
|
185
|
+
- `rootSelector`: 默认 `body`。**SPA 项目(React/Vue 等)必须显式配置为应用挂载点**,否则一旦应用成功 mount,采样点会落在挂载根(如 `#app`)的子节点上,永远不会判定为白屏;反之挂载失败时挂载根本身仍存在,配置成 `#app` 后才能正确命中。
|
|
186
|
+
- `checkDelay`: 从 `DOMContentLoaded` 起算的延迟(毫秒),默认 `3000`。SPA 首屏渲染较慢的项目可以适当调大。
|
|
187
|
+
- `threshold`: 命中比例阈值(0 - 1),默认 `0.8`。
|
|
188
|
+
- `ignoreSelectors`: 项目自定义的"加载中"占位选择器。SDK 内置了一组通用兜底(`[data-loading="true"]`、`[aria-busy="true"]`、`.loading`、`.is-loading`、`.spinner`、`.skeleton`、`.bk-loading`),但**强烈建议项目按自己的骨架屏/loading 约定显式追加**,命中此选择器的样本既不算"空白"也不算"非空白",会从分母里剔除。
|
|
189
|
+
|
|
190
|
+
判定算法(伪代码):
|
|
191
|
+
|
|
192
|
+
```text
|
|
193
|
+
score = empty_samples / (total_samples - loading_samples)
|
|
194
|
+
isBlank = score >= threshold
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
如果所有采样点都命中 loading(说明页面整体还在加载),本次检测会被视为待定,不上报。
|
|
198
|
+
|
|
151
199
|
## 公共属性
|
|
152
200
|
|
|
153
201
|
通过 `attributes` 给不同类型数据补充公共属性:
|