简介
strong-express-metrics
是一个用于监控 Node.js 应用程序性能指标的 npm 包。该包提供了一个中间件,可以轻松地将关键性能指标暴露给 Prometheus 或其他度量系统。
在本文中,我们将介绍如何使用 strong-express-metrics
监控 Node.js 应用程序的性能指标,并演示如何在 Prometheus 中可视化这些指标。
安装
您可以使用 npm 包管理器安装 strong-express-metrics
包:
npm install strong-express-metrics --save
集成
为了使用 strong-express-metrics
包,您需要将其作为 Express 应用程序的中间件集成。请按照以下步骤操作:
引入 npm 包和
express
模块:const express = require('express'); const metricsMiddleware = require('strong-express-metrics');
创建一个 Express 实例:
const app = express();
使用
metricsMiddleware
中间件:app.use(metricsMiddleware({ collectDefaultMetrics: true, requestDurationBuckets: [0.1, 0.5, 1, 1.5], requestLengthBuckets: [512, 1024, 5120, 10240], responseLengthBuckets: [512, 1024, 5120, 10240] }));
启动 Express 应用程序:
const server = app.listen(3000, () => { console.log(`Server running on port ${server.address().port}`); });
这将在 Express
应用程序中启用 strong-express-metrics
中间件。现在,您可以使用 Prometheus 或其他度量系统来监控性能指标。
Prometheus 可视化
为了可视化由 strong-express-metrics
暴露的指标,您需要在 Prometheus 配置文件中添加以下内容:
scrape_configs: - job_name: 'my-nodejs-app' static_configs: - targets: ['localhost:3000'] metrics_path: '/metrics'
这将告诉 Prometheus 在 http://localhost:3000/metrics
上找到 my-nodejs-app
的指标。请确保此 URL 与您在 Express
应用程序中设置的 URL 匹配。
现在,在 Prometheus
界面上导航到 Graph
标签,并执行以下操作:
在查询编辑器中输入以下查询:
sum(rate(request_duration_seconds_count[1m]))
单击
Execute
按钮以查看请求持续时间的总和。这将显示过去一分钟内处理的所有请求的总数。
在查询编辑器中输入以下查询:
histogram_quantile(0.95, sum(rate(request_duration_seconds_bucket[5m])) by (le))
单击
Execute
按钮以查看请求持续时间的 95th 百分位数。这将显示过去五分钟内处理的所有请求的持续时间的 95th 百分位数。
示例代码
下面是一个使用 strong-express-metrics
的示例 Express 应用程序:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- ----------------- - ---------------------------------- ----- --- - ---------- --------------------------- ---------------------- ----- ----------------------- ----- ---- -- ----- --------------------- ----- ----- ----- ------- ---------------------- ----- ----- ----- ------ ---- ------------ ----- ---- -- - --------------- --------- --- ----- ------ - ---------------- -- -- - ------------------- ------- -- ---- --------------------------- ---
结论
在本文中,我们介
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/53669