콘텐츠로 이동

Trace 구성

Trace 초기화 구성

FTTraceConfig *traceConfig = [[FTTraceConfig alloc] init];
traceConfig.enableLinkRumData = YES;
traceConfig.enableAutoTrace = YES;
traceConfig.networkTraceType = FTNetworkTraceTypeDDtrace;
[[FTSDKAgent sharedInstance] startTraceWithConfigOptions:traceConfig];
let traceConfig = FTTraceConfig()
traceConfig.enableLinkRumData = true
traceConfig.enableAutoTrace = true
FTSDKAgent.sharedInstance().startTrace(withConfigOptions: traceConfig)
속성 유형 필수 설명
sampleRate int 아니요 샘플링 비율。 [0,100] 범위。 0은 수집 안 함, 100은 전체 수집。 기본값 100
networkTraceType NS_ENUM 아니요 분산 추적 유형 설정。 기본값 DDTrace。 현재 지원 Zipkin, Jaeger, DDTrace, Skywalking(8.0+), TraceParent(W3C)
enableLinkRumData BOOL 아니요 RUM 데이터와 연결 여부, 기본값 NO
enableAutoTrace BOOL 아니요 자동 HTTP Trace 활성화 여부 설정, 기본값 NO, 현재 NSURLSession만 지원

Trace 네트워크 분산 추적

FTTraceConfig를 통해 자동 모드를 활성화하거나 수동으로 추가할 수 있습니다. Trace 관련 데이터는 FTTraceManager 싱글톤을 통해 전달되며, 관련 API는 다음과 같습니다.

사용 방법

// FTTraceManager.h

/// trace 요청 헤더 파라미터 가져오기
/// - Parameters:
///   - key: 특정 요청을 식별할 수 있는 고유 식별자
///   - url: 요청 URL
/// - Returns: trace 요청 헤더 파라미터 딕셔너리
- (NSDictionary *)getTraceHeaderWithKey:(NSString *)key url:(NSURL *)url;
/// trace 요청 헤더 파라미터 가져오기
/// - Parameters:
///   - key: 특정 요청을 식별할 수 있는 고유 식별자
///   - url: 요청 URL
/// - Returns: trace 요청 헤더 파라미터 딕셔너리
open func getTraceHeader(withKey key: String, url: URL) -> [AnyHashable : Any]

코드 예시

NSString *key = [[NSUUID UUID] UUIDString];
NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
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(string: "https://www.baidu.com")! as URL
let traceHeader = FTTraceManager.sharedInstance().getTraceHeader(withKey: NSUUID().uuidString, url: url)
let request = NSMutableURLRequest(url: url)
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()

문서 평가

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