npm 包 @opentelemetry/api 使用教程

前言

随着云原生发展,微服务逐渐成为主流,复杂的分布式系统使得用户体验监测愈加困难。OpenTelemetry 提供了一套 API 和 SDK 来跨多个语言、跨多个应用程序或服务进行的观察性数据捕获,即现代化的分布式追踪系统。其中,npm 包 @opentelemetry/api 提供了一个 JavaScript API,方便前端开发者集成和使用 OpenTelemetry 进行代码追踪和监控。本文档将详细介绍 @opentelemetry/api 的使用。

安装和初始化

在使用 @opentelemetry/api 之前,我们需要手动安装它。在控制台输入下面的命令:

--- ------- ------------------

然后,我们需要初始化原型。通常情况下,在应用程序的入口处(main.js 或 index.js)中执行所需的代码即可。下面是示例:

-- -- ------------------ -
----- ------------- - ------------------------------

-- ---
----------------------------------------------- ------------------------------------

开始跟踪

现在,可以使用 @opentelemetry/api 收集应用程序的跟踪数据。通常情况下,每个 HTTP 端点都应该有一个唯一的跟踪配对。下面是一个简单的 Express 路由的示例:

-- -- ------------------ -
----- ------------- - ------------------------------
----- ------- - -------------------

-- ---
----------------------------------------------- ------------------------------------

-- ------ ------- ---
----- --- - ----------

-- ---------------
------------------------------------------------

-- --
------------------------- --------- --------- -- -
  -- ---------
  ----- ---- - -----------------------------------------------------------------------------
  ----------------------- -------------------

  -- ---

  -- -----
  -----------
---

-- -----
----- ---- - ---------------- -- -----
---------------- -- -- ---------------- ------ --------- -- ---- -----------

上例中,我们用 opentelemetry.trace.getTracer() API 创建了一个名为 "example-service" 的跟踪实例,并开始了一个新的活动(span)。在活动中,可以添加属性和事件。在示例中,我们添加了 "id" 属性,以便下一步可以更好地查询和监控数据,并最终通过 span.end() 完成活动并停止检测。

绑定和活动

绑定是一个可选功能,用于连接两个上下文。活动通常用于跟踪代码路径。当两个上下文需要相互联系时,绑定将非常有用。在常规编程中,通常使用回调函数来连接 API。使用 OpenTelemetry API,我们可以绑定活动,以便可以将活动上下文传递到其他异步 API 中。下面是一个简单的异步示例:

----- ------------- - ------------------------------

----------------------------------------------- ------------------------------------

----- ------ - -------------------------------------------------
----- ---------- - --------------------------------

------------- -- -
  -------------------------------------
  -----------------

  ----- --------- - -------------------------------
  -------------------------------------------------------------------------------------- ----------- -- -- -
    ------------------- ---- -------

    ----------------
  ---
-- ------

-------------------- ---- -------

在上例中,我们使用了 opentelemetry.context.with() 来创建一个新的上下文,以便我们可以将活动跟踪信息传递到异步方法中。在上例中,我们将父活动添加到该上下文中,以便我们可以在何时创建子活动。我们还使用 setTimeout() 来模拟需要异步操作的延迟。

标签

标签是一种为活动添加元数据的方法。标签通常更适合一些静态数据,例如键值对。这些元数据有助于更好地排序和查询活动信息。以下示例演示如何添加标签:

----- ------------- - ------------------------------

----------------------------------------------- ------------------------------------

----- ------ - -------------------------------------------------
----- ---- - --------------------------- - ---------- --- ------ ---

-------------------------- ---
-------------------------------- - ----- ------ ---
-----------

退耗和日志

退耗是一种非常有用的技术,可帮助我们发现代码中的性能瓶颈和弱点。在我们的 API 中,我们使用跟踪器(Tracer)来记录要检查的事件。 Tracer 用于记录跟踪点之间的时间差。下面是一个示例:

----- ------ - -------------------------------------------------

-------- ----------- -
  ----- ---- - ------------------------ ------
  -----------
-

-------- ----------- -
  ----- ---- - ------------------------ ------
  -----------
-

-------- ------------- -
  ----- ---- - ------------------------ --------
  -----------
-

----- ---------- - ------------------------ -------

------------
------------
--------------

-----------------

在代码片段中,我们使用 startSpan() API 创建了一个名为 "Parent Span" 的主跟踪器。然后,我们创建三个额外的活动,用于检查事件和命名方法。添加退耗数据到所有活动后,我们完成了 "Parent Span"。

在收集退耗数据时,还有一种非常有用的方法,即日志。日志是活动间的交流方法。开发者可以添加一些文本或结构化的数据,以便更好地理解活动的状态和上下文。以下是一个示例:

----- ------------- - ------------------------------

----------------------------------------------- ------------------------------------

----- ------ - -------------------------------------------------
----- ---- - --------------------------- - ---------- --- ------ ---

-------------------- --------- -----------------------------------
-------------------------------- - ------------- ---
-------------------- --------- ------------------------------------
------------------------- - -------------- ---

-----------

总结

@opentelemetry/api 为前端工程师提供了非常方便的 API。本文档中提到的示例和方法只是冰山一角。我们还可以使用更多高级技术来更好地跟踪和监控分布式系统的状态和性能。希望这篇文章能对前端开发人员提供有价值的信息和帮助。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/5eedab57b5cbfe1ea0610734


