您的位置:首页 >如何监控 Ubuntu 上的 Nodejs 应用
发布于2026-04-30 阅读(0)
扫一扫,手机访问

一个健壮的监控体系,从来不是单一工具就能搞定的。它更像是一个分层防御系统,每一层都解决不同层面的问题。下面这个方案,可以说是生产环境下的标准配置了。
进程管理是运维的第一课。PM2 和 systemd 是两种主流选择,它们各有侧重,掌握其核心用法能让你事半功倍。
sudo npm install pm2 -g;pm2 start app.js --name “my-app”。pm2 status。想要一个实时的资源监控面板?pm2 monit 会给你惊喜。pm2 logs my-app。PM2 会自动帮你管理日志轮转,不用担心日志文件撑爆磁盘。sudo nano /etc/systemd/system/my-app.service。[Unit]
Description=Node.js Application
After=network.target
[Service]
Type=simple
User=
WorkingDirectory=/path/to/your/app
ExecStart=/usr/bin/node /path/to/your/app/app.js
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload;启动服务 sudo systemctl start my-app;最后,用 sudo systemctl status my-app 检查服务状态,这是最常用的命令之一。日志不是简单的 console.log,而应该是结构化的、可追溯的事件流。处理好日志,排障效率能提升一个数量级。
const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
transports: [
new winston.transports.File({ filename: 'error.log', level: 'error' }),
new winston.transports.File({ filename: 'combined.log' })
]
});
logger.info('Application started');
logger.error('An error occurred:', error);
journalctl -u my-app.service -f(那个 -f 参数代表实时跟踪,是排障利器)。tail -f combined.log 命令依然是快速跟踪最新日志的不二法门。可视化仪表盘和主动告警,是监控从“被动查看”走向“主动运维”的关键一步。
/metrics 端点。例如,记录 HTTP 请求延迟的典型做法如下:
const client = require('prom-client');
const httpRequestDuration = new client.Histogram({
name: 'http_request_duration_ms',
help: 'Duration of HTTP requests in ms',
labelNames: ['method', 'route', 'code'],
buckets: [0.1, 5, 15, 50, 100, 200, 300, 400, 500]
});
app.use((req, res, next) => {
const start = Date.now();
res.on('finish', () => {
httpRequestDuration
.labels(req.method, req.route || req.path, res.statusCode)
.observe(Date.now() - start);
});
next();
});
/metrics 端点。最后,在 Grafana 中,你可以利用这些数据构建丰富的仪表盘,并为关键指标(如95分位延迟大于500ms)设置告警规则,通过邮件、Slack等渠道通知你。http://:19999 ,服务器和应用的各项指标尽收眼底。http://:3001 ,即可轻松设置对 HTTP、TCP 端口、甚至心跳包的探测,并支持通过 Telegram、Discord、Slack 等多种方式发送宕机通知。当常规监控发现异常时,就需要这些“外科手术刀”级别的工具进行深度诊断了。
const heapdump = require('heapdump');
heapdump.writeSnapshot('/path/to/snapshot.heapsnapshot');
node --inspect 参数启动应用,它会打开一个调试端口。随后,在 Chrome 浏览器中打开 chrome://inspect,你就可以像调试前端代码一样,使用 DevTools 的 Performance 和 Memory 面板对 Node.js 进程进行 CPU 性能分析和内存堆快照录制,这对分析性能热点和内存问题极具价值。top/htop 看实时进程,vmstat 看系统整体负载,iostat 看磁盘 I/O,free 看内存使用,df 看磁盘空间。综合使用它们,可以快速判断是否是 CPU 饱和、内存不足、I/O 等待或磁盘已满导致的系统级瓶颈。上一篇:福昕PDF编辑器怎么自定义单选框
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9