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 |