在 Linux 上监控 Node.js 日志,常见做法可以分为 “日志采集 + 实时查看 + 长期存储 + 告警” 四个层次。下面从简单到专业,给你一套可落地的方案。
ps -ef | grep node
如果你是这样启动的:
node app.js > app.log 2>&1
实时查看日志:
tail -f app.log
或者:
less +F app.log
npm install -g pm2
pm2 start app.js --name my-app
pm2 logs
pm2 logs my-app
pm2 logs --lines 100
pm2 logs my-app --tail
~/.pm2/logs/
✅ 优点
console.log推荐使用日志库:
| 库 | 说明 |
|---|---|
| winston | 最常用 |
| pino | 高性能 |
| log4js | 类似 Java log4j |
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('数据库连接失败');
journalctl(systemd)如果你用 systemd 管理 Node 服务:
journalctl -u node-app.service -f
rsyslog将 Node 日志写入 /var/log/node/
Node.js
↓
日志文件 / stdout
↓
Filebeat / Fluentd
↓
Elasticsearch
↓
Kibana
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/node/*.log
| 工具 | 用途 |
|---|---|
| Prometheus + Grafana | 指标监控 |
| Alertmanager | 告警 |
| Sentry | JS 错误监控 |
| Zabbix | 系统日志 |
npm install @sentry/node
const Sentry = require('@sentry/node');
Sentry.init({ dsn: 'https://xxx@sentry.io/xxx' });
✅ Node.js
winston / pino✅ Linux
pm2 install pm2-logrotate)✅ 监控
tail -f / pm2 logs你可以告诉我:
我可以直接给你一套 可复制的配置方案。