Skip to content

Trace Configuration

This document describes the HarmonyOS Trace initialization configuration and trace instructions.

Initialization Configuration

import { FTSDK } from '@guancecloud/ft_sdk/src/main/ets/components/FTSDK';
import { FTTraceConfig } from '@guancecloud/ft_sdk/src/main/ets/components/Configs';
import { TraceType } from '@guancecloud/ft_sdk/src/main/ets/components/trace/TraceType';

const traceConfig = new FTTraceConfig()
  .setSamplingRate(0.8)
  .setTraceType(TraceType.DDTRACE)
  .setEnableAutoTrace(true)
  .setEnableLinkRUMData(true);

FTSDK.installTraceConfig(traceConfig);
Method Type Required Description
setSamplingRate number No Sampling rate, range [0,1], default 1
setTraceType TraceType No Trace type, default DDTRACE
setEnableLinkRUMData boolean No Whether to link with RUM data, default false
setEnableAutoTrace boolean No Whether to enable automatic HTTP Trace, default false
setHeaderHandler HeaderHandler No Set global FTTraceHeaderHandler for custom Trace Headers

Automatic Tracing

After enabling setEnableAutoTrace(true), the SDK will automatically inject Trace Headers for requests made via RCP Session or HTTP/Axios that have the SDK interceptor attached.

import { rcp } from '@kit.RemoteCommunicationKit';
import { createFTRCPTrackConfig } from '@guancecloud/ft_sdk/src/main/ets/components/network/FTHttpAutoTrack';

const session = rcp.createSession(createFTRCPTrackConfig({
  baseAddress: 'https://api.example.com'
}));

const request = new rcp.Request('/data', 'GET');
const response = await session.fetch(request);

Manually Obtaining Trace Headers

If other network frameworks are used in the business, Trace Headers can be obtained manually and added to the request:

import { FTTraceManager } from '@guancecloud/ft_sdk/src/main/ets/components/trace/FTTraceManager';
import http from '@ohos.net.http';

const url = 'https://api.example.com/data';
const resourceId = 'unique-resource-id';
const traceHeaders: Record<string, string> = FTTraceManager.getInstance().getTraceHeader(resourceId, url);

const httpRequest = http.createHttp();
const response = await httpRequest.request(url, {
  method: http.RequestMethod.GET,
  header: traceHeaders
});

Trace Types

Trace Type Protocol Main Headers
DDTRACE DataDog Trace x-datadog-trace-id, x-datadog-parent-id, x-datadog-origin, x-datadog-sampling-priority
ZIPKIN_MULTI_HEADER Zipkin Multi-Header X-B3-TraceId, X-B3-SpanId, X-B3-ParentSpanId, X-B3-Sampled
ZIPKIN_SINGLE_HEADER Zipkin Single-Header b3
JAEGER Jaeger uber-trace-id
TRACEPARENT W3C Trace Context traceparent, tracestate
SKYWALKING SkyWalking sw8