如何通过日志监控 Debian Node.js 运行状态
监控Debian上Node.js应用:配置winston日志库,pm2管理进程与日志,tail实时查看,日志轮转防磁盘爆满,通过Prometheus和Grafana实现多服务器统一监控告警。
监控 Debian 上 Node.js 应用的运行状态,说白了就是得盯住日志。日志是应用的“黑匣子”,一旦出问题,翻翻日志往往就能找到线索。下面这套流程,是我在实践中反复验证过的,从基础配置到高级监控,一步步说清楚。

1. 配置日志记录
先把日志打出来,这是所有监控的地基。Node.js 生态里最常用的日志库是 winston、morgan 和 pino。拿 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' })
]
});
if (process.env.NODE_ENV !== 'production') {
logger.add(new winston.transports.Console({
format: winston.format.simple()
}));
}
这样配置后,错误日志单独存放,普通日志合并记录。开发环境下还能直接打印到控制台,调试起来很方便。
2. 使用 pm2 进行进程管理
说到 Node.js 进程管理,pm2 几乎是标配。它能自动重启、管理日志,省去不少手工操作。安装命令很简单:
sudo npm install pm2 -g
启动应用时,给它起个名字方便后续管理:
pm2 start app.js --name my-app
3. 监控日志
pm2 自带的日志查看功能很顺手,几个常用命令就能搞定日常监控:
- 想一口气看所有应用的日志?直接
pm2 logs - 只看某个特定应用的日志?
pm2 logs my-app - 想实时追踪最近100行?
pm2 logs my-app --lines 100
这三个命令基本覆盖了大多数场景,比手动翻日志文件快得多。
4. 使用 tail 命令实时监控日志文件
如果你更习惯 Linux 原生的方式,tail -f 依然是利器。直接指定日志文件路径即可:
tail -f /path/to/your/logs/combined.log
这样日志一有新行就会自动刷新到终端,适合做实时观察。
5. 设置日志轮转
日志文件如果不加控制,几天就能撑爆磁盘。好在 pm2 内置了日志轮转功能,启动时加上 --log-date-format 参数就能按时间切割文件:
pm2 start app.js --name my-app --log-date-format "YYYY-MM-DD HH:mm Z"
这样每天、每小时甚至每分钟都会生成独立文件,再也不用担心单个日志文件过于庞大。
6. 使用监控工具
如果团队需要对多台服务器做统一监控,那就得上 Prometheus 和 Grafana 这套组合了。它们能收集指标、可视化展示,甚至设置告警。
安装 Prometheus 和 Grafana
在 Debian 上安装很方便:
sudo apt-get update
sudo apt-get install prometheus grafana
配置 Prometheus 抓取 Node.js 应用程序的指标
编辑 Prometheus 的配置文件 /etc/prometheus/prometheus.yml,添加你的 Node.js 应用作为抓取目标:
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['localhost:9090']
启动 Prometheus 和 Grafana
启动服务:
sudo systemctl start prometheus
sudo systemctl start grafana-server
配置 Grafana 数据源
进入 Grafana 界面,添加 Prometheus 为数据源,然后创建仪表盘。你可以把 Node.js 的请求量、错误率、响应时间等指标画成图表,一目了然。
从简单的日志文件到企业级的监控面板,这套流程能覆盖从小白到运维大神的全部需求。核心思路只有一个:让日志“说话”,并且让你第一时间听见。


































