分布式跟蹤
本模塊提供了端側業務流程調用鏈跟蹤的打點能力,包括業務流程跟蹤的啟動、結束、信息埋點等能力。
說明: 本模塊首批接口從API version 8開始支持。后續版本的新增接口,采用上角標單獨標記接口的起始版本。 開發前請熟悉鴻蒙開發指導文檔 :[
gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
導入模塊
import hiTraceChain from '@ohos.hiTraceChain';
HiTraceFlag
跟蹤標志組合類型枚舉。
系統能力: 以下各項對應的系統能力均為SystemCapability.HiviewDFX.HiTrace。
名稱 | 默認值 | 說明 |
---|---|---|
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)]四類信息。一次同步調用輸出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的一個子集,設置該標志,只進行設備間的調用埋點。 |
HiTraceTracepointType
跟蹤埋點類型枚舉。
系統能力: 以下各項對應的系統能力均為SystemCapability.HiviewDFX.HiTrace。
名稱 | 默認值 | 說明 |
---|---|---|
CS | 0 | 客戶端發送類型,標識client側的發送埋點。 |
CR | 1 | 客戶端接收類型,標識client側的接收埋點。 |
SS | 2 | 服務端發送類型,標識server側的發送埋點。 |
SR | 3 | 服務端接收類型,標識server側的接收埋點。 |
GENERAL | 4 | 一般類型,標識CS、CR、SS、SR四種場景之外的埋點。 |
HiTraceCommunicationMode
跟蹤通信類型枚舉。
系統能力: 以下各項對應的系統能力均為SystemCapability.HiviewDFX.HiTrace。
名稱 | 默認值 | 說明 |
---|---|---|
DEFAULT | 0 | 缺省通信類型 |
THREAD | 1 | 線程間通信類型 |
PROCESS | 2 | 進程間通信類型 |
DEVICE | 3 | 設備間通信類型 |
HiTraceId
此接口為HiTraceId對象接口。
系統能力: 以下各項對應的系統能力均為SystemCapability.HiviewDFX.HiTrace。
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
chainId | bigint | 是 | 跟蹤鏈標識。 |
spanId | number | 否 | 分支標識。 |
parentSpanId | number | 否 | 父分支標識。 |
flags | number | 否 | 跟蹤標志組合。 |
hiTraceChain.begin
begin(name: string, flags: number = HiTraceFlag.DEFAULT): HiTraceId
開始跟蹤,同步接口。
系統能力: SystemCapability.HiviewDFX.HiTrace
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
name | string | 是 | 跟蹤業務名。 |
flags | number | 是 | 跟蹤標志組合,具體可參考[HiTraceFlag] |
返回值:
類型 | 說明 |
---|---|
[HiTraceId] | HiTraceId實例。 |
示例:
let asyncTraceId = hiTraceChain.begin("business", hiTraceChain.HiTraceFlag.INCLUDE_ASYNC | hiTraceChain.HiTraceFlag.DONOT_CREATE_SPAN);
hiTraceChain.end
end(id: HiTraceId): void
結束跟蹤,同步接口。
系統能力: SystemCapability.HiviewDFX.HiTrace
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
id | [HiTraceId] | 是 | HiTraceId實例。 |
示例:
let asyncTraceId = hiTraceChain.begin("business");
// 若干業務邏輯完成后,結束跟蹤。
hiTraceChain.end(asyncTraceId);
hiTraceChain.getId
getId(): HiTraceId
獲取跟蹤標識,同步接口。
系統能力: SystemCapability.HiviewDFX.HiTrace
返回值:
類型 | 說明 |
---|---|
[HiTraceId] | HiTraceId實例。 |
示例:
let traceId = hiTraceChain.begin("business");
// 若干業務邏輯完成后,獲取當前HiTraceId。
let curTraceId = hiTraceChain.getId();
hiTraceChain.setId
setId(id: HiTraceId): void
設置跟蹤標識,同步接口。
系統能力: SystemCapability.HiviewDFX.HiTrace
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
id | [HiTraceId] | 是 | HiTraceId實例。 |
示例:
let asyncTraceId;
let traceId = hiTraceChain.begin("business");
// 若干業務邏輯完成后,設置當前HiTraceId。
hiTraceChain.setId(asyncTraceId);
hiTraceChain.clearId
clearId(): void
清除跟蹤標識,同步接口。
系統能力: SystemCapability.HiviewDFX.HiTrace
示例:
let traceId = hiTraceChain.begin("business");
// 若干業務邏輯完成后,清除當前HiTraceId。
hiTraceChain.clearId();
hiTraceChain.createSpan
createSpan(): HiTraceId
創建跟蹤分支,同步接口。
系統能力: SystemCapability.HiviewDFX.HiTrace
返回值:
類型 | 說明 |
---|---|
[HiTraceId] | HiTraceId實例。 |
示例:
let traceId = hiTraceChain.begin("business");
// 若干業務邏輯完成后,創建跟蹤分支。
let spanTraceId = hiTraceChain.createSpan();
hiTraceChain.tracepoint
tracepoint(mode: HiTraceCommunicationMode, type: HiTraceTracepointType, id: HiTraceId, msg?: string): void
信息埋點,同步接口。
系統能力: SystemCapability.HiviewDFX.HiTrace
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
mode | [HiTraceCommunicationMode] | 是 | 信息埋點需要指定的跟蹤通信模式。 |
type | [HiTraceTracepointType] | 是 | 信息埋點需要指定的跟蹤埋點類型。 |
id | [HiTraceId] | 是 | 實施信息埋點操作的HiTraceId實例。 |
msg | string | 否 | 信息埋點操作傳入的trace說明信息。 |
示例:
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");
hiTraceChain.isValid
isValid(id: HiTraceId): boolean
判斷HiTraceId對象是否有效,同步接口。
系統能力: SystemCapability.HiviewDFX.HiTrace
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
id | [HiTraceId] | 是 | 需要判斷是否有效的HiTraceId實例。 |
返回值:
類型 | 說明 |
---|---|
boolean | 返回true表示HiTraceId有效,否則無效。 |
示例:
let traceId = hiTraceChain.begin("business");
let traceIdIsvalid = hiTraceChain.isValid(traceId);
hiTraceChain.isFlagEnabled
isFlagEnabled(id: HiTraceId, flag: HiTraceFlag): boolean
判斷HiTraceId對象中指定的跟蹤標志是否已置位,同步接口。
系統能力: SystemCapability.HiviewDFX.HiTrace
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
id | [HiTraceId] | 是 | 需要判斷指定跟蹤標志是否置位的HiTraceId實例。 |
flag | [HiTraceFlag] | 是 | 指定的跟蹤標志。 |
返回值:
類型 | 說明 |
---|---|
boolean | 返回true標識HiTraceId已置位指定的flag,否則沒有置位。 |
示例:
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對象中指定的跟蹤標志,同步接口。
系統能力: SystemCapability.HiviewDFX.HiTrace
參數:
參數名 | 類型 | 必填 | 說明HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿 |
---|---|---|---|
id | [HiTraceId]( | 是 | 需要置位指定跟蹤標志的HiTraceId實例。 |
flag | [HiTraceFlag] | 是 | 指定的跟蹤標志。 |
示例:
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);
審核編輯 黃宇
-
開發系統
+關注
關注
0文章
38瀏覽量
9696 -
鴻蒙
+關注
關注
57文章
2390瀏覽量
42968
發布評論請先 登錄
相關推薦
評論