如何在 PM2 中使用 PMX 对 Node.js 应用进行细粒度监控

阅读时长 5 分钟读完

在 Node.js 应用的开发和运维过程中,监控是非常重要的一环。PM2 是一个流行的 Node.js 进程管理工具,而 PMX 是一个 PM2 的扩展模块,可以提供更加细粒度的监控能力。本文将介绍如何在 PM2 中使用 PMX 对 Node.js 应用进行细粒度监控。

安装 PM2 和 PMX

首先需要安装 PM2 和 PMX。可以使用 npm 进行安装:

配置 PMX

安装完 PMX 后,需要在 Node.js 应用的入口文件中引入 PMX 模块,并配置 PMX:

在这个例子中,我们开启了 HTTP API、网络监控和事务监控,并忽略了包含 "socket.io" 的路由。

监控指标

PMX 提供了丰富的监控指标,可以帮助我们了解 Node.js 应用的运行情况。以下是一些常用的监控指标:

  • Event Loop Latency:事件循环延迟
  • Memory:内存使用情况
  • HTTP Requests/sec:每秒 HTTP 请求次数
  • HTTP Response Time:HTTP 响应时间
  • Transactions/sec:每秒事务次数
  • Transactions Response Time:事务响应时间
  • Network Throughput:网络吞吐量
  • Network Errors/sec:每秒网络错误次数

可以使用 PMX 的 HTTP API 获取这些监控指标。例如,以下代码可以获取当前应用的 Event Loop Latency:

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

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

在这个例子中,我们创建了一个 HTTP API,当收到 GET 请求时,返回当前应用的 Event Loop Latency。pmx.getProbeData('event-loop-latency') 可以获取 Event Loop Latency 的监控数据,mean 表示平均值。

示例代码

以下是一个完整的示例代码,演示如何使用 PMX 对 Node.js 应用进行细粒度监控:

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

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

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

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

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

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

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

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

在这个例子中,我们创建了一个 HTTP 服务器,并在每次请求结束后使用 pmx.emit('http', ...) 发送 HTTP 监控数据。我们还创建了四个 HTTP API,分别获取 Event Loop Latency、内存使用情况、HTTP 监控数据和事务监控数据。

结论

PMX 提供了丰富的监控能力,可以帮助我们了解 Node.js 应用的运行情况。在 PM2 中使用 PMX 可以实现更加细粒度的监控,帮助我们快速发现和解决问题。本文介绍了如何在 PM2 中使用 PMX 进行细粒度监控,并提供了示例代码供参考。

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

纠错
反馈