npm 包 @panterazar/nestjs-prom 使用教程

阅读时长 8 分钟读完

在开发 Web 应用程序时,性能监控是非常必要的一件事情。因此,引入一种运行时指标监控工具是非常必要的。nestjs-prometheus 是一个基于 NestJS 的运行时指标监控工具,可以帮助你监控你的 NestJS 应用程序运行的各种指标。本文将介绍在 NestJS 中如何使用这个 npm 包。

安装和配置

首先,你需要在你的 NestJS 应用程序中安装 @panterazar/nestjs-prom,可以通过以下命令进行安装:

安装完成后,你需要在你的应用程序主模块中进行配置。在这个模块中,你需要从 @panterazar/nestjs-prom 中导入 NestJSPrometheusService 和 PromModule,如下所示:

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

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

这个示例代码中,PromModule 的 register 方法用来配置和启用 Prometheus 服务。NestJSPrometheusService 是一个提供了各种指标的服务。

为了方便启用和配置,你可以根据你的需要在 PromModule 中传递一些配置选项,例如启用 Process 监控器和 HTTP 监控器,如下所示:

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

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

在这个示例代码中,配置默认标签,启用默认的控制器,进程监控器和 HTTP 监控器。

使用 NestJSPrometheusService

当配置完成后,在控制器和服务中就可以使用 NestJSPrometheusService 服务来记录各种指标和值。这个服务提供了很多方法,可以用来记录各种指标,例如计数器、直方图、摘要等。

这里将介绍一些基本的使用示例,在实际场景中,你可以根据需求来使用各种指标。

计数器

计数器指标用来记录某些事件发生的次数。例如在 NestJS 中,可以用计数器来记录 API 接口请求的总数。

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

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

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

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

这个示例代码中,我们创建了一个名为 http_requests_total 的计数器,并且记录了一次 GET 请求的状态为 200。

直方图

直方图指标用于记录事件发生的频率,以及在某个时间段内事件分布的情况。例如在 NestJS 开发中,可以用直方图来记录 API 接口请求的请求时间分布情况。

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

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

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

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

这个示例代码中,我们创建了一个名为 http_request_duration_seconds 的直方图,并记录了一次 GET 请求的时间分布情况,分别为 0.001 秒、0.01 秒、0.1 秒、1 秒和 10 秒。

摘要

摘要指标用于记录一组样本的分布情况,与直方图类似,但更加精细。例如在 NestJS 中,可以用摘要指标来记录系统 CPU 使用率的分布情况。

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

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

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

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

这个示例代码中,我们创建了一个名为 cpu_usage 的摘要指标,并记录了应用程序的 CPU 使用率分布情况,分别为 0.1、0.5 和 0.9。

结论

nestjs-prometheus 是一个非常强大的运行时指标监控工具,它可以帮助开发人员监控应用程序中的各种指标。本文介绍了如何在 NestJS 中使用 @panterazar/nestjs-prom 这个 npm 包来实现指标监控。如果你想了解更多关于指标监控的知识,以及如何在 NestJS 中使用它,则建议你仔细阅读 NestJS 和 @panterazar/nestjs-prom 的官方文档。

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

纠错
反馈