npm 包 zipkin-transport-http 使用教程

阅读时长 7 分钟读完

在使用分布式系统时,我们可能需要检测系统中的请求和调用。Zipkin 是一个开源分布式跟踪系统,能够帮助我们监测请求和跟踪微服务和应用程序的性能问题。zipkin-transport-http 是一个用于发送 Zipkin 跟踪数据到远程 Http 服务的 npm 包。 本文将介绍如何使用 zipkin-transport-http,以及其指导意义。

安装 zipkin-transport-http 包

在开始使用 zipkin-transport-http 包之前,需要确保您已经安装 Node.js,npm 和 Zipkin UI。您可以使用以下命令来安装 zipkin-transport-http 包:

使用 zipkin-transport-http

zipkin-transport-http 包使用 Http 传输 Zipkin 跟踪数据。我们需要按照以下步骤来使用它:

  1. 创建一个 Zipkin Tracer。
-- -------------------- ---- -------
----- - ------- ------------- - - ------------------
----- ---------- - ------------------------------
----- - ---------- - - ---------------------------------

----- ------- - --- --------------------- -- -- -------- --- ---- -- ---- --
----- ------ - --- --------
  --------
  --------- --- ---------------
    ------- --- ------------
      --------- ------------------------------------- -- ---- ------ ------ -------- ----
      ------------ -------------- -- --------- - ---- ------- -- ------- --------------
    --
  ---
  ------------ ---------------------- --------
---
展开代码

上面的代码段创建了一个 Zipkin Tracer 对象。它使用了 zipkin-context-cls 包的上下文实现(您也可以使用其他的上下文实现)。BatchRecorder 通过一批发送告诉您的 Zipkin 服务器。HttpLogger 控制如何记录数据。在这里,我们传入了 Zipkin 服务器的端点,您应该把 endpoint 修改为您 Zipkin 服务器的实际 URL。

  1. 创建和注册一些 Zipkin 中间件

Zipkin 中间件非常有用,它们可以帮助我们以可读的形式打印出使用 Zipkin 的应用程序中的跟踪数据。

使用 Koa:

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

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

-- ----- ------ ---------- -- --- --- --- ------
----------------------- ------ ----
-------------------------- ------ ----
展开代码

使用 Express:

上面的代码段将 Zipkin 中间件应用于 Koa 应用程序或 Express 应用程序,该中间件会自动记录应用程序生成的所有跟踪数据。

  1. 创建和发送 Zipkin 跟踪数据

我们可以使用 Zipkin Tracer 对象来创建新的跟踪数据,并发送它们到 Zipkin 服务器,以便记录和分析。

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

  --- -
    ----- ------ - ----- -------------
    -------------------
    ------ -------
  - ----- --- -
    -------------------
    ----- --
  - ------- -
    ------------------
  -
-
展开代码

上面的代码段展示了如何为 JavaScript 应用程序创建 Zipkin 跟踪数据。我们可以使用 .child 方法来为跟踪数据创建一个新 span,使用 .local 方法来添加跟踪数据的本地属性(例如,span 名称、服务器名等),使用 .finish 方法来完成跟踪数据的记录,使用 .error 方法来记录错误,使用 .flush 方法来清空跟踪数据以在下一个请求时重新开始记录跟踪数据。

深入了解 Zipkin 跟踪数据

Zipkin 跟踪数据有助于我们理解和优化应用程序和跨服务的请求。以下是跟踪数据中主要的属性:

  • traceId: 表示整个跟踪过程的唯一标识符。
  • parentId: 表示该 span 的父 span 的 ID。
  • spanId: 表示该 span 的唯一 ID。
  • kind: 表示该 span 的类型(SERVER、CLIENT、PRODUCER、CONSUMER等)。
  • name: 表示该 span 的名称。
  • timestamp: 表示该 span 的开始时间戳。
  • duration: 表示该 span 的持续时间。
  • localEndpoint: 表示本地服务的 IP 地址和端口号。
  • remoteEndpoint: 表示远程服务的 IP 地址和端口号等。

示例代码

下面是一个使用 zipkin-transport-http 包的示例代码:

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

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

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

  --- -
    ----- ------ - ----- -------------
    -------------------
    ------ -------
  - ----- --- -
    -------------------
    ----- --
  - ------- -
    ------------------
  -
-
展开代码

结论

在监测和跟踪微服务和应用程序的性能问题时,Zipkin 是一个非常有用的开源分布式跟踪系统。zipkin-transport-http 包提供了一个用于发送 Zipkin 跟踪数据到远程 Http 服务的 npm 包。本文介绍了如何使用 zipkin-transport-http,以及它的指导意义。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/129563