猜你喜欢

  • npm 包 @cpmech/envars 使用教程

    在日常前端开发中,我们常常需要使用环境变量来控制应用程序的不同行为,如生产环境、测试环境和开发环境。但是,在项目很复杂或者环境变量较多的情况下,手动管理环境变量会变得困难且繁琐。

    4 年前
  • npm 包 @azure/identity 使用教程

    @azure/identity 是一个非常牛逼的 npm 包,它为 Azure Cloud 上访问受保护的资源提供了简单、一致、可扩展的方式。它帮助你提供多种认证协议、包括支持公共云、国际、高度机密的...

    4 年前
  • npm 包 @types/mailparser 使用教程

    在前端开发中,处理邮件常常是必要的。MailParser 是一个流式的 Node.js 模块,用于解析电子邮件。在这篇文章中,我们会介绍如何使用 npm 包 @types/mailparser 来解析...

    4 年前
  • npm 包 @cpmech/util 使用教程

    前言 在前端领域,我们经常需要使用一些工具函数来提高效率。@cpmech/util 是一个功能强大的 JavaScript 工具函数库,可以帮助我们快速地解决开发中遇到的问题。

    4 年前
  • npm包 downlevel-dts 使用教程

    最近在使用Typescript编写前端代码的过程中,遇到了一些困难。其中一个问题是,我希望将库编译为ES5版本,但是TypeScript会生成本地代码。这意味着,即使我使用ES5覆盖上我的库,也无法使...

    4 年前
  • npm 包 @aws-cdk/aws-cloudwatch 使用教程

    简介 AWS CloudWatch 是 Amazon Web Services(AWS)提供的一项监控服务,可以监控您的 AWS 资源以及应用程序在 AWS 中运行时的性能和资源利用率。

    4 年前
  • npm 包 @aws-cdk/aws-kms 使用教程

    #npm 包 @aws-cdk/aws-kms 使用教程 在云计算时代,安全问题成为了一个越来越严重的议题,所以加密技术显得尤为重要。AWS 公司在其云平台上提供了 KMS(Key Managemen...

    4 年前
  • npm 包 karma-json-preprocessor 使用教程

    在前端开发过程中,我们经常需要测试代码的结果是否正确。而执行 JavaScript 测试时,如果需要测试一些 JSON 数据的输出是否正确,就需要使用 karma-json-preprocessor ...

    4 年前
  • npm 包 jsii-diff 使用教程

    前言 在编写 JavaScript 程序时,不可避免会需要在两个对象之间比较差异。在这个过程中,我们可能会使用一些比较简单的 JS 比较函数,但是,在更复杂的情况下,比较函数可能会变得更加复杂。

    4 年前
  • npm 包 jsii-release 使用教程

    什么是 jsii-release jsii-release 是一个发布 JSII 包的工具。JSII 是一个在不同编程语言中编写的 API 类型系统,它可让你使用 TypeScript、Python ...

    4 年前
  • npm 包 constructs 使用教程

    在前端开发中,我们经常需要创建和操作复杂的数据结构。学会如何使用现有的工具包可以提高我们的工作效率,快速实现项目需求。在本文中,我们将介绍一个用于构建 JavaScript 数据结构的 npm 包:c...

    4 年前
  • npm 包 @aws-cdk/assert 使用教程

    前言 在今天的前端开发中,借助云服务的力量可以让我们更好的创建、部署和维护我们的应用。而亚马逊云服务(AWS)则是目前市场上占有领先地位的云服务提供商之一。在 AWS 中,AWS CDK 是一种用于定...

    4 年前
  • npm 包 karma-json-to-file-reporter 使用教程

    前言 在编写前端测试代码时,测试报告输出不仅是开发者分享测试结果的重要方式,也是测试代码能否被正确执行并得到预期结果的重要指标。而 karma-json-to-file-reporter 是一个 np...

    4 年前
  • NPM包find-workspace-root使用教程

    很多时候,在进行前端开发时,我们需要同时管理多个项目。但经常会遇到一些问题,例如:如何在多个NPM项目中共享代码、库的依赖关系如何维护、如何管理多个项目的依赖关系等。

    4 年前
  • npm 包 jsii 使用教程

    什么是 jsii? jsii 是一款用于构建多语言 JavaScript 接口的框架。它可以实现在不同编程语言之间,高效地并且透明地集成和交互。因此,jsii 是一个完美的选项,使得我们可以在一个单一...

    4 年前
  • npm 包 @jsii/spec 使用教程

    简介 在前端开发中,npm 是最常用的包管理器之一。它为开发者提供了众多的包,可以方便地进行代码复用和项目协作。其中,@jsii/spec 是一个非常有用的 npm 包,它可以帮助开发者在各种编程语言...

    4 年前
  • npm 包 codemaker 使用教程

    简介 codemaker 是一个 npm 包,它可以帮助开发者快速生成 TypeScript、JavaScript 和 Java 等语言的代码。codemaker 利用了 AWS CDK 中大量的 A...

    4 年前
  • npm 包 oo-ascii-tree 使用教程

    在前端的开发项目中,常常需要绘制树形结构的数据集合,而这时候 oo-ascii-tree 这个 npm 包就可以帮助我们在命令行中绘制出清晰的树形结构图。 oo-ascii-tree 是什么? oo-...

    4 年前
  • npm 包 jsii-reflect 使用教程

    当你需要针对已有的 JavaScript 库编写 TypeScript 绑定时,性价比最高的方法是使用 jsii-reflect npm 包。本文将详细讲解如何使用该 npm 包,并提供示例代码。

    4 年前
  • npm 包 jsii-rosetta 使用教程

    前言 在前端开发中,我们经常需要使用各种 npm 包来帮助我们完成任务。其中,jsii-rosetta 是一个非常有用的 npm 包,它可以将 TypeScript 类型定义转换为其他语言的类型定义。

    4 年前

相关推荐

    暂无文章