温馨提示×

Nodejs日志Debian如何监控

小樊
42
2026-07-27 13:59:00
栏目: 编程语言

在 Debian 上监控 Node.js 日志,常见做法分为 系统级监控应用级日志管理实时/集中式监控。下面按实用场景给你一个完整方案。


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

1️⃣ Node.js 一般情况

  • 控制台输出:console.log / console.error
  • 文件日志:如 logs/app.log
  • 框架日志:
    • PM2:~/.pm2/logs/
    • NestJS / Express:通常写文件或使用 winston / pino

2️⃣ 查看运行方式

ps aux | grep node

二、基础监控方式(推荐先掌握)

✅ 1. 实时查看日志(tail)

tail -f /var/log/app.log

PM2 日志:

pm2 logs
pm2 logs app-name

✅ 2. systemd 服务日志(推荐生产)

如果 Node.js 是 systemd 服务:

journalctl -u node-app.service -f

查看历史:

journalctl -u node-app.service --since "2025-01-01" --until "2025-01-02"

三、使用 PM2(Node.js 最常用)

安装

npm install -g pm2

启动应用

pm2 start app.js --name my-app

查看日志

pm2 logs my-app
pm2 logs my-app --lines 100

日志管理

pm2 install pm2-logrotate

配置示例:

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

优点

  • 自动重启
  • 日志自动切割
  • 非常适合 Debian 服务器

四、使用 rsyslog / journald(系统级)

1️⃣ 将 Node.js 日志接入系统日志

Node.js 中:

console.log('app: info message');

rsyslog 可解析并分类(高级用法)


2️⃣ journald(systemd)

Node.js 应用以 systemd 启动时,日志自动进入:

journalctl

五、集中式 & 可视化监控(进阶)

✅ 1. ELK / EFK(企业级)

  • Elasticsearch
  • Filebeat(收集 Node 日志)
  • Kibana(可视化)

适合:

  • 多服务
  • 多服务器
  • 需要搜索/报警

✅ 2. Grafana + Loki(轻量推荐)

Node.js → Loki → Grafana

优点:

  • 比 ELK 轻
  • 查询快
  • 易部署

✅ 3. 使用 Winston + 日志级别

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

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

六、监控错误 & 告警(非常重要)

1️⃣ 关键字监控

tail -f app.log | grep -i "error\|exception\|fatal"

2️⃣ 使用 fail2ban / 自定义脚本

  • 检测异常频率
  • 自动告警或重启

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

小型项目

PM2 + pm2-logrotate + tail

中型项目

systemd + journalctl + 告警脚本

大型项目

Winston + PM2 + Loki + Grafana

八、我可以继续帮你

你可以告诉我:

  1. Node.js 是 如何启动的(PM2 / systemd / docker)
  2. 日志是 文件还是 console
  3. 是否需要 告警 / 可视化

我可以直接给你 可复制的配置方案

0