Trace 구성¶
Trace 초기화 구성¶
| 속성 | 타입 | 필수 | 설명 |
|---|---|---|---|
| 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 수집을 참조하세요.