コンテンツにスキップ

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 で、現在 ZipkinJaegerDDTraceSkywalking(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 収集 を参照してください。

フィードバック

このページは役に立ちましたか?