应用数据采集¶
Windows 文档同时覆盖 RUM、Log 和 HTTP Trace 三类数据能力。.NET / C#、Native C/C++、WebView2 和 Electron 原生 Bridge 使用同一 Windows SDK 产品身份。Electron Renderer 中的 Browser RUM 只负责采集和序列化,可信字段、Session、队列和上传由 Windows Native Core 接管。
数据域¶
| 数据域 | 作用 | 上报行为 |
|---|---|---|
| RUM | 记录 Session、View、Action、Resource、Error 和 Long Task | 写入 RUM 队列并上报 RUM Intake |
| Log | 记录应用日志,并可关联当前 RUM 上下文 | 写入独立 Log 队列并上报 Logging Intake |
| HTTP Trace | 向出站请求注入 Trace Header,并可关联对应 RUM Resource | 不独立上报 APM Span |
RUM 公共字段¶
| 字段 | 类型 | 说明 |
|---|---|---|
app_id |
string | 控制台中创建的应用 ID。 |
service |
string | .NET 的 RumConfig.ServiceName、Native 的 guance_rum_config.service_name 或 Electron 原生配置。 |
env |
string | prod、gray、pre、common 或 local。 |
version |
string | 应用版本。 |
sdk_name |
string | Windows .NET、Native Core、WebView2 与 Electron 原生 Bridge 固定为 df_windows_rum_sdk。 |
sdk_version |
string | Windows SDK/Native Bridge 配置的版本。 |
session_id |
string | 当前用户 Session 标识。 |
view_id |
string | 当前活动 View 标识。 |
action_id |
string | 当前活动 Action 标识,存在时写入。 |
userid |
string | 匿名 Session ID 或通过用户 API 设置的用户 ID。 |
os、os_version |
string | Windows 名称和版本。 |
arch |
string | 进程所在设备架构。 |
screen_size |
string | 可获取时记录主显示器尺寸。 |
locale |
string | 当前区域设置。 |
network_type |
string | wifi、ethernet、mobile、none 或 unknown。 |
自定义上下文只补充不存在的字段,不能覆盖 SDK 保留字段。
RUM 数据类型¶
Session 是控制台根据同一 session_id 下的事件聚合出的用户访问过程,不需要单独调用 Session API。
| 类型 | 说明 | 典型来源 |
|---|---|---|
| View | 窗口或业务页面的可见周期和性能 | Window/Form 生命周期、WinUI 3 显式关联、Native 窗口事件、WebView2 导航 |
| Action | 用户操作及其耗时 | 点击、菜单、选择、切换、输入、快捷键或手动 Action |
| Resource | 网络请求、状态和耗时 | HttpClient、WinHTTP、WebView2 Fetch/XHR/Resource 或手动 Resource |
| Error | 应用和页面错误 | 未处理 .NET 异常、Native 崩溃恢复、WebView2 JavaScript Error 或手动 Error |
| Long Task | UI 主线程长时间阻塞 | Windows UI 线程探测或手动 Long Task |
RUM 能力矩阵¶
| 接入方式 | View | Action | Resource | Error | Long Task |
|---|---|---|---|---|---|
| WPF | 自动 | 自动 | HttpClient |
未处理异常 | UI 线程监控 |
| WinForms | 自动 | 自动 | HttpClient |
未处理异常 | UI 线程监控 |
| WinUI 3 | 关联窗口后自动 | 自动 | HttpClient |
未处理异常 | UI 线程监控 |
| Native C/C++ | 窗口事件显式接入 | 消息或命令显式接入 | WinHTTP 适配器或手动 API | 崩溃恢复或手动 API | HWND Watchdog 或手动 API |
| WebView2 | 页面导航 | 页面交互 | Fetch/XHR/Resource | JavaScript Error | 不采集 renderer Long Task |
| Electron | Browser RUM | Browser RUM | Browser RUM | Browser RUM | Browser RUM |
Native SDK 不安装进程级 Detour Hook。应用需要显式传入 HWND、WinHTTP Handle 或业务生命周期事件,接入方式请参考桌面 UI 框架和自定义采集规则。
Log 能力矩阵¶
| 接入方式 | 自定义 Log | 批量 Log | 自动日志来源 | 关联 RUM |
|---|---|---|---|---|
| .NET / C# | RumSdk.AddLog() |
RumSdk.AddLogs() |
可采集 System.Diagnostics.Trace |
可配置 |
| Native C/C++ | guance_rum_add_log() |
guance_rum_add_logs() |
当前不拦截 Console、ETW 或第三方日志库 | 可配置 |
| WebView2 | 由 Windows 宿主写入 | 由 Windows 宿主写入 | 不自动桥接页面 Console | 使用宿主当前 RUM 上下文 |
| Electron | 不适用 | 不适用 | Windows SDK 不采集 renderer Log | 由页面采用的 SDK 管理 |
Log 使用独立队列。启用 RUM 关联后,写入日志时的 session_id、view_id 和 action_id 会随 Log 一起上报;已经入队的 Log 不会因后续上下文变化而修改。
Trace 能力矩阵¶
| 接入方式 | 自动边界 | 手动上下文 | RUM Resource 关联 | 独立 Span 上报 |
|---|---|---|---|---|
| .NET / C# | HttpClient 诊断订阅或 RumHttpMessageHandler |
ContextProvider |
可配置 | 不支持 |
| Native C/C++ | guance_rum_winhttp.hpp |
guance_rum_create_trace_context() 或回调 |
可配置 | 不支持 |
| WebView2 | 页面请求由 WebView2/Browser 侧处理 | 由页面 SDK 管理 | 页面 Resource 桥接 | Windows SDK 不上传 |
| Electron | Browser RUM SDK | Browser RUM SDK | Browser RUM SDK | Windows SDK 不上传 |
HTTP Trace 生成或透传请求 Header,并可把 trace_id、span_id 写入对应 RUM Resource。若需要完整 APM Span,仍需应用使用单独的 APM Tracer。具体格式和目标过滤方式请参考 Trace 配置。
数据关联¶
- 五类 RUM 数据共享当前
session_id。 - Action、Resource、Error 和 Long Task 关联当前
view_id。 - 作用域 Action 内产生的 Resource、Error 和 Long Task 会关联对应
action_id。 - 新 View 开始时会结束上一个活动 View。
- 用户信息更新只影响后续数据,不修改历史数据。
- Log 和 HTTP Trace 是否关联 RUM 由各自的
EnableLinkRumData或enable_link_rum_data控制。
Resource 耗时¶
自动 HttpClient Resource 默认记录总耗时,并标记耗时精度。通过 HttpResourceTimingProvider 或 RumResourceTiming.FromPhases() 可以补充 DNS、TCP、TLS 和 TTFB 阶段。
Native WinHTTP 适配器记录请求开始、结束、状态、字节数和 Trace 关联信息。应用没有可靠的阶段耗时时,不应估算或伪造这些字段。
数据隐私¶
Resource URL 查询参数、HTTP Header、Trace 目标和 Log 属性的处理方式请参考隐私与数据脱敏。用户、自定义上下文和手动事件属性需要由应用在写入前完成业务脱敏。