跳转至

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,目前支持 ZipkinJaegerDDTraceSkywalking(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 自定义采集

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 采集

文档评价

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