Trace 配置¶
本文用于承载 HarmonyOS Trace 初始化配置与链路追踪说明。
初始化配置¶
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);
| 方法 | 类型 | 必须 | 说明 |
|---|---|---|---|
setSamplingRate |
number |
否 | 采样率,范围 [0,1],默认 1 |
setTraceType |
TraceType |
否 | 链路追踪类型,默认 DDTRACE |
setEnableLinkRUMData |
boolean |
否 | 是否与 RUM 数据关联,默认 false |
setEnableAutoTrace |
boolean |
否 | 是否开启自动 HTTP Trace,默认 false |
setHeaderHandler |
HeaderHandler |
否 | 设置全局 FTTraceHeaderHandler,用于自定义 Trace Header |
自动追踪¶
开启 setEnableAutoTrace(true) 后,SDK 会自动为通过 RCP Session 或 HTTP/Axios 且挂载了 SDK 拦截器的请求注入 Trace Headers。
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);
手动获取 Trace Header¶
如果业务使用其他网络框架,可以手动获取 Trace Header 并添加到请求中:
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 类型¶
| Trace 类型 | 协议 | 主要 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 |