跳转至

Trace 配置

Trace 初始化配置

   //开启 trace
   FTTraceConfig *traceConfig = [[FTTraceConfig alloc]init];
   traceConfig.enableLinkRumData = YES;
   traceConfig.enableAutoTrace = YES;
   traceConfig.networkTraceType = FTNetworkTraceTypeDDtrace;
   [[FTMobileAgent sharedInstance] startTraceWithConfigOptions:traceConfig];
   let traceConfig = FTTraceConfig.init()
   traceConfig.enableLinkRumData = true
   traceConfig.enableAutoTrace = true
   FTMobileAgent.sharedInstance().startTrace(withConfigOptions: traceConfig)
属性 类型 必须 含义
sampleRate int 否 采样率。取值范围 [0,100],0 表示不采集,100 表示全采集,默认值为 100
networkTraceType FTNetworkTraceType 否 设置链路追踪的类型。默认为 DDTrace,目前支持 Zipkin、Jaeger、DDTrace、Skywalking(8.0+)、TraceParent(W3C)。如果接入 OpenTelemetry 选择对应链路类型时,请注意查阅支持类型及 agent 相关配置
enableLinkRumData BOOL 否 是否与 RUM 数据关联。默认 NO
enableAutoTrace BOOL 否 设置是否开启自动 HTTP trace。默认 NO,目前只支持 NSURLSession
traceInterceptor FTTraceInterceptor 否 支持通过 URLRequest 判断是否进行自定义链路追踪,确认拦截后返回 TraceContext,不拦截返回 nil。SDK 1.5.10 以上版本支持该参数。优先级低于 URLSession 自定义采集
采样率参数命名

SDK 1.6.6 及以上版本中,samplerate 已废弃,当前仍可使用并与 sampleRate 映射到同一值。新代码建议使用 sampleRate;1.6.6 以下版本请继续使用 samplerate。

Trace 网络链路追踪

可以通过 FTTraceConfig 配置开启自动模式,也支持用户自定义添加 Trace 相关数据。自定义添加相关 API 如下:

NSString *key = [[NSUUID UUID]UUIDString];
NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
//需要的手动操作: 请求前获取 traceHeader 添加到请求头
NSDictionary *traceHeader = [[FTTraceManager sharedInstance] getTraceHeaderWithKey:key url:url];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
if (traceHeader && traceHeader.allKeys.count>0) {
    [traceHeader enumerateKeysAndObjectsUsingBlock:^(id field, id value, BOOL * __unused stop) {
        [request setValue:value forHTTPHeaderField:field];
    }];
}
NSURLSession *session=[NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[NSOperationQueue mainQueue]];

NSURLSessionTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
   //您的代码
}];

[task resume];
let url:URL = NSURL.init(string: "https://www.baidu.com")! as URL
if let traceHeader = FTExternalDataManager.shared().getTraceHeader(withKey: NSUUID().uuidString, url: url) {
     let request = NSMutableURLRequest(url: url)
     //需要的手动操作: 请求前获取 traceHeader 添加到请求头
     for (a,b) in traceHeader {
         request.setValue(b as? String, forHTTPHeaderField: a as! String)
     }
     let task = URLSession.shared.dataTask(with: request as URLRequest) {  data,  response,  error in
        //您的代码
     }
     task.resume()
}

URLSession 高级采集

如需对某个 URLSession 实例进行更细粒度的 Resource 采集、Trace 注入与错误过滤,请查看 URLSession 自定义 Network 采集。

文档评价

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