VSCode中Node环境接入Prometheus本地监控指标并进行数据采集

轻敏酱_6264

轻敏酱_6264

2026-07-06

641人浏览

原创

Node.js进程指标需通过prom-client库暴露给Prometheus:安装后调用collectDefaultMetrics()注册默认指标(如事件循环延迟、堆内存、GC统计),再启动HTTP服务器在/metrics端点返回register.metrics()序列化数据,注意await处理Promise、避免端口冲突及确保指标注册与生命周期正确。

vscode中node环境接入prometheus本地监控指标并进行数据采集

Node.js 进程指标怎么暴露给 Prometheus

Prometheus 默认不识别 Node.js 进程数据,必须由应用主动暴露 /metrics 端点。直接调用 process.cpuUsage() 或 process.memoryUsage() 只是获取快照,不构成可拉取的指标格式。

正确做法是引入 prom-client 库,它提供符合 Prometheus 文本协议(OpenMetrics)的指标注册与序列化能力:

npm install prom-client

在启动脚本中初始化并暴露 HTTP 端点:

const client = require('prom-client');
const collectDefaultMetrics = client.collectDefaultMetrics;
const register = client.register;
<p>// 注册默认指标(event loop delay、heap usage、GC 等)
collectDefaultMetrics({ timeout: 5000 });</p><p>// 启动一个简单 HTTP server 暴露指标
const http = require('http');
http.createServer(async (req, res) => {
if (req.url === '/metrics') {
res.setHeader('Content-Type', register.contentType);
res.end(await register.metrics());
}
}).listen(9091);</p>

注意:register.metrics() 返回 Promise,必须 await;否则返回空字符串或报错 TypeError: Cannot read property 'toString' of undefined。

VSCode 调试环境下如何避免端口冲突

VSCode 启动 Node.js 调试时默认复用同一进程,若多个调试会话同时运行,9091 端口极易被占用,报错 Error: listen EADDRINUSE: address already in use :::9091。

解决方式不是硬编码端口,而是动态分配:

  • 使用 portfinder 库自动选取可用端口(推荐)
  • 或读取环境变量 PROCESS_ID + 固定偏移量,例如 9090 + process.pid % 100
  • 在 launch.json 中注入唯一端口:添加 "env": { "METRICS_PORT": "9092" },代码中读取 process.env.METRICS_PORT

更重要的是:不要在 attach 模式下启动指标服务——该模式下 Node.js 已运行,HTTP server 可能无法绑定。只在 launch 模式中初始化。

Prometheus 配置文件里怎么加本地 Node 实例

本地开发时,Prometheus 的 scrape_configs 必须显式指向你的 Node.js 服务,不能依赖服务发现。

用于自动切换项目中适合的node 版本
用于自动切换项目中适合的node 版本

根据 package.json 中的 engines 字段自动检测 Node.js 版本需求,未安装 nvm 时自动安装并切换至对应版本。支持 Windows、macOS、Linux。适用于 Node.js 项目开发、版本切换和环境配置。

下载

编辑 prometheus.yml,在 scrape_configs 下追加:

scrape_configs:
  - job_name: 'node-local'
    static_configs:
      - targets: ['localhost:9091']

关键点:

  • job_name 命名需唯一,避免和 node_exporter 冲突(后者通常叫 node)
  • targets 必须写 localhost,不能写 127.0.0.1 —— VSCode 的 WSL 或容器调试场景下,网络栈可能不认后者
  • 改完配置后要重载 Prometheus:发送 POST http://localhost:9090/-/reload,或重启服务

验证是否生效:打开 http://localhost:9090/targets,状态应为 UP,且标签含 instance="localhost:9091"。

为什么 metrics 页面返回 404 或空内容

常见原因不是路径写错,而是指标未注册或采集逻辑未触发。

检查三件事:

  • 确认 collectDefaultMetrics() 已调用——漏掉这行,register.metrics() 就只有空壳
  • 确认 Node.js 进程没在指标暴露前就退出(比如脚本执行完立即结束);加 console.log('metrics server listening') 和 process.on('exit', ...) 排查生命周期
  • 确认没有其他中间件(如 Express 的 app.use(...))拦截了 /metrics 路径,尤其当你混用 Express 时,必须把指标路由放在所有 app.use 之前

最简验证法:curl 直接请求,别依赖浏览器缓存:curl -v http://localhost:9091/metrics。看到以 # HELP 开头的文本,才算真正就绪。

真正麻烦的不是写几行指标代码,而是让指标在 VSCode 的各种启动模式(launch/attach/remote-WSL)下稳定暴露。端口、进程生命周期、HTTP server 初始化时机,这三个点卡住的人最多。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

vscode node.js node

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
vscode是什么_vscode怎么安装配置
vscode是什么_vscode怎么安装配置

VS Code(Visual Studio Code)是一款免费、开源的跨平台代码编辑器,由微软开发和维护。它被广泛用于软件开发和编程,支持多种编程语言和框架。VS Code 同时提供了丰富的功能和扩展性,使开发者可以高效地编写、编辑和调试代码。

2023.06.30

1495

18

vscode怎么运行代码
vscode怎么运行代码

vscode是一个运行于MacOS X、Windows和Linux之上的,针对于编写现代Web和云应用的跨平台源代码编辑器;vscode免费而且功能强大,对JavaScript和NodeJS的支持非常好,自带很多功能,例如代码格式化,代码智能提示补全、Emmet插件等。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.21

3172

3

vscode使用的框架介绍
vscode使用的框架介绍

VSCode是一款跨平台代码编辑器,它基于Electron框架和Monaco Editor构建。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2024.03.14

2069

12

vscode一般用来写什么语言
vscode一般用来写什么语言

VSCode是一款功能强大的代码编辑器,支持多种编程语言和文件格式。它内置对 JavaScript、Python、Java、C++、TypeScript、HTML/CSS、Go 等语言的支持。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2024.03.14

1747

8

vscode可以写什么语言
vscode可以写什么语言

vscode是一款强大的代码编辑器,支持多种编程语言的开发。通过安装扩展,可以为 JavaScript/TypeScript、Python、Java、C#、PHP、Go、Ruby、Rust、HTML/CSS 等语言提供智能代码补全、调试和格式化等功能。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2024.03.15

2627

12

vscode中文设置方法
vscode中文设置方法

方法一:在设置页面中,搜索“locale”,并选择“zh-cn”。方法二:按“Ctrl Shift P”快捷键,输入“Configure Display Language”,将语言修改为“zh-cn”。如果上述方法无效,可考虑安装中文插件。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2024.03.15

1858

14

vscode用途介绍
vscode用途介绍

Visual Studio Code(VSCode)是一款由 Microsoft 开发的多功能文本编辑器,适用于各种编程语言。作为一款开源软件,VSCode 拥有代码高亮、自动补全、调试、Git 集成等强大功能,成为程序员不可或缺的工具。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2024.03.15

1282

10

vscode和visualstudio的区别
vscode和visualstudio的区别

Visual Studio是一款功能强大的集成开发环境(IDE),适用于专业开发人员进行复杂项目的构建。而VSCode则是一款轻量级的代码编辑器,更适合各种规模的项目开发。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2024.03.15

1136

8

vscode设置中文界面不生效解决方法
vscode设置中文界面不生效解决方法

vscode设置中文界面不生效解决方法:安装中文语言包、通过命令面板设置语言、检查 locale.json 设置、重新安装中文语言包、检查 VSCode 版本和更新、排除插件冲突、检查系统语言设置、查看 VSCode 日志和错误消息、重置 VSCode 设置、查看官方文档和社区支持。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2024.03.15

534

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程