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()