温馨提示×

ubuntu怎么监控nodejs日志

小樊
38
2026-09-30 16:01:41
栏目: 编程语言

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


一、Node.js 日志通常来自哪里?

  1. 控制台输出
    console.log / console.error
    
  2. 文件日志
    fs.writeFile / winston / pino
    
  3. 进程管理工具
    • PM2
    • systemd
    • Docker

二、最常用:实时查看日志(tail)

1. 查看文件日志

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

2. 查看 PM2 日志

pm2 logs
pm2 logs app-name

3. 查看 systemd 日志

journalctl -u node-app.service -f

三、使用 PM2(强烈推荐)

安装

npm install -g pm2

启动

pm2 start app.js --name node-app

日志位置

~/.pm2/logs/node-app-out.log
~/.pm2/logs/node-app-error.log

日志管理

pm2 flush        # 清空日志
pm2 reload all  # 热重启

✅ 优点:自动重启、日志分割、方便监控


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

示例 service 文件

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

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

[Install]
WantedBy=multi-user.target

查看日志

journalctl -u node-app -f

五、日志分割(防止爆盘)

使用 logrotate

sudo nano /etc/logrotate.d/node-app

示例:

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

六、高级监控方案

1. 日志库(代码层)

  • winston
  • pino(性能最好)
const winston = require('winston');

2. 集中式日志

  • ELK(Elasticsearch + Logstash + Kibana)
  • Grafana Loki
  • Fluentd

3. 告警

  • 错误日志 → 邮件 / 钉钉 / 飞书
  • 使用 pm2 notify

七、简单监控脚本示例

#!/bin/bash
tail -F /var/log/node/app.log | while read line
do
  echo "$line" | grep "ERROR" && echo "报警" 
done

推荐组合(新手 → 生产)

场景 推荐
本地开发 tail -f
小项目 PM2
生产 systemd + logrotate
大型 PM2 + ELK

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

  • 你是 开发 / 测试 / 生产
  • 用 PM2 / Docker / 原生 node
  • 想监控 错误 / 性能 / 实时

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

0 踩