作为IT工程师,在Linux环境下监控Node.js应用日志是确保应用稳定运行的重要环节。以下是几种高效的日志监控解决方案:
bash
tail -f /var/log/node-app.log | grep "ERROR"
bash
journalctl -u node-app -f
bash
sudo nano /etc/logrotate.d/node-app
# 安装PM2
npm install pm2 -g
# 启动应用并监控
pm2 start app.js --log /var/log/node-app.log
# 查看日志
pm2 logs
javascript
const winston = require('winston');
const logger = winston.createLogger({
transports: [
new winston.transports.File({ filename: '/var/log/node-app.log' })
]
});
# 安装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
const AWS = require('aws-sdk');
const cw = new AWS.CloudWatchLogs();
// 配置Winston输出到CloudWatch
const winston = require('winston');
const { CloudWatchTransport } = require('winston-aws-cloudwatch');
# 安装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)"
const Sentry = require('@sentry/node');
Sentry.init({ dsn: 'your_dsn_here' });
# 结合PM2和PagerDuty
pm2 install pm2-slack
pm2 set pm2-slack:slack_url https://hooks.pagerduty.com/...
# 使用PM2管理 + Winston记录 + ELK分析 + Sentry告警
npm install pm2 winston @sentry/node
根据您的具体需求(开发环境/生产环境、团队规模、预算等),可以选择适合的日志监控组合方案。对于中小型项目,PM2 + Winston + Sentry的组合通常能提供良好的监控效果。