温馨提示×

如何监控Linux Nodejs日志

小樊
42
2026-08-29 01:08:22
栏目: 编程语言

在 Linux 上监控 Node.js 日志,常见做法可以分为 “日志采集 + 实时查看 + 长期存储 + 告警” 四个层次。下面从简单到专业,给你一套可落地的方案。


一、最基础:直接查看 Node.js 日志

1️⃣ 查看正在运行的 Node 进程

ps -ef | grep node

2️⃣ 查看标准输出 / 标准错误

如果你是这样启动的:

node app.js > app.log 2>&1

实时查看日志:

tail -f app.log

或者:

less +F app.log

二、使用 PM2(强烈推荐,生产常用)

1️⃣ 安装 PM2

npm install -g pm2

2️⃣ 启动应用

pm2 start app.js --name my-app

3️⃣ 查看日志

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

4️⃣ 实时监听日志

pm2 logs my-app --tail

5️⃣ 日志默认位置

~/.pm2/logs/

优点

  • 自动管理 stdout / stderr
  • 自动重启
  • 日志文件自动生成

三、Node.js 内部日志规范(非常重要)

✅ 不要在代码里 console.log

推荐使用日志库:

常用日志库

说明
winston 最常用
pino 高性能
log4js 类似 Java log4j

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('服务启动');
logger.error('数据库连接失败');

四、Linux 系统级日志监控

1️⃣ 使用 journalctl(systemd)

如果你用 systemd 管理 Node 服务:

journalctl -u node-app.service -f

2️⃣ 使用 rsyslog

将 Node 日志写入 /var/log/node/


五、专业级:ELK / EFK 日志监控(生产环境)

架构

Node.js
  ↓
日志文件 / stdout
  ↓
Filebeat / Fluentd
  ↓
Elasticsearch
  ↓
Kibana

常用组合

✅ ELK

  • Elasticsearch
  • Logstash
  • Kibana

✅ EFK

  • Elasticsearch
  • Fluentd
  • Kibana

示例:Filebeat 采集 Node 日志

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/node/*.log

六、日志监控 & 告警

常见工具

工具 用途
Prometheus + Grafana 指标监控
Alertmanager 告警
Sentry JS 错误监控
Zabbix 系统日志

Sentry 示例(Node.js)

npm install @sentry/node
const Sentry = require('@sentry/node');
Sentry.init({ dsn: 'https://xxx@sentry.io/xxx' });

七、推荐生产最佳实践 ✅

Node.js

  • 使用 winston / pino
  • 输出 JSON 格式日志
  • error / warn / info 分级

Linux

  • 使用 PM2 或 systemd
  • 日志集中存储
  • 日志按天切割(pm2 install pm2-logrotate

监控

  • 实时:tail -f / pm2 logs
  • 长期:ELK / EFK
  • 告警:Sentry / Prometheus

八、我可以继续帮你做的事

你可以告诉我:

  1. ✅ 是 开发环境还是生产环境
  2. ✅ 是否使用 Docker / K8s
  3. ✅ 是否已有 PM2 / systemd
  4. ✅ 日志量大概多少(MB / 天)

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

0