温馨提示×

如何监控debian nodejs运行日志

小樊
35
2026-10-04 05:43:20
栏目: 编程语言

在 Debian 上监控 Node.js 运行日志,通常有应用自身日志、系统服务日志、进程管理工具日志几种方式。下面按常见场景给你一套实用方案。


一、最基础:直接看 Node.js 输出日志

如果你是这样启动的:

node app.js

日志会直接输出到终端(stdout/stderr)。

实时查看

node app.js 2>&1 | tee app.log
tail -f app.log

二、使用 PM2(强烈推荐)

1. 安装 PM2

npm install -g pm2

2. 启动应用

pm2 start app.js --name myapp

3. 查看实时日志

pm2 logs
pm2 logs myapp

4. 查看历史日志

pm2 logs myapp --lines 200

PM2 日志默认在:

~/.pm2/logs/

三、使用 systemd(生产环境推荐)

1. 创建服务文件

sudo nano /etc/systemd/system/nodeapp.service

示例:

[Unit]
Description=Node.js App
After=network.target

[Service]
User=www-data
WorkingDirectory=/var/www/myapp
ExecStart=/usr/bin/node /var/www/myapp/app.js
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=nodeapp

[Install]
WantedBy=multi-user.target

2. 启动服务

sudo systemctl daemon-reload
sudo systemctl start nodeapp
sudo systemctl enable nodeapp

3. 查看日志(核心)

journalctl -u nodeapp -f
journalctl -u nodeapp --since "10 min ago"

四、日志文件 + logrotate

如果你自己写日志文件(如 app.log):

示例(Node.js)

const fs = require('fs');
const log = fs.createWriteStream('app.log', { flags: 'a' });
console.log = (msg) => log.write(msg + '\n');

配置 logrotate

sudo nano /etc/logrotate.d/nodeapp
/var/www/myapp/app.log {
  daily
  rotate 7
  compress
  missingok
  notifempty
  copytruncate
}

五、监控 + 告警(进阶)

工具推荐

  • Prometheus + Grafana(指标)
  • ELK / Loki(日志集中)
  • Sentry(错误监控)

六、常见问题排查

Node 进程突然没日志?

  • 是否被 systemd 接管
  • 是否输出到 stderr
  • 是否 pm2 崩了
pm2 list
systemctl status nodeapp

总结建议

场景 推荐方式
本地开发 node app.js + tail -f
生产服务 systemd + journalctl
多进程 PM2
日志集中 Loki / ELK

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

  • Node 版本
  • 启动方式(裸 node / pm2 / docker)
  • 是否服务器部署

我可以给你一套完全适配你环境的监控方案。

0 踩