分布式跟蹤
本模塊提供了端側(cè)業(yè)務(wù)流程調(diào)用鏈跟蹤的打點(diǎn)能力,包括業(yè)務(wù)流程跟蹤的啟動(dòng)、結(jié)束、信息埋點(diǎn)等能力。
說(shuō)明: 本模塊首批接口從API version 8開(kāi)始支持。后續(xù)版本的新增接口,采用上角標(biāo)單獨(dú)標(biāo)記接口的起始版本。 開(kāi)發(fā)前請(qǐng)熟悉鴻蒙開(kāi)發(fā)指導(dǎo)文檔 :[
gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
導(dǎo)入模塊
import hiTraceChain from '@ohos.hiTraceChain';
HiTraceFlag
跟蹤標(biāo)志組合類(lèi)型枚舉。
系統(tǒng)能力: 以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.HiviewDFX.HiTrace。
名稱(chēng) | 默認(rèn)值 | 說(shuō)明 |
---|---|---|
DEFAULT | 0 | 缺省標(biāo)志。 |
INCLUDE_ASYNC | 1 | 異步調(diào)用標(biāo)志。啟動(dòng)跟蹤時(shí),缺省只跟蹤同步調(diào)用。設(shè)置該標(biāo)志,同時(shí)跟蹤同步、異步調(diào)用。 |
DONOT_CREATE_SPAN | 1 << 1 | 無(wú)分支標(biāo)志。啟動(dòng)跟蹤時(shí),在同步、異步調(diào)用時(shí)缺省自動(dòng)創(chuàng)建分支信息。設(shè)置該標(biāo)志,指示不創(chuàng)建分支。 |
TP_INFO | 1 << 2 | 埋點(diǎn)標(biāo)志。啟動(dòng)跟蹤式時(shí),缺省不進(jìn)行埋點(diǎn)。調(diào)試場(chǎng)景下設(shè)置該標(biāo)志,在同步、異步調(diào)用的收發(fā)側(cè)自動(dòng)埋點(diǎn),輸出埋點(diǎn)信息和時(shí)間戳。收發(fā)埋點(diǎn)按照client、server分為[client send(CS)、server receive(SR)、server send(SS)、client receive(CR)]四類(lèi)信息。一次同步調(diào)用輸出CS/SR/SS/CR,一次異步調(diào)用輸出CS/SR/SS三個(gè)埋點(diǎn)信息。 |
NO_BE_INFO | 1 << 3 | 無(wú)起始結(jié)束標(biāo)志。啟動(dòng)跟蹤時(shí),缺省打印啟動(dòng)及結(jié)束跟蹤信息。設(shè)置該標(biāo)志,指示不打印啟動(dòng)及結(jié)束跟蹤信息。 |
DISABLE_LOG | 1 << 4 | 日志關(guān)聯(lián)標(biāo)志。設(shè)置該標(biāo)志,指示隱藏日志中的跟蹤信息。 |
FAILURE_TRIGGER | 1 << 5 | 故障觸發(fā)標(biāo)志。預(yù)置標(biāo)志,暫時(shí)沒(méi)有作用。 |
D2D_TP_INFO | 1 << 6 | 設(shè)備間埋點(diǎn)標(biāo)志。TP_INFO的一個(gè)子集,設(shè)置該標(biāo)志,只進(jìn)行設(shè)備間的調(diào)用埋點(diǎn)。 |
HiTraceTracepointType
跟蹤埋點(diǎn)類(lèi)型枚舉。
系統(tǒng)能力: 以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.HiviewDFX.HiTrace。
名稱(chēng) | 默認(rèn)值 | 說(shuō)明 |
---|---|---|
CS | 0 | 客戶(hù)端發(fā)送類(lèi)型,標(biāo)識(shí)client側(cè)的發(fā)送埋點(diǎn)。 |
CR | 1 | 客戶(hù)端接收類(lèi)型,標(biāo)識(shí)client側(cè)的接收埋點(diǎn)。 |
SS | 2 | 服務(wù)端發(fā)送類(lèi)型,標(biāo)識(shí)server側(cè)的發(fā)送埋點(diǎn)。 |
SR | 3 | 服務(wù)端接收類(lèi)型,標(biāo)識(shí)server側(cè)的接收埋點(diǎn)。 |
GENERAL | 4 | 一般類(lèi)型,標(biāo)識(shí)CS、CR、SS、SR四種場(chǎng)景之外的埋點(diǎn)。 |
HiTraceCommunicationMode
跟蹤通信類(lèi)型枚舉。
系統(tǒng)能力: 以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.HiviewDFX.HiTrace。
名稱(chēng) | 默認(rèn)值 | 說(shuō)明 |
---|---|---|
DEFAULT | 0 | 缺省通信類(lèi)型 |
THREAD | 1 | 線程間通信類(lèi)型 |
PROCESS | 2 | 進(jìn)程間通信類(lèi)型 |
DEVICE | 3 | 設(shè)備間通信類(lèi)型 |
HiTraceId
此接口為HiTraceId對(duì)象接口。
系統(tǒng)能力: 以下各項(xiàng)對(duì)應(yīng)的系統(tǒng)能力均為SystemCapability.HiviewDFX.HiTrace。
參數(shù)名 | 類(lèi)型 | 必填 | 說(shuō)明 |
---|---|---|---|
chainId | bigint | 是 | 跟蹤鏈標(biāo)識(shí)。 |
spanId | number | 否 | 分支標(biāo)識(shí)。 |
parentSpanId | number | 否 | 父分支標(biāo)識(shí)。 |
flags | number | 否 | 跟蹤標(biāo)志組合。 |
hiTraceChain.begin
begin(name: string, flags: number = HiTraceFlag.DEFAULT): HiTraceId
開(kāi)始跟蹤,同步接口。
系統(tǒng)能力: SystemCapability.HiviewDFX.HiTrace
參數(shù):
參數(shù)名 | 類(lèi)型 | 必填 | 說(shuō)明 |
---|---|---|---|
name | string | 是 | 跟蹤業(yè)務(wù)名。 |
flags | number | 是 | 跟蹤標(biāo)志組合,具體可參考[HiTraceFlag] |
返回值:
類(lèi)型 | 說(shuō)明 |
---|---|
[HiTraceId] | HiTraceId實(shí)例。 |
示例:
let asyncTraceId = hiTraceChain.begin("business", hiTraceChain.HiTraceFlag.INCLUDE_ASYNC | hiTraceChain.HiTraceFlag.DONOT_CREATE_SPAN);
hiTraceChain.end
end(id: HiTraceId): void
結(jié)束跟蹤,同步接口。
系統(tǒng)能力: SystemCapability.HiviewDFX.HiTrace
參數(shù):
參數(shù)名 | 類(lèi)型 | 必填 | 說(shuō)明 |
---|---|---|---|
id | [HiTraceId] | 是 | HiTraceId實(shí)例。 |
示例:
let asyncTraceId = hiTraceChain.begin("business");
// 若干業(yè)務(wù)邏輯完成后,結(jié)束跟蹤。
hiTraceChain.end(asyncTraceId);
hiTraceChain.getId
getId(): HiTraceId
獲取跟蹤標(biāo)識(shí),同步接口。
系統(tǒng)能力: SystemCapability.HiviewDFX.HiTrace
返回值:
類(lèi)型 | 說(shuō)明 |
---|---|
[HiTraceId] | HiTraceId實(shí)例。 |
示例:
let traceId = hiTraceChain.begin("business");
// 若干業(yè)務(wù)邏輯完成后,獲取當(dāng)前HiTraceId。
let curTraceId = hiTraceChain.getId();
hiTraceChain.setId
setId(id: HiTraceId): void
設(shè)置跟蹤標(biāo)識(shí),同步接口。
系統(tǒng)能力: SystemCapability.HiviewDFX.HiTrace
參數(shù):
參數(shù)名 | 類(lèi)型 | 必填 | 說(shuō)明 |
---|---|---|---|
id | [HiTraceId] | 是 | HiTraceId實(shí)例。 |
示例:
let asyncTraceId;
let traceId = hiTraceChain.begin("business");
// 若干業(yè)務(wù)邏輯完成后,設(shè)置當(dāng)前HiTraceId。
hiTraceChain.setId(asyncTraceId);
hiTraceChain.clearId
clearId(): void
清除跟蹤標(biāo)識(shí),同步接口。
系統(tǒng)能力: SystemCapability.HiviewDFX.HiTrace
示例:
let traceId = hiTraceChain.begin("business");
// 若干業(yè)務(wù)邏輯完成后,清除當(dāng)前HiTraceId。
hiTraceChain.clearId();
hiTraceChain.createSpan
createSpan(): HiTraceId
創(chuàng)建跟蹤分支,同步接口。
系統(tǒng)能力: SystemCapability.HiviewDFX.HiTrace
返回值:
類(lèi)型 | 說(shuō)明 |
---|---|
[HiTraceId] | HiTraceId實(shí)例。 |
示例:
let traceId = hiTraceChain.begin("business");
// 若干業(yè)務(wù)邏輯完成后,創(chuàng)建跟蹤分支。
let spanTraceId = hiTraceChain.createSpan();
hiTraceChain.tracepoint
tracepoint(mode: HiTraceCommunicationMode, type: HiTraceTracepointType, id: HiTraceId, msg?: string): void
信息埋點(diǎn),同步接口。
系統(tǒng)能力: SystemCapability.HiviewDFX.HiTrace
參數(shù):
參數(shù)名 | 類(lèi)型 | 必填 | 說(shuō)明 |
---|---|---|---|
mode | [HiTraceCommunicationMode] | 是 | 信息埋點(diǎn)需要指定的跟蹤通信模式。 |
type | [HiTraceTracepointType] | 是 | 信息埋點(diǎn)需要指定的跟蹤埋點(diǎn)類(lèi)型。 |
id | [HiTraceId] | 是 | 實(shí)施信息埋點(diǎn)操作的HiTraceId實(shí)例。 |
msg | string | 否 | 信息埋點(diǎn)操作傳入的trace說(shuō)明信息。 |
示例:
let asyncTraceId = hiTraceChain.begin("business", hiTraceChain.HiTraceFlag.INCLUDE_ASYNC | hiTraceChain.HiTraceFlag.DONOT_CREATE_SPAN);
// 若干業(yè)務(wù)邏輯完成后,觸發(fā)信息埋點(diǎn)操作。
hiTraceChain.tracepoint(hiTraceChain.HiTraceCommunicationMode.THREAD, hiTraceChain.HiTraceTracepointType.SS, asyncTraceId, "Just a example");
hiTraceChain.isValid
isValid(id: HiTraceId): boolean
判斷HiTraceId對(duì)象是否有效,同步接口。
系統(tǒng)能力: SystemCapability.HiviewDFX.HiTrace
參數(shù):
參數(shù)名 | 類(lèi)型 | 必填 | 說(shuō)明 |
---|---|---|---|
id | [HiTraceId] | 是 | 需要判斷是否有效的HiTraceId實(shí)例。 |
返回值:
類(lèi)型 | 說(shuō)明 |
---|---|
boolean | 返回true表示HiTraceId有效,否則無(wú)效。 |
示例:
let traceId = hiTraceChain.begin("business");
let traceIdIsvalid = hiTraceChain.isValid(traceId);
hiTraceChain.isFlagEnabled
isFlagEnabled(id: HiTraceId, flag: HiTraceFlag): boolean
判斷HiTraceId對(duì)象中指定的跟蹤標(biāo)志是否已置位,同步接口。
系統(tǒng)能力: SystemCapability.HiviewDFX.HiTrace
參數(shù):
參數(shù)名 | 類(lèi)型 | 必填 | 說(shuō)明 |
---|---|---|---|
id | [HiTraceId] | 是 | 需要判斷指定跟蹤標(biāo)志是否置位的HiTraceId實(shí)例。 |
flag | [HiTraceFlag] | 是 | 指定的跟蹤標(biāo)志。 |
返回值:
類(lèi)型 | 說(shuō)明 |
---|---|
boolean | 返回true標(biāo)識(shí)HiTraceId已置位指定的flag,否則沒(méi)有置位。 |
示例:
let asyncTraceId = hiTraceChain.begin("business", hiTraceChain.HiTraceFlag.INCLUDE_ASYNC);
// enabledDoNotCreateSpanFlag為true
let enabledDoNotCreateSpanFlag = hiTraceChain.isFlagEnabled(asyncTraceId, hiTraceChain.HiTraceFlag.INCLUDE_ASYNC);
hiTraceChain.enableFlag
enableFlag(id: HiTraceId, flag: HiTraceFlag): void
置位HiTraceId對(duì)象中指定的跟蹤標(biāo)志,同步接口。
系統(tǒng)能力: SystemCapability.HiviewDFX.HiTrace
參數(shù):
參數(shù)名 | 類(lèi)型 | 必填 | 說(shuō)明HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿 |
---|---|---|---|
id | [HiTraceId]( | 是 | 需要置位指定跟蹤標(biāo)志的HiTraceId實(shí)例。 |
flag | [HiTraceFlag] | 是 | 指定的跟蹤標(biāo)志。 |
示例:
let asyncTraceId = hiTraceChain.begin("business", hiTraceChain.HiTraceFlag.INCLUDE_ASYNC);
hiTraceChain.enableFlag(asyncTraceId, hiTraceChain.HiTraceFlag.DONOT_CREATE_SPAN);
// enabledDoNotCreateSpanFlag為true
let enabledDoNotCreateSpanFlag = hiTraceChain.isFlagEnabled(asyncTraceId, hiTraceChain.HiTraceFlag.DONOT_CREATE_SPAN);
審核編輯 黃宇
-
開(kāi)發(fā)系統(tǒng)
+關(guān)注
關(guān)注
0文章
38瀏覽量
9690 -
鴻蒙
+關(guān)注
關(guān)注
57文章
2382瀏覽量
42941
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論