@blueking/open-telemetry 0.0.22 → 0.0.24

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.
Files changed (44) hide show
  1. package/README.md +256 -70
  2. package/dist/bk-rum.global.js +2 -2
  3. package/dist/bk-rum.global.js.map +1 -1
  4. package/dist/core/config.d.ts +4 -2
  5. package/dist/core/processor.d.ts +2 -2
  6. package/dist/core/runtime-context.d.ts +4 -0
  7. package/dist/core/sampling.d.ts +0 -1
  8. package/dist/index.d.ts +2 -2
  9. package/dist/index.js +395 -477
  10. package/dist/index.js.map +1 -1
  11. package/dist/plugins/blank-screen.d.ts +1 -1
  12. package/dist/plugins/common.d.ts +3 -4
  13. package/dist/plugins/web-vitals.d.ts +0 -5
  14. package/dist/schema/attributes.d.ts +6 -8
  15. package/dist/schema/span.d.ts +24 -15
  16. package/package.json +1 -1
  17. package/skills/bk-rum-otele/SKILL.md +26 -23
  18. package/skills/bk-rum-otele/references/actions.md +166 -0
  19. package/skills/bk-rum-otele/references/api.md +248 -215
  20. package/skills/bk-rum-otele/references/architecture.md +139 -37
  21. package/skills/bk-rum-otele/references/blank-screen.md +190 -0
  22. package/skills/bk-rum-otele/references/capabilities.md +175 -83
  23. package/skills/bk-rum-otele/references/configuration.md +226 -151
  24. package/skills/bk-rum-otele/references/data-model.md +156 -24
  25. package/skills/bk-rum-otele/references/errors-security.md +168 -0
  26. package/skills/bk-rum-otele/references/extensions.md +236 -0
  27. package/skills/bk-rum-otele/references/framework-integration.md +318 -75
  28. package/skills/bk-rum-otele/references/getting-started.md +186 -70
  29. package/skills/bk-rum-otele/references/network.md +258 -0
  30. package/skills/bk-rum-otele/references/performance.md +197 -0
  31. package/skills/bk-rum-otele/references/privacy.md +236 -67
  32. package/skills/bk-rum-otele/references/production.md +264 -0
  33. package/skills/bk-rum-otele/references/session-context.md +185 -0
  34. package/skills/bk-rum-otele/references/telemetry-reference.md +479 -51
  35. package/skills/bk-rum-otele/references/transport-sampling.md +318 -32
  36. package/skills/bk-rum-otele/references/troubleshooting.md +341 -151
  37. package/skills/bk-rum-otele/references/views-routing.md +211 -0
  38. package/skills/bk-rum-otele/references/concepts.md +0 -60
  39. package/skills/bk-rum-otele/references/custom-plugin.md +0 -170
  40. package/skills/bk-rum-otele/references/plugins-basic.md +0 -135
  41. package/skills/bk-rum-otele/references/plugins-error-security.md +0 -83
  42. package/skills/bk-rum-otele/references/plugins-experience.md +0 -124
  43. package/skills/bk-rum-otele/references/plugins-network.md +0 -32
  44. package/skills/bk-rum-otele/references/plugins.md +0 -62
