温馨提示×

Linux怎么监控Nodejs日志

小樊
36
2026-07-07 10:31:11
栏目: 编程语言

在 Linux 上监控 Node.js 日志,常见做法取决于你日志是怎么打的(stdout、文件、第三方库)。下面按实战场景给你一个完整方案,从简单到专业。


一、最基础:直接查看日志

1️⃣ Node.js 输出到 stdout(最常见)

如果你是这样启动的:

node app.js

日志会输出到终端,可直接用:

# 实时查看
tail -f app.log

# 查看最后 100 行
tail -n 100 app.log

✅ 适用于:

  • 本地开发
  • 简单服务

二、Node.js 日志文件监控(生产常用)

2️⃣ 使用 PM2(强烈推荐)

安装

npm install -g pm2

启动

pm2 start app.js --name my-node

查看日志

# 实时查看所有日志
pm2 logs

# 查看指定应用
pm2 logs my-node

# 查看错误日志
pm2 logs my-node --err

# 查看最近 100 行
pm2 logs my-node --lines 100

✅ 优点:

  • 自动管理日志
  • 崩溃重启
  • 日志文件在 ~/.pm2/logs/

3️⃣ 使用 tail / less 监控日志文件

如果 Node.js 输出到文件:

const fs = require('fs');
fs.writeFileSync('app.log', 'log...\n', { flag: 'a' });

监控:

tail -f app.log

搜索错误:

grep -i error app.log

三、结构化日志(推荐生产)

4️⃣ 使用 Winston / Pino

Winston 示例

npm install winston
const winston = require('winston');

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

logger.info('server start');
logger.error('db error');

监控:

tail -f combined.log

四、实时分析 & 报警(进阶)

5️⃣ 使用 journalctl(systemd)

如果 Node.js 是 systemd 服务:

journalctl -u node-app -f

查看错误:

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

✅ 适合:

  • 服务器长期运行
  • 自动重启

五、专业日志系统(企业级)

6️⃣ ELK / Grafana Loki

工具 作用
Filebeat 收集日志
Elasticsearch 存储 & 搜索
Kibana 可视化
Loki + Promtail 轻量日志系统

✅ 适合:

  • 微服务
  • 高并发
  • 需要检索 & 报警

六、常用监控命令总结

top                 # 看 CPU / 内存
htop                # 更友好
ps aux | grep node
lsof -i :3000
tail -f app.log
grep ERROR app.log

七、推荐组合(最佳实践)

生产环境推荐

PM2 + Winston + tail / journalctl

大型系统

PM2 + Loki + Grafana

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

  • ✅ Node 是怎么启动的(pm2 / docker / systemd)
  • ✅ 日志是 stdout 还是文件
  • ✅ 服务器规模(单机 / 集群)

我可以直接给你一套最适合你的监控方案

0