Trace 구성¶
Trace 초기화 구성¶
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
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는 다음과 같습니다.
사용 방법¶
코드 예시¶
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()