自定义采集规则¶
自动采集无法表达业务语义时,可以手动上报 View、Action、Resource、Error 和 Long Task。.NET / C# 使用 RumSdk,Native C/C++ 使用 guance_rum.h 中的 C ABI;两种接入产生相同的 Windows RUM 数据类型。
避免重复采集
手动 API 和自动采集写入同一 Session。已经由窗口、控件、HttpClient、WinHTTP 或 WebView2 自动采集的数据,不要再次手动上报。
View¶
启动新的 View 会自动结束当前活动 View。View 名称应描述稳定页面,不要包含订单号、用户 ID、对象地址或搜索词。
Action¶
作用域 Action¶
用于采集一段业务操作及其内部 Resource、Error 和 Long Task:
已知耗时的 Action¶
Resource¶
var resourceId = RumSdk.StartResource(
"https://api.example.com/orders",
"GET");
RumSdk.StopResource(
resourceId,
statusCode: 200,
timing: RumResourceTiming.FromTotalElapsed(
TimeSpan.FromMilliseconds(120),
source: "manual"),
responseSize: 2048,
requestSize: 0,
resourceType: "http");
如果应用已经测量 DNS、TCP、TLS 和 TTFB,可以使用 RumResourceTiming.FromPhases() 写入阶段耗时;没有可靠数据时只写总耗时。
C++ 应用可以使用 ResourceScope 保证异常或提前返回时仍结束 Resource:
#include "guance_rum.hpp"
guance::rum::ResourceScope resource(
rum,
"https://api.example.com/orders",
"GET",
"http");
const auto response = send_request();
resource.complete(
response.status_code,
response.body_size,
response.request_size);
纯 C 应用可以配对调用 guance_rum_start_resource() 与 guance_rum_stop_resource();需要写入 trace_id、span_id、请求大小或 HTTP 协议时使用 guance_rum_stop_resource_ext()。
请求失败时仍需结束 Resource,并将状态码设为 0。启用了 HttpClient 或 WinHTTP 自动 Resource 后,不要为同一请求再次调用手动 API。
Error¶
Native 崩溃监控在下次启动时恢复崩溃 Error;不要在崩溃处理器中再调用手动 Error API。
Long Task¶
已开启 UI 线程阻塞监控时,不要对同一段阻塞再次手动上报。
Flush¶
手动事件先进入本地队列。如需在关键流程后立即尝试上报:
应用正常退出时仍应调用 ShutdownAsync() 或 guance_rum_shutdown()。HTTP Trace 传播和应用日志分别参考 Trace 配置与 Log 配置。