Trace 設定¶
Trace 初期化設定¶
| プロパティ | 型 | 必須 | 説明 |
|---|---|---|---|
| sampleRate | int | いいえ | サンプリングレート。範囲は [0,100]。0 は収集なし、100 は全収集を意味します。デフォルト値は 100 です。 |
| networkTraceType | FTNetworkTraceType | いいえ | 分散型トレーシングのタイプを設定します。デフォルトは DDTrace で、現在 Zipkin、Jaeger、DDTrace、Skywalking(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 カスタム収集 よりも低くなります。 |
サンプリングレートパラメータ名
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 収集 を参照してください。