js-apis-hitracechain.md 9.8 KB
Newer Older
X
xuyong 已提交
1 2
# 分布式跟踪

X
xuyong 已提交
3 4
本模块提供了端侧业务流程调用链跟踪的打点能力,包括业务流程跟踪的启动、结束、信息埋点等能力。

X
xuyong 已提交
5 6 7 8 9
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

## 导入模块

10
```js
X
xuyong 已提交
11
import hiTraceChain from '@ohos.hiTraceChain';
X
xuyong 已提交
12 13 14
```


X
xuyong 已提交
15
## HiTraceFlag
X
xuyong 已提交
16

X
xuyong 已提交
17
跟踪标志组合类型枚举。
X
xuyong 已提交
18

Z
zengyawen 已提交
19 20
**系统能力:** 以下各项对应的系统能力均为SystemCapability.HiviewDFX.HiTrace。

X
xuyong 已提交
21 22
| 名称 | 默认值 | 说明 |
| -------- | -------- | -------- |
X
xuyong 已提交
23 24 25 26 27 28 29 30
| DEFAULT           | 0      | 缺省标志。       |
| INCLUDE_ASYNC     | 1      | 异步调用标志。启动跟踪时,缺省只跟踪同步调用。设置该标志,同时跟踪同步、异步调用。   |
| DONOT_CREATE_SPAN | 1 << 1 | 无分支标志。启动跟踪时,在同步、异步调用时缺省自动创建分支信息。设置该标志,指示不创建分支。     |
| TP_INFO           | 1 << 2 | 埋点标志。启动跟踪式时,缺省不进行埋点。调试场景下设置该标志,在同步、异步调用的收发侧自动埋点,输出埋点信息和时间戳。收发埋点按照client、server分为[client send(CS)、server receive(SR)、server send(SS)、client receive(CR)](#hitracetracepointtype)四类信息。一次同步调用输出CS/SR/SS/CR,一次异步调用输出CS/SR/SS三个埋点信息。       |
| NO_BE_INFO        | 1 << 3 | 无起始结束标志。启动跟踪时,缺省打印启动及结束跟踪信息。设置该标志,指示不打印启动及结束跟踪信息。 |
| DISABLE_LOG       | 1 << 4 | 日志关联标志。设置该标志,指示隐藏日志中的跟踪信息。  |
| FAILURE_TRIGGER   | 1 << 5 | 故障触发标志。预置标志,暂时没有作用。  |
| D2D_TP_INFO       | 1 << 6 | 设备间埋点标志。TP_INFO的一个子集,设置该标志,只进行设备间的调用埋点。 |
X
xuyong 已提交
31

X
xuyong 已提交
32
## HiTraceTracepointType
X
xuyong 已提交
33

X
xuyong 已提交
34
跟踪埋点类型枚举。
X
xuyong 已提交
35

Z
zengyawen 已提交
36 37
**系统能力:** 以下各项对应的系统能力均为SystemCapability.HiviewDFX.HiTrace。

X
xuyong 已提交
38 39
| 名称 | 默认值 | 说明 |
| -------- | -------- | -------- |
X
xuyong 已提交
40 41 42 43 44
| CS       | 0 | 客户端发送类型,标识client侧的发送埋点。        |
| CR       | 1 | 客户端接收类型,标识client侧的接收埋点。        |
| SS       | 2 | 服务端发送类型,标识server侧的发送埋点。        |
| SR       | 3 | 服务端接收类型,标识server侧的接收埋点。        |
| GENERAL  | 4 | 一般类型,标识CS、CR、SS、SR四种场景之外的埋点。|
X
xuyong 已提交
45

X
xuyong 已提交
46
## HiTraceCommunicationMode
X
xuyong 已提交
47

X
xuyong 已提交
48
跟踪通信类型枚举。
X
xuyong 已提交
49

Z
zengyawen 已提交
50 51
**系统能力:** 以下各项对应的系统能力均为SystemCapability.HiviewDFX.HiTrace。

X
xuyong 已提交
52 53
| 名称 | 默认值 | 说明 |
| -------- | -------- | -------- |
X
xuyong 已提交
54
| DEFAULT  | 0 | 缺省通信类型    |
X
xuyong 已提交
55 56 57 58
| THREAD   | 1 | 线程间通信类型  |
| PROCESS  | 2 | 进程间通信类型  |
| DEVICE   | 3 | 设备间通信类型  |

X
xuyong 已提交
59
## HiTraceId
X
xuyong 已提交
60

X
xuyong 已提交
61
此接口为HiTraceId对象接口。
X
xuyong 已提交
62

Z
zengyawen 已提交
63 64
**系统能力:** 以下各项对应的系统能力均为SystemCapability.HiviewDFX.HiTrace。

X
xuyong 已提交
65 66 67
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| chainId      | bigint | 是 | 跟踪链标识。   |
X
xuyong 已提交
68
| spanId      | number | 否 | 分支标识。     |
X
xuyong 已提交
69 70 71
| parentSpanId | number | 否 | 父分支标识。   |
| flags        | number | 否 | 跟踪标志组合。 |

X
xuyong 已提交
72
## hiTraceChain.begin
X
xuyong 已提交
73 74 75

begin(name: string, flags: number = HiTraceFlag.DEFAULT): HiTraceId

X
xuyong 已提交
76
开始跟踪,同步接口。
X
xuyong 已提交
77

Z
zengyawen 已提交
78 79
**系统能力:** SystemCapability.HiviewDFX.HiTrace

Z
zengyawen 已提交
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| name  | string | 是 | 跟踪业务名。 |
| flags | number | 是 | 跟踪标志组合,具体可参考[HiTraceFlag](#hitraceflag)。 |

**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| [HiTraceId](#hitraceid) | HiTraceId实例。 |

**示例:**

95
```js
Z
zengyawen 已提交
96 97
let asyncTraceId = hiTraceChain.begin("business", hiTraceChain.HiTraceFlag.INCLUDE_ASYNC | hiTraceChain.HiTraceFlag.DONOT_CREATE_SPAN);
```
X
xuyong 已提交
98

X
xuyong 已提交
99
## hiTraceChain.end
X
xuyong 已提交
100 101 102

end(id: HiTraceId): void

X
xuyong 已提交
103
结束跟踪,同步接口。
X
xuyong 已提交
104

Z
zengyawen 已提交
105 106
**系统能力:** SystemCapability.HiviewDFX.HiTrace

Z
zengyawen 已提交
107 108 109 110 111 112 113
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| id | [HiTraceId](#hitraceid) | 是 | HiTraceId实例。 |

**示例:**
X
xuyong 已提交
114

115
```js
Z
zengyawen 已提交
116 117 118 119
let asyncTraceId = hiTraceChain.begin("business");
// 若干业务逻辑完成后,结束跟踪。
hiTraceChain.end(asyncTraceId);
```
X
xuyong 已提交
120

X
xuyong 已提交
121
## hiTraceChain.getId
X
xuyong 已提交
122 123 124

getId(): HiTraceId

X
xuyong 已提交
125
获取跟踪标识,同步接口。
X
xuyong 已提交
126

Z
zengyawen 已提交
127 128
**系统能力:** SystemCapability.HiviewDFX.HiTrace

Z
zengyawen 已提交
129 130 131 132 133
**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| [HiTraceId](#hitraceid) | HiTraceId实例。 |
X
xuyong 已提交
134

Z
zengyawen 已提交
135 136
**示例:**

137
```js
Z
zengyawen 已提交
138 139 140 141
let traceId = hiTraceChain.begin("business");
// 若干业务逻辑完成后,获取当前HiTraceId。
let curTraceId = hiTraceChain.getId();
```
X
xuyong 已提交
142

X
xuyong 已提交
143
## hiTraceChain.setId
X
xuyong 已提交
144 145 146

setId(id: HiTraceId): void

X
xuyong 已提交
147
设置跟踪标识,同步接口。
X
xuyong 已提交
148

Z
zengyawen 已提交
149 150
**系统能力:** SystemCapability.HiviewDFX.HiTrace

Z
zengyawen 已提交
151 152 153 154 155
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| id | [HiTraceId](#hitraceid) | 是 | HiTraceId实例。 |
X
xuyong 已提交
156

Z
zengyawen 已提交
157 158
**示例:**

159
```js
X
xuyong 已提交
160
let asyncTraceId;
Z
zengyawen 已提交
161 162 163 164
let traceId = hiTraceChain.begin("business");
// 若干业务逻辑完成后,设置当前HiTraceId。
hiTraceChain.setId(asyncTraceId);
```
X
xuyong 已提交
165

X
xuyong 已提交
166
## hiTraceChain.clearId
X
xuyong 已提交
167 168 169

clearId(): void

X
xuyong 已提交
170
清除跟踪标识,同步接口。
X
xuyong 已提交
171

Z
zengyawen 已提交
172 173
**系统能力:** SystemCapability.HiviewDFX.HiTrace

Z
zengyawen 已提交
174 175
**示例:**

176
```js
Z
zengyawen 已提交
177 178 179 180
let traceId = hiTraceChain.begin("business");
// 若干业务逻辑完成后,清除当前HiTraceId。
hiTraceChain.clearId();
```
X
xuyong 已提交
181

X
xuyong 已提交
182
## hiTraceChain.createSpan
X
xuyong 已提交
183 184 185

createSpan(): HiTraceId

X
xuyong 已提交
186
创建跟踪分支,同步接口。
X
xuyong 已提交
187

Z
zengyawen 已提交
188 189
**系统能力:** SystemCapability.HiviewDFX.HiTrace

Z
zengyawen 已提交
190
**返回值:**
X
xuyong 已提交
191

Z
zengyawen 已提交
192 193 194 195 196 197
| 类型 | 说明 |
| -------- | -------- |
| [HiTraceId](#hitraceid) | HiTraceId实例。 |

**示例:**

198
```js
Z
zengyawen 已提交
199 200 201 202
let traceId = hiTraceChain.begin("business");
// 若干业务逻辑完成后,创建跟踪分支。
let spanTraceId = hiTraceChain.createSpan();
```
X
xuyong 已提交
203

X
xuyong 已提交
204
## hiTraceChain.tracepoint
X
xuyong 已提交
205

X
xuyong 已提交
206
tracepoint(mode: HiTraceCommunicationMode, type: HiTraceTracepointType, id: HiTraceId, msg?: string): void
X
xuyong 已提交
207

X
xuyong 已提交
208
信息埋点,同步接口。
X
xuyong 已提交
209

Z
zengyawen 已提交
210 211
**系统能力:** SystemCapability.HiviewDFX.HiTrace

Z
zengyawen 已提交
212 213 214 215 216 217 218 219 220 221 222
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| mode | [HiTraceCommunicationMode](#hitracecommunicationmode) | 是 | 信息埋点需要指定的跟踪通信模式。 |
| type | [HiTraceTracepointType](#hitracetracepointtype)| 是 | 信息埋点需要指定的跟踪埋点类型。 |
| id   | [HiTraceId](#hitraceid) | 是 | 实施信息埋点操作的HiTraceId实例。 |
| msg  | string | 否 | 信息埋点操作传入的trace说明信息。 |

**示例:**

223
```js
Z
zengyawen 已提交
224 225 226 227
let asyncTraceId = hiTraceChain.begin("business", hiTraceChain.HiTraceFlag.INCLUDE_ASYNC | hiTraceChain.HiTraceFlag.DONOT_CREATE_SPAN);
// 若干业务逻辑完成后,触发信息埋点操作。
hiTraceChain.tracepoint(hiTraceChain.HiTraceCommunicationMode.THREAD, hiTraceChain.HiTraceTracepointType.SS, asyncTraceId, "Just a example");
```
X
xuyong 已提交
228

X
xuyong 已提交
229
## hiTraceChain.isValid
X
xuyong 已提交
230 231 232

isValid(id: HiTraceId): boolean

X
xuyong 已提交
233
判断HiTraceId对象是否有效,同步接口。
X
xuyong 已提交
234

Z
zengyawen 已提交
235 236
**系统能力:** SystemCapability.HiviewDFX.HiTrace

Z
zengyawen 已提交
237 238 239 240 241 242 243 244 245 246 247 248 249 250
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| id  | [HiTraceId](#hitraceid) | 是 | 需要判断是否有效的HiTraceId实例。 |

**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| boolean | 返回true表示HiTraceId有效,否则无效。 |

**示例:**

251
```js
Z
zengyawen 已提交
252 253 254
let traceId = hiTraceChain.begin("business");
let traceIdIsvalid = hiTraceChain.isValid(traceId);
```
X
xuyong 已提交
255

X
xuyong 已提交
256
## hiTraceChain.isFlagEnabled
X
xuyong 已提交
257 258 259

isFlagEnabled(id: HiTraceId, flag: HiTraceFlag): boolean

X
xuyong 已提交
260
判断HiTraceId对象中指定的跟踪标志是否已置位,同步接口。
X
xuyong 已提交
261

Z
zengyawen 已提交
262 263
**系统能力:** SystemCapability.HiviewDFX.HiTrace

Z
zengyawen 已提交
264 265 266 267 268 269 270 271 272 273 274 275 276 277 278
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| id  | [HiTraceId](#hitraceid) | 是 | 需要判断指定跟踪标志是否置位的HiTraceId实例。 |
| flag | [HiTraceFlag](#hitraceflag) | 是 | 指定的跟踪标志。 |

**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| boolean | 返回true标识HiTraceId已置位指定的flag,否则没有置位。 |

**示例:**

279
```js
Z
zengyawen 已提交
280 281 282 283
let asyncTraceId = hiTraceChain.begin("business", hiTraceChain.HiTraceFlag.INCLUDE_ASYNC);
// enabledDoNotCreateSpanFlag为true
let enabledDoNotCreateSpanFlag = hiTraceChain.isFlagEnabled(asyncTraceId, hiTraceChain.HiTraceFlag.INCLUDE_ASYNC);
```
X
xuyong 已提交
284

X
xuyong 已提交
285
## hiTraceChain.enableFlag
X
xuyong 已提交
286 287 288

enableFlag(id: HiTraceId, flag: HiTraceFlag): void

X
xuyong 已提交
289
置位HiTraceId对象中指定的跟踪标志,同步接口。
X
xuyong 已提交
290

Z
zengyawen 已提交
291 292
**系统能力:** SystemCapability.HiviewDFX.HiTrace

Z
zengyawen 已提交
293 294 295 296 297 298 299 300
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| id  | [HiTraceId](#hitraceid) | 是 | 需要置位指定跟踪标志的HiTraceId实例。 |
| flag | [HiTraceFlag](#hitraceflag) | 是 | 指定的跟踪标志。 |

**示例:**

301
```js
Z
zengyawen 已提交
302
let asyncTraceId = hiTraceChain.begin("business", hiTraceChain.HiTraceFlag.INCLUDE_ASYNC);
X
xuyong 已提交
303
hiTraceChain.enableFlag(asyncTraceId, hiTraceChain.HiTraceFlag.DONOT_CREATE_SPAN);
Z
zengyawen 已提交
304 305 306
// enabledDoNotCreateSpanFlag为true
let enabledDoNotCreateSpanFlag = hiTraceChain.isFlagEnabled(asyncTraceId, hiTraceChain.HiTraceFlag.DONOT_CREATE_SPAN);
```