0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙开发系统基础能力:ohos.hiTraceChain 分布式跟踪

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-06-25 09:49 次阅读

分布式跟踪

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

icon-note.gif说明: 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 开发前请熟悉鸿蒙开发指导文档 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]

导入模块

import hiTraceChain from '@ohos.hiTraceChain';

HiTraceFlag

跟踪标志组合类型枚举。

系统能力: 以下各项对应的系统能力均为SystemCapability.HiviewDFX.HiTrace。

名称默认值说明
DEFAULT0缺省标志。
INCLUDE_ASYNC1异步调用标志。启动跟踪时,缺省只跟踪同步调用。设置该标志,同时跟踪同步、异步调用。
DONOT_CREATE_SPAN1 << 1无分支标志。启动跟踪时,在同步、异步调用时缺省自动创建分支信息。设置该标志,指示不创建分支。
TP_INFO1 << 2埋点标志。启动跟踪式时,缺省不进行埋点。调试场景下设置该标志,在同步、异步调用的收发侧自动埋点,输出埋点信息和时间戳。收发埋点按照client、server分为[client send(CS)、server receive(SR)、server send(SS)、client receive(CR)]四类信息。一次同步调用输出CS/SR/SS/CR,一次异步调用输出CS/SR/SS三个埋点信息。
NO_BE_INFO1 << 3无起始结束标志。启动跟踪时,缺省打印启动及结束跟踪信息。设置该标志,指示不打印启动及结束跟踪信息。
DISABLE_LOG1 << 4日志关联标志。设置该标志,指示隐藏日志中的跟踪信息。
FAILURE_TRIGGER1 << 5故障触发标志。预置标志,暂时没有作用。
D2D_TP_INFO1 << 6设备间埋点标志。TP_INFO的一个子集,设置该标志,只进行设备间的调用埋点。

HiTraceTracepointType

跟踪埋点类型枚举。

系统能力: 以下各项对应的系统能力均为SystemCapability.HiviewDFX.HiTrace。

名称默认值说明
CS0客户端发送类型,标识client侧的发送埋点。
CR1客户端接收类型,标识client侧的接收埋点。
SS2服务端发送类型,标识server侧的发送埋点。
SR3服务端接收类型,标识server侧的接收埋点。
GENERAL4一般类型,标识CS、CR、SS、SR四种场景之外的埋点。

HiTraceCommunicationMode

跟踪通信类型枚举。

系统能力: 以下各项对应的系统能力均为SystemCapability.HiviewDFX.HiTrace。

名称默认值说明
DEFAULT0缺省通信类型
THREAD1线程间通信类型
PROCESS2进程间通信类型
DEVICE3设备间通信类型

HiTraceId

此接口为HiTraceId对象接口。

系统能力: 以下各项对应的系统能力均为SystemCapability.HiviewDFX.HiTrace。

参数类型必填说明
chainIdbigint跟踪链标识。
spanIdnumber分支标识。
parentSpanIdnumber父分支标识。
flagsnumber跟踪标志组合。

hiTraceChain.begin

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

开始跟踪,同步接口。

系统能力: SystemCapability.HiviewDFX.HiTrace

参数:

参数名类型必填说明
namestring跟踪业务名。
flagsnumber跟踪标志组合,具体可参考[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实例。
msgstring信息埋点操作传入的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

参数:

搜狗高速浏览器截图20240326151344.png

参数名类型必填说明HarmonyOSOpenHarmony鸿蒙文档籽料: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

    文章

    37

    浏览量

    9564
  • 鸿蒙
    +关注

    关注

    55

    文章

    2090

    浏览量

    42261
收藏 人收藏

    评论

    相关推荐

    分布式软件系统

    三个特点:分布性、通信性和稳健性。 分布式文件系统具有执行远程文件存取的能力,并以透明方式对分布在网络上的文件进行管理和存取。
    发表于 07-22 14:53

    HarmonyOS应用开发-分布式设计

    设计理念HarmonyOS 是面向未来全场景智慧生活方式的分布式操作系统。对消费者而言,HarmonyOS 将生活场景中的各类终端进行能力整合,形成“One Super Device”,以实现
    发表于 09-22 17:11

    HarmonyOS鸿蒙操作系统之什么是“基于微内核的全场景分布式操作系统”?

    HarmonyOS鸿蒙操作系统之什么是“基于微内核的全场景分布式操作系统”?即使作为理工科的人咋一眼看上去似乎也不太懂这是什么,就像区块链这个概念刚出来一样,普通人都是一脸懵B(当然现
    发表于 09-23 17:06

    鸿蒙分布式任务调度

    鸿蒙分布式任务调度,实现跨设备FA拉起
    发表于 06-12 17:28

    鸿蒙分布式任务调度——数据传递

    鸿蒙分布式任务调度之数据传递
    发表于 06-12 17:29

    深度解读设备的“万能语言”鸿蒙系统分布式软总线能力 精选资料推荐

    摘要:本文分享鸿蒙分布式软总线,并对相关源代码进行解析,为在鸿蒙系统平台上工作的相关人员的信息参考和指导。总线是一种内部结构,在计算机系统
    发表于 07-21 06:27

    【木棉花】:简单的分布式任务调度

    Ability:Service模板:用于提供后台运行任务的能力。Data模板:用于对外部提供统一的数据访问抽象。根据 Ability 模板及意图的不同,分布式任务调度向开发者提供以下六种能力
    发表于 09-03 14:34

    【木棉花】JS分布式能力——学习笔记

    前言JS也是具有分布式能力的,本文就以两个小项目来分享JS的分布式拉起和分布式迁移♪(∇*)正文这是从官网中找到的分布式API在FA生命周期
    发表于 09-04 14:33

    HarmonyOS教程一基于分布式调度的能力,实现远程FA的启动

    1. 介绍开发者在应用中集成分布式调度能力,通过调用指定能力分布式接口,实现跨设备能力调度。根
    发表于 09-10 10:07

    HDC技术分论坛:分布式调试、调优能力解决方案

    依赖于OS接口,计划将在HarmonyOS 3.0 Beta版本系统发布后才能支持。一、分布式调试能力DevEco Studio将为开发者提供分布式
    发表于 10-28 16:20

    HarmonyOS分布式应用框架深入解读

    迁移过去,这一点系统在应用框架以及底层的分布式硬件的一个结合完成了这么一个事情,减少开发者的负担。 ——————原创:老王丨【个人微信:spoto777;公众号:鸿蒙
    发表于 11-22 15:15

    HDC2021技术分论坛:分布式调试、调优能力解决方案

    的DevEco Studio分布式调试和调优的部分能力依赖于OS接口,计划将在HarmonyOS 3.0 Beta版本系统发布后才能支持。一、分布式调试
    发表于 11-22 17:17

    HarmonyOS分布式文件系统开发指导

    分布式文件系统概述 分布式文件系统(hmdfs,HarmonyOS Distributed File System)提供跨设备的文件访问能力
    发表于 11-14 17:14

    分布式系统硬件资源池原理和接入实践

    提供更好的服务体验。 图 3 鸿蒙硬件资源池支持各类消费者场景 2.2 开发者场景 对于开发者来说,由于分布式硬件资源池将跨设备硬件调用的复杂度都封装在了
    发表于 12-06 10:02

    鸿蒙原生应用开发——分布式数据对象

    分布式数据对象退出 sessionId 后,该对象将检测不到其他对象的变更。 02、分布式数据对象能力 1、分布式数据对象创建 2、分布式
    发表于 12-08 10:01