鸿蒙开发系统基础能力:【@ohos.hiTraceChain (分布式跟踪)】

分布式跟踪

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

icon-note.gif 说明:  本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

导入模块

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

参数:

参数名类型必填说明
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);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/740646.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

xss初识(xss-lab)

XSS跨站脚本 XSS漏洞概述 XSS被称为跨站脚本攻击&#xff08;Cross-site scripting&#xff09;&#xff0c;由于和CSS&#xff08;Cascading Style Sheets&#xff09; 重名&#xff0c;所以改为XSS。 XSS主要基于javascript语言完成恶意的攻击行为&#xff0c;因为javascri…

C++多线程异步日志实现

使用C11标准&#xff0c;构建了一个方便使用的、轻量化的日志系统。封装线程安全的lockQueue&#xff0c;实现对每条日志添加信息、push到lockQueue中的LogTmp类&#xff0c;实现一个多线程异步的日志系统Logger。 lockqueue.h #pragma once #include <queue> #include…

学期结束如何发布期末成绩?

当期末的试卷最后一张被收起&#xff0c;当教室里的喧嚣逐渐沉寂&#xff0c;学生们的心中充满了对成绩的期待与忐忑。期末成绩&#xff0c;关乎着学生的心情&#xff0c;更关系到他们的未来学习动力。那么&#xff0c;如何在保护学生隐私的同时&#xff0c;高效地公布成绩呢&a…

分享:Khoj:你的全能AI助手

在数字化时代&#xff0c;我们每天都会面对海量的信息&#xff0c;如何高效地管理和检索这些信息&#xff0c;同时提升工作效率&#xff0c;成为了许多人关注的焦点。为此&#xff0c;Khoj应运而生——一个功能强大、灵活多变的个人化AI助手&#xff0c;旨在助力用户轻松驾驭信…

双jdk切换

现在因为业务需求单一jdk8已经不满足日常需求了,以我为例之前用的jdk8,但是最新的一个项目用的是17版本的,没招了就下载配置的一套,需要手动切换用哪个版本的步骤如下 jdk8就自己安装配置吧,这只说在有8的版本上在配置17 1.下载一个17win的包(不下载exe) Java Downloads | O…

使用深度相机D435i+YOLOv8实现物体三维坐标实时显示

一、获取相机内参 下列指令为获取相机内参指令&#xff0c;输入此指令前需要获得相机的深度帧和彩色帧数据。 如何使用vsCode打开intel D435i深度相机 # 获取相机内参 depth_intrinsics depth_frame.profile.as_video_stream_profile().intrinsics color_intrinsics color…

Bootstrap和Bagging算法以及衍生算法

1. Bootstrap算法 实际上就是一种针对小样本的无放回式的抽样方法&#xff0c;通过方差的估计可以构造置信区间。 其核心思想和基本步骤如下&#xff1a;   &#xff08;1&#xff09; 采用重抽样技术从原始样本中抽取一定数量&#xff08;自己给定&#xff09;的样本&#…

Python高压电容导电体和水文椭圆微分

&#x1f3af;要点 &#x1f3af;二维热传导二阶偏微分方程 | &#x1f3af;调和函数和几何图曲率 | &#x1f3af;解潮汐波动方程 | &#x1f3af;解静止基态旋转球体流体运动函数 | &#x1f3af;水文空间插值 | &#x1f3af;流体流动模拟求解器 | &#x1f3af;随机算法解…

网络构建关键技术_1.网络高可用设计

1.网络高可用性概述 随着网络快速发展及应用日益深入&#xff0c;各种核心和增值业务在网络上广泛部署&#xff0c;网络的作用愈来愈凸显出来。即使网络出现短时间中断&#xff0c;都可能对业务带来比较大的影响&#xff0c;甚至给企业造成一定程度的经济损失。因此&#xff0c…

【CT】LeetCode手撕—23. 合并 K 个升序链表

目录 题目1- 思路2- 实现⭐23. 合并 K 个升序链表——题解思路 3- ACM 实现 题目 原题连接&#xff1a;23. 合并 K 个升序链表 1- 思路 模式识别&#xff1a;合并 K 个链表 ——> 优先队列 思路 借助优先队列&#xff0c;每次从 k 个链表中&#xff0c;各取一个元素&…

