温馨提示×

怎么监控Ubuntu Nodejs日志

小樊
49
2026-07-21 19:28:37
栏目: 编程语言

监控 Ubuntu 上的 Node.js 日志,常见做法取决于日志产生方式部署方式。下面按从简单到专业给你一套完整方案,你可以按场景选择。


一、最简单:直接查看 Node.js 控制台日志

1️⃣ 前台运行(开发环境)

node app.js

日志直接输出到终端。

实时查看:

Ctrl + C 停止

2️⃣ 后台运行(PM2 / nohup)

使用 nohup

nohup node app.js > app.log 2>&1 &

查看实时日志:

tail -f app.log

二、推荐方案 ✅:使用 PM2(生产环境首选)

1️⃣ 安装 PM2

npm install -g pm2

2️⃣ 启动应用

pm2 start app.js --name my-app

3️⃣ 查看日志(核心)

# 实时查看所有日志
pm2 logs

# 只看某个应用
pm2 logs my-app

# 只看错误日志
pm2 logs my-app --err

# 只看普通日志
pm2 logs my-app --out

4️⃣ 日志位置

~/.pm2/logs/

5️⃣ 日志大小与轮转(非常重要)

pm2 install pm2-logrotate

配置示例:

pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 7

三、Docker 部署场景

1️⃣ 查看容器日志

docker logs -f 容器ID

2️⃣ Node.js 日志写入 stdout

✅ 最佳实践:

console.log()
console.error()

Docker 会自动收集。


四、Node.js 自身日志方案(代码级)

1️⃣ 使用 winston(最常用)

npm install winston

示例:

const winston = require('winston');

const logger = winston.createLogger({
  level: 'info',
  format: winston.format.json(),
  transports: [
    new winston.transports.File({ filename: 'error.log', level: 'error' }),
    new winston.transports.File({ filename: 'combined.log' })
  ]
});

logger.info('服务启动');
logger.error('出错');

监控:

tail -f combined.log

五、系统级监控(Ubuntu)

1️⃣ journald(systemd 服务)

如果 Node.js 是 systemd 服务:

journalctl -u node-app.service -f

2️⃣ 文件监听(通用)

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

六、集中式日志(进阶)

适合多台服务器 / 微服务:

工具 说明
ELK(Elasticsearch + Logstash + Kibana) 企业级
Loki + Grafana 轻量
Fluent Bit 低资源
Datadog / New Relic 商业

七、推荐组合(直接照抄)

生产环境最佳实践

PM2 + pm2-logrotate + winston

Docker 环境

stdout + docker logs + 可选 Loki

八、你可以告诉我这些,我可以给你定制方案 ✅

  1. Node.js 是否用 PM2?
  2. 是否 Docker?
  3. 单台服务器还是多台?
  4. 日志用于排查错误还是统计?

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

0