在 Debian 系统上监控 Node.js 应用的日志状态,需结合实时查看、日志管理、告警通知等环节,以下是具体方法及工具推荐:
tail -f:实时监控日志文件
若 Node.js 应用将日志输出到文件(如 logs/app.log),可通过 tail -f 命令实时查看新增内容:
tail -f /path/to/your/logs/app.log
添加 --lines 0 可显示完整日志历史(如 pm2 logs --lines 0)。
grep:过滤关键信息
通过管道结合 grep 过滤特定关键词(如 error),快速定位问题:
tail -f /path/to/app.log | grep 'error'
multitail:多文件并行监控
若需同时监控多个日志文件(如 app.log 和 error.log),可安装 multitail:
sudo apt-get install multitail
multitail /path/to/app.log /path/to/error.log
支持颜色高亮、分屏显示,提升监控效率。
PM2:进程守护与日志聚合
PM2 是 Node.js 生产环境的常用进程管理器,可自动重启崩溃的应用、聚合日志并提供实时查看功能:
sudo npm install pm2 -g
pm2 start app.js --name "my-app"
pm2 logs my-app
pm2-logrotate 模块,设置日志大小限制(如 10MB)和保留天数(如 7 天):pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 7
Systemd:系统级进程管理
若将 Node.js 应用注册为 Systemd 服务(如 /etc/systemd/system/my-app.service),可通过 journalctl 查看系统日志:
sudo systemctl status my-app # 查看服务状态
journalctl -u my-app -f # 实时查看服务日志
需在服务配置中添加 StandardOutput=syslog 和 StandardError=syslog,将日志发送至 Systemd。
Logrotate:日志文件轮转
系统自带的 logrotate 可自动压缩、删除旧日志,避免磁盘空间耗尽。创建配置文件 /etc/logrotate.d/my-app:
/path/to/your/logs/*.log {
daily # 每日轮转
rotate 7 # 保留7天
compress # 压缩旧日志
missingok # 忽略缺失文件
create 0640 root adm # 新日志权限
}
手动测试配置:sudo logrotate -f /etc/logrotate.d/my-app。
ELK Stack(Elasticsearch+Logstash+Kibana):集中式日志管理
适合大规模应用,实现日志的采集、存储、搜索、可视化:
winston 或 bunyan 将日志发送至 Logstash(或直接使用 Filebeat 采集文件日志);Monit:日志内容监控与告警
Monit 可监控日志文件的变化,检测到特定关键词(如 error)时发送邮件或短信告警:
sudo apt-get install monit;/etc/monit/conf.d/my-app):check file my-app-log with path /path/to/app.log
if match "error" then alert admin@example.com
启动 Monit:sudo systemctl start monit。
Prometheus+Grafana:指标监控与可视化
通过 prom-client 库收集 Node.js 应用的性能指标(如请求延迟、内存使用),Grafana 创建 dashboard 展示:
npm install prom-client;const promClient = require('prom-client');
const httpRequestDurationMicroseconds = new promClient.Histogram({
name: 'http_request_duration_ms',
help: 'Duration of HTTP requests in ms',
buckets: [100, 500, 1000]
});
以上方法可根据实际需求组合使用:开发环境可选择 tail -f 或 nodemon 快速调试;生产环境推荐 PM2+Logrotate+ELK/Prometheus+Grafana,实现日志集中管理、实时监控、主动告警的全链路能力。