全球开店7万家,711如何策划极致产品力?

引言&#xff1a;越来越多的中国企业家认识到“极致产品力正成为最重要、最核心的品牌战略&#xff0c;是 21 世纪全球商业的主战场”。 《极致产品力》日本策划方案落地班是一个产品策划实操课程&#xff0c;可以帮助企业找到增长路径、拿到产品方案。 现今&#xff0c;许多中…

分布式数据库垂直分片如何计算?

在复习分布式数据库这一部分时&#xff0c;发现垂直分片较难理解&#xff0c;上网上查找资料&#xff0c;也发现找不到&#xff0c;固在考试结束后将自己的理解记录下来。 垂直分片的计算总体上分为三个步骤;1、属性亲和度矩阵AA的计算&#xff1b;2、聚类亲和度CA矩阵的计算&a…

基于VTK9.3.0+Visual Studio2017 c++实现DICOM影像MPR多平面重建

开源库&#xff1a;VTK9.3.0 开发工具&#xff1a;Visual Studio2017 开发语言&#xff1a;C 实现过程&#xff1a; void initImageActor(double* Matrix, double* center, vtkSmartPointer<vtkImageCast> pImageCast,vtkSmartPointer<vtkImageReslice> imageRe…

6.折半查找

折半查找 基本思路在有序表中,取中间元素作为比较对象,若给定值与中间元素的要查找的数相等,则查找成功;若给定值小于中间元素的要查找的数,则在中间元素的左半区继续查找;若给定值大于中间元素的要查找的数,则在中间元素的右半区继续查找。不断重复上述查找过 程,直到查找成功…

数据结构——二分算法

二分查找 1. 在排序数组中查找元素的第一个和最后一个位置 代码实现&#xff1a; /*** Note: The returned array must be malloced, assume caller calls free().*/int binarySearch(int *nums, int numsSize, int target) {int l 0, r numsSize - 1; while (l <…

Kubernetes 中 ElasticSearch 中的 MinIO 审核日志

无论您是在本地还是在云中&#xff0c;您都希望确保以同构的方式设置工具和流程。无论在何处访问基础结构&#xff0c;您都希望确保用于与各种基础结构进行交互的工具与其他区域相似。 考虑到这一点&#xff0c;在部署您自己的 MinIO 对象存储基础架构时&#xff0c;深入了解您…

缓存雪崩、穿透、击穿的概念和如何避免

雪崩 概念 高并发请求多个key&#xff0c;此时多个key同时失效、不在缓存中&#xff0c;请求全部打到数据库&#xff0c;使数据库无法处理这么多的连接&#xff0c;导致数据库死机 如何避免 防止多个key同时过期&#xff0c;设置随机的过期时间不设置过期时间&#xff0c;有…

汽车抬头显示器HUD阳光倒灌实验太阳光模拟器

简述 HUD阳光倒灌实验是评估汽车抬头显示器&#xff08;HUD&#xff09;在强烈日照条件下的性能表现的一种测试方法。该实验通过模拟太阳光照射&#xff0c;检测HUD在阳光直射下的显示效果&#xff0c;以确保驾驶者在强烈日照下仍能清晰地看到HUD显示的信息&#xff0c;从而提…

【计算机视觉】人脸算法之图像处理基础知识(六)

图像直方图 图像直方图是描述图像中像素强度分布的一种统计图表&#xff0c;它是图像处理和计算机视觉领域中一个非常基础且重要的概念。图像直方图通常用于分析图像的亮度、对比度特性&#xff0c;以及在图像增强、阈值分割、特征提取等多种图像处理任务。 import cv2 impor…

ogg格式怎么转换为mp3?这四种转换方法非常好用!

ogg格式怎么转换为mp3&#xff1f;在当今数字化时代&#xff0c;音频文件格式的转换已经成为确保音频内容在各种设备和平台上无缝播放的至关重要的一环&#xff0c;尽管OGG格式拥有支持多声道的优势&#xff0c;但由于其使用率相对较低&#xff0c;这可能会在某些情况下导致兼容…