콘텐츠로 이동

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에 연결할 때 해당 링크 유형을 선택하는 경우, 지원되는 유형 및 에이전트 관련 구성을 확인하시기 바랍니다
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 수집을 참조하세요.

문서 평가

이 페이지가 도움이 되었나요?