分布式跟蹤

2024-01-23 17:19 更新

本模塊提供了端側(cè)業(yè)務(wù)流程調(diào)用鏈跟蹤的打點(diǎn)能力,包括業(yè)務(wù)流程跟蹤的啟動、結(jié)束、信息埋點(diǎn)等能力。

說明

本模塊首批接口從API version 8開始支持。后續(xù)版本的新增接口,采用上角標(biāo)單獨(dú)標(biāo)記接口的起始版本。

導(dǎo)入模塊

  1. import hiTraceChain from '@ohos.hiTraceChain';

HiTraceFlag

跟蹤標(biāo)志組合類型枚舉。

系統(tǒng)能力: 以下各項(xiàng)對應(yīng)的系統(tǒng)能力均為SystemCapability.HiviewDFX.HiTrace。

名稱說明
DEFAULT0缺省標(biāo)志。
INCLUDE_ASYNC1異步調(diào)用標(biāo)志。啟動跟蹤時,缺省只跟蹤同步調(diào)用。設(shè)置該標(biāo)志,同時跟蹤同步、異步調(diào)用。
DONOT_CREATE_SPAN1 << 1無分支標(biāo)志。啟動跟蹤時,在同步、異步調(diào)用時缺省自動創(chuàng)建分支信息。設(shè)置該標(biāo)志,指示不創(chuàng)建分支。
TP_INFO1 << 2埋點(diǎn)標(biāo)志。啟動跟蹤式時,缺省不進(jìn)行埋點(diǎn)。調(diào)試場景下設(shè)置該標(biāo)志,在同步、異步調(diào)用的收發(fā)側(cè)自動埋點(diǎn),輸出埋點(diǎn)信息和時間戳。收發(fā)埋點(diǎn)按照client、server分為client send(CS)、server receive(SR)、server send(SS)、client receive(CR)四類信息。一次同步調(diào)用輸出CS/SR/SS/CR,一次異步調(diào)用輸出CS/SR/SS三個埋點(diǎn)信息。
NO_BE_INFO1 << 3無起始結(jié)束標(biāo)志。啟動跟蹤時,缺省打印啟動及結(jié)束跟蹤信息。設(shè)置該標(biāo)志,指示不打印啟動及結(jié)束跟蹤信息。
DISABLE_LOG1 << 4日志關(guān)聯(lián)標(biāo)志。設(shè)置該標(biāo)志,指示隱藏日志中的跟蹤信息。
FAILURE_TRIGGER1 << 5故障觸發(fā)標(biāo)志。預(yù)置標(biāo)志,暫時沒有作用。
D2D_TP_INFO1 << 6設(shè)備間埋點(diǎn)標(biāo)志。TP_INFO的一個子集,設(shè)置該標(biāo)志,只進(jìn)行設(shè)備間的調(diào)用埋點(diǎn)。

HiTraceTracepointType

跟蹤埋點(diǎn)類型枚舉。

系統(tǒng)能力: 以下各項(xiàng)對應(yīng)的系統(tǒng)能力均為SystemCapability.HiviewDFX.HiTrace。

名稱說明
CS0客戶端發(fā)送類型,標(biāo)識client側(cè)的發(fā)送埋點(diǎn)。
CR1客戶端接收類型,標(biāo)識client側(cè)的接收埋點(diǎn)。
SS2服務(wù)端發(fā)送類型,標(biāo)識server側(cè)的發(fā)送埋點(diǎn)。
SR3服務(wù)端接收類型,標(biāo)識server側(cè)的接收埋點(diǎn)。
GENERAL4一般類型,標(biāo)識CS、CR、SS、SR四種場景之外的埋點(diǎn)。

HiTraceCommunicationMode

跟蹤通信類型枚舉。

系統(tǒng)能力: 以下各項(xiàng)對應(yīng)的系統(tǒng)能力均為SystemCapability.HiviewDFX.HiTrace。

名稱說明
DEFAULT0缺省通信類型
THREAD1線程間通信類型
PROCESS2進(jìn)程間通信類型
DEVICE3設(shè)備間通信類型

HiTraceId

此接口為HiTraceId對象接口。

系統(tǒng)能力: 以下各項(xiàng)對應(yīng)的系統(tǒng)能力均為SystemCapability.HiviewDFX.HiTrace。

名稱類型必填說明
chainIdbigint跟蹤鏈標(biāo)識。
spanIdnumber分支標(biāo)識。
parentSpanIdnumber父分支標(biāo)識。
flagsnumber跟蹤標(biāo)志組合。

hiTraceChain.begin

begin(name: string, flags?: number): HiTraceId

開始跟蹤,同步接口。

系統(tǒng)能力: SystemCapability.HiviewDFX.HiTrace

參數(shù):

參數(shù)名類型必填說明
namestring跟蹤業(yè)務(wù)名。
flagsnumber跟蹤標(biāo)志組合,具體可參考HiTraceFlag。

返回值:

類型說明
HiTraceIdHiTraceId實(shí)例。

示例:

  1. 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ù)名類型必填說明
idHiTraceIdHiTraceId實(shí)例。

示例:

  1. let asyncTraceId = hiTraceChain.begin("business", hiTraceChain.HiTraceFlag.DEFAULT);
  2. // 若干業(yè)務(wù)邏輯完成后,結(jié)束跟蹤。
  3. hiTraceChain.end(asyncTraceId);

hiTraceChain.getId

getId(): HiTraceId

獲取跟蹤標(biāo)識,同步接口。

系統(tǒng)能力: SystemCapability.HiviewDFX.HiTrace

