阅读量:41
使用PM2进行进程管理与监控
PM2是Node.js生态中最流行的进程管理工具之一,提供进程守护、实时监控、日志管理等功能,非常适合Debian环境下的Node.js应用监控。
- 安装PM2:通过npm全局安装,命令为
sudo npm install -g pm2。 - 启动应用:使用
pm2 start app.js --name "my-node-app"启动应用(将app.js替换为你的入口文件,my-node-app为自定义应用名称)。 - 查看状态:通过
pm2 status命令查看所有管理的应用状态,包括CPU、内存使用率、进程ID、运行时间等信息。 - 实时监控:
pm2 monit命令打开实时交互界面,动态显示应用的CPU、内存波动及日志输出;pm2 logs用于查看实时日志,帮助快速定位问题。 - 其他常用命令:
pm2 restart my-node-app重启应用,pm2 stop my-node-app停止应用,pm2 delete my-node-app删除管理。
利用系统工具进行基础监控
Debian自带的系统工具可快速查看Node.js进程的资源占用情况,适合简单监控需求。
- top/htop:
top命令实时显示系统中所有进程的CPU、内存使用率(按P键按CPU排序,M键按内存排序);htop是top的增强版,提供更友好的界面(需安装:sudo apt install htop)。 - ps命令:通过
ps aux | grep node过滤出Node.js进程,查看其PID、CPU占用、内存占用等详细信息。 - vmstat/iostat:
vmstat 1每秒刷新一次系统资源使用情况(包括内存、交换区、IO等);iostat用于监控磁盘IO性能(需安装sysstat包)。
集成Prometheus+Grafana实现高级监控与可视化
若需要更详细的性能指标(如请求延迟、错误率)及可视化 dashboard,可搭建Prometheus+Grafana监控体系。
- 安装Prometheus:下载Debian版Prometheus(如
prometheus_2.34.0.linux-amd64.deb),通过sudo dpkg -i安装;编辑配置文件/etc/prometheus/prometheus.yml,添加Node.js应用的抓取任务(需Node.js应用暴露/metrics端点,可通过prom-client库实现)。 - 配置Node.js应用暴露指标:安装
prom-client库(npm install prom-client),在应用中添加以下代码暴露CPU、内存等指标:const promClient = require('prom-client'); const collectDefaultMetrics = promClient.collectDefaultMetrics; collectDefaultMetrics({ timeout: 5000 }); // 收集默认系统指标 // 自定义业务指标(如请求数) const httpRequestCounter = new promClient.Counter({ name: 'http_requests_total', help: 'Total number of HTTP requests', }); // 在路由中增加计数 app.get('/', (req, res) => { httpRequestCounter.inc(); res.send('Hello World'); }); - 安装Grafana:下载Grafana(如
grafana-8.2.0.linux-amd64.tar.gz),解压后启动(sudo ./bin/grafana-server);通过浏览器访问http://<服务器IP>:3000登录(默认账号admin,密码admin)。 - 配置Grafana数据源与Dashboard:在Grafana中添加Prometheus为数据源(URL为
http://localhost:9090),导入Node.js监控模板(如Grafana官方库中的“Node.js”模板),即可查看CPU、内存、请求延迟等可视化图表。
借助第三方APM工具实现全栈监控
若需要更全面的性能分析(如代码级性能瓶颈、错误追踪、数据库查询分析),可使用New Relic或Datadog等APM工具。
- New Relic:注册New Relic账号,安装
newrelic库(npm install newrelic),在应用入口文件(如app.js)顶部引入require('newrelic');配置newrelic.js文件(包含应用名称、License Key等信息),New Relic会自动收集应用的性能数据并提供可视化 dashboard。 - Datadog:注册Datadog账号,安装
dd-trace库(npm install dd-trace),在应用入口文件中初始化Datadog(const tracer = require('dd-trace').init({ service: 'my-node-app' }));配置Datadog Agent收集数据,即可查看应用的实时性能、错误日志及分布式追踪信息。
编写自定义监控脚本
若需要监控特定业务指标(如订单数量、缓存命中率),可编写自定义脚本定期采集数据并存储(如写入数据库或发送到监控系统)。
- 示例代码:使用
setInterval定期采集内存使用情况,并通过日志或API发送到远程服务器:const process = require('process'); setInterval(() => { const memoryUsage = process.memoryUsage(); const cpuUsage = process.cpuUsage(); const data = { timestamp: new Date().toISOString(), freeMemory: memoryUsage.freemem(), totalMemory: memoryUsage.totalmem(), cpuUser: cpuUsage.user, cpuSystem: cpuUsage.system, }; console.log('Memory and CPU Usage:', data); // 发送数据到远程服务器(如通过HTTP API) // require('axios').post('http://your-monitoring-server/api/data', data); }, 5000); // 每5秒采集一次