Trace 配置¶
本文用于承载 C++ SDK 的 Trace 初始化配置与链路追踪说明。
初始化 Trace¶
FTTraceConfig tc;
tc.setTraceType(TraceType::DDTRACE)
.setEnableLinkRUMData(true);
sdk->initTraceWithConfig(tc);
| 字段 | 类型 | 必须 | 说明 |
|---|---|---|---|
setSamplingRate |
float | 否 | 采样率范围 [0,1],0 表示不采集,1 表示全采集,默认值为 1 |
setTraceType |
enum | 否 | 默认为 DDTrace,支持 Zipkin、Jaeger、DDTrace、Skywalking(8.0+)、TraceParent(W3C)。如果接入 OpenTelemetry 选择对应链路类型时,请注意查阅支持类型及 agent 相关配置 |
setEnableLinkRUMData |
bool | 否 | 是否与 RUM 数据关联,默认为 false |
生成 Trace Header¶
链路追踪通过生成 Trace Header,并将 Header 写入 HTTP 请求头来实现。
/**
* 按配置生成 Trace Header
*
* @param resourceId 资源 ID
* @param url 网络地址
* @return trace 数据
*/
PropagationHeader generateTraceHeader(const std::string resourceId, const std::string url);
示例:
RestClient::init();
RestClient::Connection* conn = new RestClient::Connection(url);
std::string resId = "resource-id";
RestClient::HeaderFields headers;
headers["Accept"] = "application/json";
auto headerWithRes = sdk->generateTraceHeader(resId, url);
for (auto& hd : headerWithRes) {
headers[hd.first] = hd.second;
}
conn->SetHeaders(headers);
RestClient::Response r = conn->get("/get");
RestClient::disable();