返回值:

類型說明
HiTraceIdHiTraceId實(shí)例。

示例:

  1. let traceId = hiTraceChain.begin("business", hiTraceChain.HiTraceFlag.DEFAULT);
  2. // 若干業(yè)務(wù)邏輯完成后,獲取當(dāng)前HiTraceId。
  3. let curTraceId = hiTraceChain.getId();

hiTraceChain.setId

setId(id: HiTraceId): void

設(shè)置跟蹤標(biāo)識,同步接口。

系統(tǒng)能力: SystemCapability.HiviewDFX.HiTrace

參數(shù):

參數(shù)名類型必填說明
idHiTraceIdHiTraceId實(shí)例。

示例:

  1. let asyncTraceId;
  2. let traceId = hiTraceChain.begin("business", hiTraceChain.HiTraceFlag.DEFAULT);
  3. // 若干業(yè)務(wù)邏輯完成后,設(shè)置當(dāng)前HiTraceId。
  4. hiTraceChain.setId(asyncTraceId);

hiTraceChain.clearId

clearId(): void

清除跟蹤標(biāo)識,同步接口。

系統(tǒng)能力: SystemCapability.HiviewDFX.HiTrace

示例:

  1. let traceId = hiTraceChain.begin("business", hiTraceChain.HiTraceFlag.DEFAULT);
  2. // 若干業(yè)務(wù)邏輯完成后,清除當(dāng)前HiTraceId。
  3. hiTraceChain.clearId();

hiTraceChain.createSpan

createSpan(): HiTraceId

創(chuàng)建跟蹤分支,同步接口。

系統(tǒng)能力: SystemCapability.HiviewDFX.HiTrace

返回值:

類型說明
HiTraceIdHiTraceId實(shí)例。

示例:

  1. let traceId = hiTraceChain.begin("business", hiTraceChain.HiTraceFlag.DEFAULT);
  2. // 若干業(yè)務(wù)邏輯完成后,創(chuàng)建跟蹤分支。
  3. 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ù)名類型必填說明
modeHiTraceCommunicationMode信息埋點(diǎn)需要指定的跟蹤通信模式。
typeHiTraceTracepointType信息埋點(diǎn)需要指定的跟蹤埋點(diǎn)類型。
idHiTraceId實(shí)施信息埋點(diǎn)操作的HiTraceId實(shí)例。
msgstring信息埋點(diǎn)操作傳入的trace說明信息。

示例:

  1. let asyncTraceId = hiTraceChain.begin("business", hiTraceChain.HiTraceFlag.INCLUDE_ASYNC | hiTraceChain.HiTraceFlag.DONOT_CREATE_SPAN);
  2. // 若干業(yè)務(wù)邏輯完成后,觸發(fā)信息埋點(diǎn)操作。
  3. hiTraceChain.tracepoint(hiTraceChain.HiTraceCommunicationMode.THREAD, hiTraceChain.HiTraceTracepointType.SS, asyncTraceId, "Just a example");

hiTraceChain.isValid

isValid(id: HiTraceId): boolean

判斷HiTraceId對象是否有效,同步接口。

系統(tǒng)能力: SystemCapability.HiviewDFX.HiTrace

參數(shù):

參數(shù)名類型必填說明
idHiTraceId需要判斷是否有效的HiTraceId實(shí)例。

返回值:

類型說明
boolean返回true表示HiTraceId有效,否則無效。

示例:

  1. let traceId = hiTraceChain.begin("business", hiTraceChain.HiTraceFlag.DEFAULT);
  2. let traceIdIsvalid = hiTraceChain.isValid(traceId);

hiTraceChain.isFlagEnabled

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

判斷HiTraceId對象中指定的跟蹤標(biāo)志是否已置位,同步接口。

系統(tǒng)能力: SystemCapability.HiviewDFX.HiTrace

參數(shù):

參數(shù)名類型必填說明
idHiTraceId需要判斷指定跟蹤標(biāo)志是否置位的HiTraceId實(shí)例。
flagHiTraceFlag指定的跟蹤標(biāo)志。

返回值:

類型說明
boolean返回true標(biāo)識HiTraceId已置位指定的flag,否則沒有置位。

示例:

  1. let asyncTraceId = hiTraceChain.begin("business", hiTraceChain.HiTraceFlag.INCLUDE_ASYNC);
  2. // enabledDoNotCreateSpanFlag為true
  3. let enabledDoNotCreateSpanFlag = hiTraceChain.isFlagEnabled(asyncTraceId, hiTraceChain.HiTraceFlag.INCLUDE_ASYNC);

hiTraceChain.enableFlag

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

置位HiTraceId對象中指定的跟蹤標(biāo)志,同步接口。

系統(tǒng)能力: SystemCapability.HiviewDFX.HiTrace

參數(shù):

參數(shù)名類型必填說明
idHiTraceId需要置位指定跟蹤標(biāo)志的HiTraceId實(shí)例。
flagHiTraceFlag指定的跟蹤標(biāo)志。

示例:

  1. let asyncTraceId = hiTraceChain.begin("business", hiTraceChain.HiTraceFlag.INCLUDE_ASYNC);
  2. hiTraceChain.enableFlag(asyncTraceId, hiTraceChain.HiTraceFlag.DONOT_CREATE_SPAN);
  3. // enabledDoNotCreateSpanFlag為true
  4. let enabledDoNotCreateSpanFlag = hiTraceChain.isFlagEnabled(asyncTraceId, hiTraceChain.HiTraceFlag.DONOT_CREATE_SPAN);
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號