@@ -1,124 +0,0 @@
1
- <!-- 本文件由 packages/open-telemetry/scripts/gen-skill-references.mjs 从 wikis 自动生成,请勿手改。 -->
2
-
3
- # 体验与性能插件
4
-
5
- 体验类插件关注页面加载、资源、核心 Web 指标、空白屏、主线程阻塞和 SPA 路由切换。
6
-
7
- 以下片段聚焦 `tracking` 配置,实际初始化仍需提供必填的 `application.name` 和有效的 `transport` endpoint 配置。
8
-
9
- ## resource
10
-
11
- `resource` 插件默认开启,基于 PerformanceObserver 采集静态资源加载 span。
12
-
13
- ```ts
14
- new BkOpenTelemetry({
15
- tracking: {
16
- resource: true,
17
- },
18
- });
19
- ```
20
-
21
- 常见字段包括 `resource.type`、`resource.size`、`resource.protocol`、`url.full`、`server.address`。当 Resource Timing 数据可用时,还会上报:
22
-
23
- - `resource.redirect.*`、`resource.dns.*`、`resource.connect.*`、`resource.ssl.*`
24
- - `resource.first_byte.*`、`resource.download.*`、`resource.worker.*`
25
- - `resource.delivery_type`、`resource.render_blocking_status`
26
-
27
- 每个网络阶段同时包含相对资源开始时刻的 `start` 与阶段 `duration`,单位均为 ms。跨域资源没有返回 `Timing-Allow-Origin` 时,浏览器不会暴露完整阶段数据,SDK 会保留资源总耗时,但不生成不可信的阶段字段。
28
-
29
- **产出遥测**:span `browser.resource`(`span_type=resource`)。
30
-
31
- ## action 与挫败信号
32
-
33
- `action` 默认开启。它观察点击后的请求、DOM 变更、静态资源、错误和长任务,在活动稳定后计算 `action.loading_time`,不在浏览器统计子事件数量。
34
-
35
- 自动点击还会判断三类挫败信号:
36
-
37
- - `rage_click`:1 秒内在同一元素 100px 范围内连续点击至少三次;滚动或文本选择会中断判定。每次原始点击都保留独立 Action Span,并附加 rage 语义。
38
- - `dead_click`:点击后没有页面活动、输入、滚动或文本选择;文本输入、链接、select、textarea、canvas、contenteditable 等无法可靠判断的元素会排除。
39
- - `error_click`:点击活动窗口内产生前端错误。
40
-
41
- 信号写入 `action.frustration.type`(string[]),不生成挫败计数。为了完成连续点击判断,Action Span 最多延迟 1 秒创建;`action.id` 只在真实页面活动窗口内挂到关联事件上,不会因为这个上报等待期延长。
42
-
43
- ## webVitals
44
-
45
- `webVitals` 插件默认开启,采集 CLS、FCP、INP、LCP、TTFB。FCP/LCP/TTFB 按指标发生时刻归属 View,CLS 使用每个 View 独立的 1 秒间隔/5 秒窗口,INP 使用候选交互的近似 p98,而不是简单最大值。它只产生带 `session.id`、`view.id` 和 attribution 的原始 Span,聚合由服务端完成。
46
-
47
- **产出遥测**:span `browser.web_vital`(`span_type=vital`,含 attribution 归因)。
48
-
49
- ```ts
50
- new BkOpenTelemetry({
51
- tracking: {
52
- webVitals: true,
53
- },
54
- });
55
- ```
56
-
57
- ## blankScreen
58
-
59
- `blankScreen` 插件默认开启。它会针对每个 View 等待页面活动稳定后执行九点分层采样;只有两次连续检测都超过阈值才上报。View 切换或页面隐藏会取消旧检测,恢复可见后重新调度。
60
-
61
- ```ts
62
- new BkOpenTelemetry({
63
- tracking: {
64
- blankScreen: {
65
- rootSelector: '#app',
66
- checkDelay: 1000,
67
- confirmationDelay: 200,
68
- threshold: 0.8,
69
- ignoreSelectors: ['.global-loading', '.skeleton'],
70
- },
71
- },
72
- });
73
- ```
74
-
75
- SPA 应用建议配置 `rootSelector`。根节点在确认阶段仍不存在时会以 `missing_root` 原因上报;loading 和骨架屏样本不进入空白比例分母。
76
-
77
- **产出遥测**(仅判定为白屏时):error span `browser.blank_screen`(`span_type=error`)。
78
-
79
- ## longTask
80
-
81
- `longTask` 插件默认关闭。开启后优先通过 Long Animation Frames API 采集主线程阻塞;浏览器不支持时自动回退到 Long Tasks API,两种入口不会重复观察。
82
-
83
- ```ts
84
- new BkOpenTelemetry({
85
- tracking: {
86
- longTask: {
87
- threshold: 50,
88
- },
89
- },
90
- });
91
- ```
92
-
93
- LoAF 会补充浏览器原生的 blocking duration、render/style/layout 阶段、最重脚本归因,并把每个脚本作为 `long_task.script` Span Event。回退到 Long Tasks API 时不伪造 blocking duration,每条浏览器 attribution 都作为 `long_task.attribution` Span Event 保留。初始化阶段的 buffered entries 延迟到后续宏任务批量处理,避免 SDK 启动自身制造阻塞。不支持 LoAF 和 Long Tasks API 的浏览器会跳过插件。
94
-
95
- **产出遥测**:span `browser.long_task`(`span_type=longtask`),计数与耗时分布由服务端派生。
96
-
97
- ## View Loading Time
98
-
99
- View Loading Time 属于 View 管理器,默认启用,基于页面活动结束时间计算。
100
-
101
- 自动计算规则:
102
-
103
- - 初始加载:取 `navigationStart → loadEventEnd` 与 `navigationStart → 页面活动结束` 的较大值。
104
- - SPA 路由:取 View 创建到页面活动结束的耗时。
105
- - Fetch/XHR 进行中、静态资源完成和 DOM Mutation 都属于活动;连续 100ms 无活动视为稳定。
106
- - SDK 自身上报、`view.excludedActivityUrls` 命中的请求,以及 `data-bk-excluded-activity-mutations` 节点下的 DOM 变更不参与计算。
107
-
108
- ```ts
109
- new BkOpenTelemetry({
110
- tracking: {
111
- view: {
112
- loadingTime: true,
113
- excludedActivityUrls: [/\/events\/stream$/, '/analytics'],
114
- },
115
- },
116
- });
117
- ```
118
-
119
- 如果业务有明确的异步渲染完成点,可覆盖自动结果:
120
-
121
- ```ts
122
- await loadAlarmDetail();
123
- bkOT.setViewLoadingTime();
124
- ```
@@ -1,32 +0,0 @@
1
- <!-- 本文件由 packages/open-telemetry/scripts/gen-skill-references.mjs 从 wikis 自动生成,请勿手改。 -->
2
-
3
- # 网络扩展
4
-
5
- ## Fetch/XHR
6
-
7
- `tracking.request` 默认开启。SDK 使用单层 patch 创建 `browser.resource` CLIENT Span:
8
-
9
- 1. `excludedUrls` 命中时完全跳过。
10
- 2. 创建带 `event.id/event.timestamp/event.type=resource` 的请求 Span。
11
- 3. `allowedTracingUrls` 命中时注入 W3C Trace Context。
12
- 4. 请求完成后补充状态、错误和 Resource Timing。
13
- 5. `request.beforeSend` 可修改属性或返回 `false` 丢弃 Span。
14
-
15
- SDK 不读取或上报请求/响应 Body。
16
-
17
- ## 静态资源
18
-
19
- `tracking.resource` 默认开启,使用 Resource PerformanceObserver 创建 `browser.resource` Span。Fetch/XHR 的 PerformanceEntry 只回填已有请求 Span,不重复上报。
20
-
21
- ## WebSocket
22
-
23
- `tracking.websocket` 默认关闭。启用后通过 Proxy 保持原生静态常量、`instanceof` 和子类行为,只监听连接生命周期:
24
-
25
- - `browser.websocket` `event.phase=connect`
26
- - `browser.websocket` `event.phase=open`
27
- - `browser.websocket` `event.phase=error`
28
- - `browser.websocket` `event.phase=close`
29
-
30
- 同一连接通过 `websocket.connection.id` 关联。SDK 不包裹 `send()`,不采集消息内容、数量或字节数,也不在客户端聚合建连时长。
31
-
32
- 需要 Session/View 关联或活动总线时使用自定义 RUM 插件和 `context.startSpan()`;标准第三方采集可通过 OpenTelemetry instrumentation 扩展。
@@ -1,62 +0,0 @@
1
- <!-- 本文件由 packages/open-telemetry/scripts/gen-skill-references.mjs 从 wikis 自动生成,请勿手改。 -->
2
-
3
- # 插件总览
4
-
5
- 插件是 `@blueking/open-telemetry` 的能力边界。获得采集授权后,SDK 先建立 Session、Device、View 上下文,再启动请求采集和其他 RUM 插件。
6
-
7
- ## 默认插件组合
8
-
9
- ```ts
10
- new BkOpenTelemetry({
11
- application: { name: 'demo' },
12
- transport: { endpoint: 'https://collector.example.com' },
13
- tracking: {
14
- request: true,
15
- resource: true,
16
- error: true,
17
- webVitals: true,
18
- blankScreen: true,
19
- device: true,
20
- action: true,
21
- },
22
- });
23
- ```
24
-
25
- `session` 和 View 生命周期是不可关闭的 RUM 基础能力;`tracking.view` 只切换自动/手动策略及 loading time。
26
-
27
- ## 能力分类
28
-
29
- | 分类 | 插件 | 主要信号 |
30
- | ---------- | ----------------------------------------------------------------- | ----------------------------- |
31
- | 基础上下文 | Session、View、`device` | span、runtime attributes |
32
- | 性能体验 | View Loading Time、`resource`、`webVitals`、`blankScreen`、`longTask` | span |
33
- | 错误安全 | `error`、`cspViolation` | span |
34
- | 网络扩展 | Fetch/XHR request patch、`websocket` | span |
35
- | 用户行为 | `action`、`reportAction()` | span |
36
-
37
- ## 插件启用规则
38
-
39
- 获得采集授权后,已启用插件会启动并维护页面生命周期;Session 级确定性 sampler 与 exporter processor 统一决定数据是否导出。未授权时不会 patch 浏览器 API、创建 Session 或启动插件;运行期可通过 `setTrackingConsent()` 切换。
40
-
41
- ```ts
42
- new BkOpenTelemetry({
43
- application: { name: 'demo' },
44
- transport: { endpoint: 'https://collector.example.com' },
45
- session: {
46
- sampleRate: 0.1,
47
- },
48
- tracking: {
49
- error: true,
50
- webVitals: true,
51
- action: true,
52
- },
53
- });
54
- ```
55
-
56
- ## 选择建议
57
-
58
- - 首次接入:使用默认插件即可。
59
- - 需要分析慢页面:View Loading Time 默认开启;再开启 `longTask` 获取主线程与脚本归因。
60
- - 需要为请求增加业务字段或过滤请求:配置 `request.beforeSend` / `request.excludedUrls`。
61
- - 需要分析 CSP:开启 `cspViolation`。
62
- - 需要分析实时通信:开启 `websocket`,注意避免多个 SDK 实例重复 patch。