温馨提示×

Ubuntu Nodejs日志如何监控

小樊
35
2026-08-05 10:15:41
栏目: 编程语言

在 Ubuntu 上监控 Node.js 日志,常见做法分为 系统级日志、应用级日志、实时查看、集中化管理 等几个层面。下面按实用程度给你一个完整方案。


一、Node.js 应用日志从哪里来?

1️⃣ 常见日志来源

  • console.log / console.error
  • 日志库(推荐)
    • winston
    • pino
    • bunyan
  • 进程管理器日志
    • pm2 logs
  • 系统服务日志
    • systemd
  • Web 服务器日志
    • Nginx / Apache

二、最常用:实时查看 Node.js 日志

✅ 方式 1:PM2(强烈推荐)

如果你用 PM2 管理 Node.js:

pm2 logs
pm2 logs app-name
pm2 logs --lines 100

查看错误日志:

pm2 logs --err

日志默认位置:

~/.pm2/logs/

优点

  • 自动日志切割
  • 支持 JSON / 时间戳
  • 生产环境首选

✅ 方式 2:直接 tail 日志文件

如果你把日志写入文件:

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

只查看错误:

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

三、使用 systemd 管理 Node.js(服务器级)

1️⃣ 查看服务日志

journalctl -u node-app -f

查看最近 100 行:

journalctl -u node-app -n 100

2️⃣ Node.js 应用示例

console.log('server start');

会被 systemd 捕获。


四、Node.js 应用内日志最佳实践

✅ 使用 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('Server started');
logger.error('DB connection failed');

查看日志:

tail -f combined.log

五、Docker 场景(如果你用容器)

docker logs -f container_id

或:

docker logs --tail 100 container_id

六、集中化日志监控(生产环境)

✅ 方案 1:ELK / EFK

  • Elasticsearch + Logstash + Kibana
  • Fluentd + Elasticsearch + Kibana

适合:

  • 多服务
  • 微服务
  • 高并发

✅ 方案 2:轻量级监控

  • Grafana + Loki
  • Prometheus(偏指标)

七、错误 & 异常监控(比日志更高级)

✅ Sentry(强烈推荐)

npm install @sentry/node
Sentry.init({ dsn: 'https://...' });

✅ 能捕获:

  • 未捕获异常
  • Promise 错误
  • 请求上下文

八、常见排错命令速查表

场景 命令
实时查看日志 tail -f app.log
PM2 日志 pm2 logs
systemd 日志 journalctl -u service -f
查看端口 ss -lntp
CPU / 内存 htop

九、推荐组合(生产环境)

最佳方案

PM2 + Winston + Sentry + 日志文件

进阶

PM2 + Loki + Grafana

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

  • ✅ 是否使用 PM2 / Docker / systemd
  • ✅ 单机还是多台服务器
  • ✅ 日志主要用于 排错 / 审计 / 监控

我可以帮你定制一套 最适合你场景的 Node.js 日志监控方案

0