콘텐츠로 이동

Trace 설정

await FTTracer().setConfig(
  enableLinkRUMData: true,
  enableAutoTrace: true,
);
필드 타입 필수 설명
sampleRate double 아니요 샘플링 비율, 범위 [0,1], 0은 수집 안 함, 1은 전체 수집, 기본값은 1
traceType enum TraceType 아니요 트레이스 유형, 기본값 TraceType.ddTrace, 지원 ddTrace, zipkinMulti, zipkinSingle, traceparent, skywalking, jaeger
enableLinkRUMData bool 아니요 RUM 데이터와 연결 여부, 기본값 false
enableAutoTrace bool 아니요 http 요청에 Trace Header 자동 추가 여부, 기본값 false. HttpOverrides.global을 수정하여 구현하며, 프로젝트에 커스터마이징이 필요하면 FTHttpOverrides를 상속해야 함
enableNativeAutoTrace bool 아니요 네이티브 네트워크 자동 추적 활성화 여부, iOS NSURLSession, Android OKHttp, 기본값 false

Tracer 네트워크 분산 추적

자동 수집

FTTracer().setConfig에서 enableAutoTrace를 활성화하여 구현합니다.

커스텀 Tracer

사용 방법

/// trace http 요청 헤더 데이터 가져오기
/// [key] 고유 ID
/// [url] 요청 주소
Future<Map<String, String>> getTraceHeader(String url, {String? key})

코드 예시

void httpClientGetHttp() async {
  var url = 'http://reqeust.url.cn';
  var httpClient = HttpClient();
  String key = DateTime.now().millisecondsSinceEpoch.toString() + url;
  var errorMessage = "";
  HttpClientRequest request = await httpClient.getUrl(Uri.parse(url));
  HttpClientResponse? response;
  try {
    final traceHeaders =
        await FTTracer().getTraceHeader(key, request.uri.toString());
    traceHeaders.forEach((key, value) {
      request.headers.add(key, value);
    });
    response = await request.close();
  } catch (exception) {
    errorMessage = exception.toString();
  } finally {
    Map<String, dynamic> requestHeader = {};
    Map<String, dynamic> responseHeader = {};

    request.headers.forEach((name, values) {
      requestHeader[name] = values;
    });
    if (response != null) {
      response.headers.forEach((name, values) {
        responseHeader[name] = values;
      });
    }
  }
}

http 라이브러리 및 dio 라이브러리 사용은 example을 참고하세요.

문서 평가

이 페이지가 도움이 되었나요?