跳转至

应用数据采集

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 .NETRumConfig.ServiceName、Native 的 guance_rum_config.service_name 或 Electron 原生配置。
env string prodgrayprecommonlocal
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。
osos_version string Windows 名称和版本。
arch string 进程所在设备架构。
screen_size string 可获取时记录主显示器尺寸。
locale string 当前区域设置。
network_type string wifiethernetmobilenoneunknown

自定义上下文只补充不存在的字段,不能覆盖 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_idview_idaction_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_idspan_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 由各自的 EnableLinkRumDataenable_link_rum_data 控制。

Resource 耗时

自动 HttpClient Resource 默认记录总耗时,并标记耗时精度。通过 HttpResourceTimingProviderRumResourceTiming.FromPhases() 可以补充 DNS、TCP、TLS 和 TTFB 阶段。

Native WinHTTP 适配器记录请求开始、结束、状态、字节数和 Trace 关联信息。应用没有可靠的阶段耗时时,不应估算或伪造这些字段。

数据隐私

Resource URL 查询参数、HTTP Header、Trace 目标和 Log 属性的处理方式请参考隐私与数据脱敏。用户、自定义上下文和手动事件属性需要由应用在写入前完成业务脱敏。

文档评价

文档内容是否对您有帮助? ×