引言
在开发和部署 Web 应用程序时,一个关键的方面是将应用程序监控起来,以便随时得知应用程序的运行状况和性能。为了实现这一目的,我们可以使用像 Prometheus 这样的工具来收集和存储监控指标,然后使用像 Grafana 这样的工具来可视化这些指标数据。在 Node.js 的世界中,我们可以使用一系列 npm 包来实现这个目的,其中 egg-xprom 是其中之一。
在本文中,我们将一步步地介绍如何使用 egg-xprom 来监控 Egg.js 应用程序。我们将先介绍 egg-xprom 的基本概念和原理,然后讨论如何安装和配置 egg-xprom,最后演示如何在 Grafana 中可视化监控指标数据。
egg-xprom 的基本概念和原理
egg-xprom 是一个 Egg.js 插件,可用于将 Egg.js 应用程序中的指标数据暴露给 Prometheus。该插件在 Egg.js 应用程序中注册并启动 Prometheus 指标收集器,然后从应用程序中收集指标数据,并将其暴露给 Prometheus 的 HTTP API。
egg-xprom 插件的工作原理如下图所示:
简单来说,egg-xprom 让我们可以将 Egg.js 应用程序中的性能指标数据(如请求持续时间、内存占用等)暴露为 Prometheus 的监控指标,从而能够在 Prometheus 中进行存储、查询和可视化监控数据。
安装和配置 egg-xprom
安装 egg-xprom 工具
npm i egg-xprom --save
配置 egg-xprom 插件
在 egg 的 config.default.js
中添加如下配置:
exports.xprom = { enable: true, path: '/metrics', collectDefaultMetrics: true, httpServer: false, };
其中:
enable
:是否启用插件,默认为true
;path
:指定暴露监控指标的 HTTP API 路径,默认为/metrics
;collectDefaultMetrics
:是否开启默认的 Prometheus 指标,默认为true
;httpServer
:是否启用 Egg.js 服务器中的 HTTP server,默认为false
。
在 Egg.js 应用程序的最高层级目录下创建 prometheus.js
文件,内容如下:
-- -------------------- ---- ------- ----- ---------- - ----------------------- ----- --------------------- - --------------------------------- ----------------------- ------- -------- --- -------------- - ------------- - ------------------ -- - ----- - ------ - ---------- - ----- -- - - ----------- -- ---- ----- ----- ------ -------- ---------- -------- -- --- -- -------- ---------- ------- ---- ---------- -------- ---------------------------- -- ------ ------- -------- -- ---------- -- ----- ------ -- ------ -------------- -- ----------------- -- -------------- ----------------------------------- -- --------------------- -- -------- ---- -- ----- ----------- -- ---------------- -- ----- ----- --- ---- -- ----- ----------- -- ----------------- -- ----- -- ---- ------ ----- -- ----------------- -- ------ ------------- ---- --- -------- -- ------------------ -- ------- ------- ------- -------- -- --- --- ------ ------ -- -------------------------- - -- ------- ---------- ----------------------------- - ------------------------------------------- - ---- - --- ------ ------ --- -- ----------------------- - -- --- ---------- ----------------------------- - --------------------------------------- - - - - -- ------------ - -------------------- - --------------- ------------------------------ - --- --
该文件主要是用于在 Egg.js 应用程序启动前注册并启动 Prometheus 指标收集器,并将在应用程序中定义的指标添加到 Prometheus 中进行监控。
将 egg-xprom 插件添加到 Egg.js 应用程序中
将 egg-xprom 插件添加到 Egg.js 应用程序的 config/plugin.js
文件中即可:
exports.xprom = { enable: true, package: 'egg-xprom', };
使用 Grafana 可视化监控指标数据
接下来,我们将使用 Grafana 在 Egg.js 应用程序中可视化监控指标数据。在完成上述配置后,请确保已安装 Prometheus 和 Grafana。
1. 配置 Prometheus
在 Prometheus 的 prometheus.yml
中添加如下配置:
-- -------------------- ---- ------- ------- ---------------- --- -------------------- --- --------------- - --------- ------- ---------------- -- ------------- -------- ------- ---- --------------- - -------- -------------------------------------
其中:
job_name
:指定采集任务名称,随意命名即可;scrape_interval
:指定采集间隔时间;metrics_path
:指定暴露指标信息的地址路径;scheme
:指定采用的协议,一般为 http;targets
:指定应用程序的地址。
2. 配置 Grafana
在 Grafana 中通过 Web UI 添加数据源。选择 Prometheus,并填写 Prometheus 的 HTTP API 地址。
创建一个新的 Dashboard。在 Dashboard 中添加一个新的 Panel,设置数据源为 Prometheus,并输入以下查询表达式:
rate(http_request_duration_milliseconds_sum{job="eggjs",code="2xx"}[1m])/rate(http_request_duration_milliseconds_count{job="eggjs",code="2xx"}[1m])
该查询表达式用于计算 Egg.js 应用程序中HTTP请求的成功率。
最终效果如下:
结论
在本文中,我们介绍了如何使用 npm 包 egg-xprom 来监控 Egg.js 应用程序中的性能指标数据,并使用 Grafana 在 Egg.js 应用程序中可视化监控指标数据。希望本文能够帮助你了解如何在 Egg.js 应用程序中使用 egg-xprom。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600671d630d0927023822b7b