コンテンツにスキップ

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

/// トレースのリクエストヘッダーパラメータを取得します
/// - Parameters:
///   - key: リクエストを一意に識別するキー
///   - url: リクエスト URL
/// - Returns: トレースのリクエストヘッダーパラメータ辞書
- (NSDictionary *)getTraceHeaderWithKey:(NSString *)key url:(NSURL *)url;
/// トレースのリクエストヘッダーパラメータを取得します
/// - Parameters:
///   - key: リクエストを一意に識別するキー
///   - url: リクエスト URL
/// - Returns: トレースのリクエストヘッダーパラメータ辞書
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()

フィードバック

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