使用 PM2 监控 HTTP 请求响应时间的实现方式

阅读时长 5 min read

在前端开发中,我们经常需要对应用程序进行性能监控,尤其是对于关键业务流程的 HTTP 请求响应时间,这是关乎用户体验和系统稳定性的重要指标。本文将介绍如何使用 PM2 监控 HTTP 请求响应时间,并提供实现代码以供参考。

PM2 简介

PM2 是 Node.js 应用程序的一款进程管理工具,它可以帮助我们管理 Node.js 应用的启动、重启、停止、扩缩容等操作,并提供了丰富的监控指标和日志功能。PM2 可以在本地或远程主机运行,支持多节点集群管理。它的优势在于提供了简单易用的命令行接口和 Web 界面,同时还支持插件扩展,可以方便地集成各种监控系统。

监控 HTTP 请求响应时间的需求

HTTP 请求响应时间是衡量网站性能的重要指标之一,它包括 DNS 解析时间、TCP 连接时间、请求发送时间、服务器响应时间、内容下载时间等多个环节。如果其中任何一个环节延迟,就会影响用户的等待时间和体验感。因此,我们需要实时监控这些指标,发现问题,及时采取措施进行优化。

使用 PM2 监控 HTTP 请求响应时间的方法

PM2 默认情况下是不会收集 HTTP 请求响应时间信息的,需要对其进行配置才能实现。以下是具体的实现步骤:

步骤一:安装 PM2

如果你还没有安装 PM2,可以使用 npm 命令进行安装。注意,要全局安装。

步骤二:创建一个 HTTP 服务器

我们需要先创建一个简单的 HTTP 服务器,以便进行性能测试。

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

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

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

保存该代码到一个文件中,例如 server.js,并运行它。

此时,我们已经可以访问 http://127.0.0.1:3000/ 来访问我们的 HTTP 服务器了。

步骤三:安装 http-proxy-middleware

http-proxy-middleware 是 Node.js 平台下的一个高性能代理中间件,可以通过它对 HTTP 请求及其响应进行拦截和处理,进而实现 HTTP 请求响应时间的监控。

你可以通过以下命令来安装:

步骤四:使用 http-proxy-middleware

为了使用 http-proxy-middleware,我们可以使用以下代码:

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

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

-----------

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

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

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

以上代码实现了对 http://127.0.0.1:3000 的代理,并采用 onProxyResonProxyReq 回调函数来记录请求和响应的时间、发送 pm2 事件和消息,以供后续展示和监控。

步骤五:启动 PM2

最后,我们使用以下命令来启动 PM2,运行 HTTP 代理服务。

这里我们指定代理服务脚本名称为 proxy-server.js,并设置其名称为 my-proxy-server,以便后续管理和监控。

结语

到这里,我们已经实现了使用 PM2 监控 HTTP 请求响应时间的功能。当访问 http://127.0.0.1:4000/ 时,控制台输出消息:

代表着服务器成功响应了一个 HTTP 请求,并在 10 毫秒内返回了结果。此时,我们就可以通过 PM2 的监控面板或其他可视化工具,对其进行可视化展示和分析。更重要的是,我们可以在实际生产环境中应用这些技术,实时监控系统性能和指标,优化和提升用户体验。

完整的示例代码可以在以下链接中找到:https://github.com/pm2-hive/distributed-tracing-demo/blob/master/proxy-server.js

在实际应用过程中,我们可能需要进行更细致的配置和参数调整,以满足实际需求。因此,在实践过程中需要根据具体场景进行灵活调整,并结合其他监控工具和技术一起使用,更好地保障应用程序的稳定性和性能。

Source: FunTeaLearn,Please indicate the source for reprints https://funteas.com/post/67bfe8490c976d473a4e1eb6

Feed
back