温馨提示×

如何监控ubuntu nodejs日志

小樊
34
2026-10-18 05:35:32
栏目: 编程语言

在 Ubuntu 上监控 Node.js 日志,常见做法分为 应用自身日志管理、系统级日志(systemd / journalctl)、以及 实时监控工具 三类。下面按实用程度给你一套完整方案。


一、Node.js 应用层日志(最基础)

1. 使用日志库(推荐)

不要只用 console.log,建议用成熟日志库:

  • winston
  • pino(性能最好,适合生产)
  • bunyan

示例(pino):

const pino = require('pino');
const logger = pino({ level: 'info' });

logger.info('server started');

日志可输出到:

  • 控制台
  • 文件(/var/log/node-app/app.log)
  • 结合 systemd

二、用 systemd 管理 Node.js(强烈推荐)

1. 创建 service 文件

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

2. 启动并启用

sudo systemctl daemon-reload
sudo systemctl start node-app
sudo systemctl enable node-app

三、使用 journalctl 监控日志(Ubuntu 标配)

1. 实时查看日志

journalctl -u node-app -f

2. 查看最近 100 行

journalctl -u node-app -n 100

3. 按时间查看

journalctl -u node-app --since "10 min ago"

✅ 优点:

  • 自动轮转
  • 不丢日志
  • 不需要自己管 log 文件

四、直接 tail 日志文件(如果你写文件)

如果你把日志写到文件:

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
}

五、高级监控方案(生产环境)

1. PM2(非常适合 Node.js)

npm install -g pm2
pm2 start index.js
pm2 logs
pm2 monit

PM2 自带:

  • 日志管理
  • 进程守护
  • 重启策略

2. 集中式日志(进阶)

  • ELK(Elasticsearch + Logstash + Kibana)
  • Loki + Grafana
  • Fluent Bit

适合多台服务器、微服务架构。


六、常见排查命令汇总

# 看 Node 进程
ps aux | grep node

# 看端口
sudo netstat -tulnp | grep node

# 看系统资源
htop

推荐组合(实用)

✅ 开发:pm2 + pm2 logs
✅ 生产:systemd + journalctl + pino
✅ 大规模:systemd + Loki/Grafana

如果你愿意,可以告诉我:

  • 你是 开发 / 测试 / 生产
  • 是否用 Docker
  • 是否已有 PM2 或 systemd

我可以直接给你一套定制配置。

0 踩