在 Ubuntu 上监控 Node.js 日志,常见做法分为 应用自身日志管理、系统级日志(systemd / journalctl)、以及 实时监控工具 三类。下面按实用程度给你一套完整方案。
不要只用 console.log,建议用成熟日志库:
示例(pino):
const pino = require('pino');
const logger = pino({ level: 'info' });
logger.info('server started');
日志可输出到:
/var/log/node-app/app.log)sudo vim /etc/systemd/system/node-app.service
示例:
[Unit]
Description=Node.js App
After=network.target
[Service]
User=ubuntu
WorkingDirectory=/var/www/node-app
ExecStart=/usr/bin/node index.js
Restart=always
StandardOutput=journal
StandardError=journal
SyslogIdentifier=node-app
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start node-app
sudo systemctl enable node-app
journalctl -u node-app -f
journalctl -u node-app -n 100
journalctl -u node-app --since "10 min ago"
✅ 优点:
如果你把日志写到文件:
tail -f /var/log/node-app/app.log
配合 logrotate 防止文件过大:
sudo vim /etc/logrotate.d/node-app
示例:
/var/log/node-app/*.log {
daily
rotate 7
compress
missingok
notifempty
}
npm install -g pm2
pm2 start index.js
pm2 logs
pm2 monit
PM2 自带:
适合多台服务器、微服务架构。
# 看 Node 进程
ps aux | grep node
# 看端口
sudo netstat -tulnp | grep node
# 看系统资源
htop
✅ 开发:pm2 + pm2 logs
✅ 生产:systemd + journalctl + pino
✅ 大规模:systemd + Loki/Grafana
如果你愿意,可以告诉我:
我可以直接给你一套定制配置。