插件窝 干货文章 Linux环境下Node.js日志监控工具

Linux环境下Node.js日志监控工具

日志 Winston 监控 Node 528    来源:    2025-05-04

Linux环境下Node.js日志监控工具指南

作为IT工程师,在Linux环境下监控Node.js应用日志是确保应用稳定运行的重要环节。以下是几种高效的日志监控解决方案:

1. 基础工具

1.1 系统自带工具

  • tail/grep:简单快速查看日志 bash tail -f /var/log/node-app.log | grep "ERROR"
  • journalctl:查看systemd管理的服务日志 bash journalctl -u node-app -f

1.2 日志轮转工具

  • logrotate:自动轮转日志文件防止过大 bash sudo nano /etc/logrotate.d/node-app

2. 专业日志监控工具

2.1 PM2内置监控

# 安装PM2
npm install pm2 -g

# 启动应用并监控
pm2 start app.js --log /var/log/node-app.log

# 查看日志
pm2 logs

2.2 Winston + ELK Stack

  • Winston:Node.js日志库 javascript const winston = require('winston'); const logger = winston.createLogger({ transports: [ new winston.transports.File({ filename: '/var/log/node-app.log' }) ] });
  • ELK Stack (Elasticsearch + Logstash + Kibana)
    • 配置Logstash收集Node.js日志
    • 使用Kibana进行可视化分析

2.3 Grafana + Loki

# 安装Loki日志收集器
docker run -d --name=loki -p 3100:3100 grafana/loki:latest

# 安装Promtail日志代理
docker run -d --name=promtail -v /var/log:/var/log grafana/promtail:latest -config.file=/etc/promtail/config.yml

3. 云服务方案

3.1 AWS CloudWatch

const AWS = require('aws-sdk');
const cw = new AWS.CloudWatchLogs();

// 配置Winston输出到CloudWatch
const winston = require('winston');
const { CloudWatchTransport } = require('winston-aws-cloudwatch');

3.2 Datadog

# 安装Datadog Agent
DD_API_KEY=your_api_key bash -c "$(curl -L https://raw.githubusercontent.com/DataDog/datadog-agent/master/cmd/agent/install_script.sh)"

4. 异常告警方案

4.1 Sentry

const Sentry = require('@sentry/node');
Sentry.init({ dsn: 'your_dsn_here' });

4.2 PagerDuty

# 结合PM2和PagerDuty
pm2 install pm2-slack
pm2 set pm2-slack:slack_url https://hooks.pagerduty.com/...

5. 最佳实践建议

  1. 日志分级:合理使用error、warn、info、debug等级别
  2. 结构化日志:输出JSON格式日志便于解析
  3. 敏感信息过滤:避免记录密码等敏感信息
  4. 性能考虑:异步日志记录避免阻塞主线程
  5. 日志保留策略:设置合理的日志保留周期

6. 综合方案示例

# 使用PM2管理 + Winston记录 + ELK分析 + Sentry告警
npm install pm2 winston @sentry/node

根据您的具体需求(开发环境/生产环境、团队规模、预算等),可以选择适合的日志监控组合方案。对于中小型项目,PM2 + Winston + Sentry的组合通常能提供良好的监控效果。