温馨提示×

debian如何监控nodejs日志

小樊
36
2026-10-21 18:40:22
栏目: 编程语言

在 Debian 上监控 Node.js 日志,常见做法分为 “日志来源管理” 和 “监控方式” 两方面。下面按实用程度给你一套方案。


一、先确认 Node.js 日志在哪里

1. 自己写的日志

常见方式:

  • console.log / console.error
  • 日志库:winston、pino、bunyan

建议:不要只依赖 console,生产环境用日志库写到文件或 syslog。

2. 使用 PM2(最常见)

如果用 PM2 启动:

pm2 logs
pm2 logs app-name

日志默认在:

~/.pm2/logs/

二、基础实时监控(命令行)

1. tail 实时查看

tail -f /var/log/node/app.log

2. 多日志同时看

multitail /var/log/node/app.log /var/log/node/error.log

安装:

sudo apt install multitail

3. 关键字报警

tail -f app.log | grep --line-buffered ERROR

三、系统级日志(推荐生产用)

使用 systemd(最规范)

如果你用 systemd 管理 Node.js:

service 文件示例

[Unit]
Description=Node.js App

[Service]
ExecStart=/usr/bin/node /opt/app/index.js
WorkingDirectory=/opt/app
User=node
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=node-app
Restart=always

[Install]
WantedBy=multi-user.target

查看日志:

journalctl -u node-app -f
journalctl -u node-app -p err

四、日志集中 & 高级监控

1. 文件 + logrotate

防止日志爆炸:

sudo apt install logrotate

示例 /etc/logrotate.d/node-app:

/var/log/node/*.log {
  daily
  rotate 7
  compress
  missingok
  notifempty
}

2. 实时监控工具

(1)lnav(超好用)

sudo apt install lnav
lnav /var/log/node/

支持错误高亮、SQL 查询日志。

(2)Prometheus + Node Exporter(指标级)

  • 不适合“看日志”
  • 适合监控 CPU / 内存 / 进程状态

3. 日志平台(生产推荐)

  • ELK / EFK(Elasticsearch + Filebeat)
  • Loki + Grafana
  • Graylog

Node.js → 文件 → Filebeat → 平台


五、Node.js 代码层建议

Winston 示例

const winston = require('winston');

const logger = winston.createLogger({
  transports: [
    new winston.transports.File({ filename: '/var/log/node/app.log' }),
    new winston.transports.File({
      filename: '/var/log/node/error.log',
      level: 'error'
    })
  ]
});

六、推荐组合(直接抄)

开发环境

pm2 logs

生产环境(最稳)

  • systemd
  • 日志写文件
  • logrotate
  • journalctl / lnav
  • 可选:Loki + Grafana

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

  • 你是否用 PM2 / Docker / systemd
  • 是 开发调试 还是 生产监控

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

0 踩