插件窝 干货文章 Linux JS日志如何监控

Linux JS日志如何监控

日志 使用 监控 log 490    来源:    2025-05-06

Linux 下 JavaScript 日志监控方案

监控 JavaScript 日志在 Linux 环境中是一个常见的需求,特别是在 Node.js 应用或前端应用部署场景中。以下是几种有效的监控方案:

1. 基础日志监控方案

使用标准输出和日志文件

# 运行 Node.js 应用并将日志输出到文件
node app.js > app.log 2>&1 &

# 实时查看日志
tail -f app.log

使用日志轮转工具

# 使用 logrotate 管理日志文件
sudo nano /etc/logrotate.d/node-app

# 添加以下内容
/path/to/app.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 644 root root
    postrotate
        kill -USR1 `cat /var/run/your-app.pid 2>/dev/null` 2>/dev/null || true
    endscript
}

2. 高级监控工具

使用 PM2 进程管理器

# 安装 PM2
npm install pm2 -g

# 启动应用并记录日志
pm2 start app.js --log /var/log/node-app.log

# 查看实时日志
pm2 logs

# 设置日志轮转
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 30

使用 ELK Stack (Elasticsearch, Logstash, Kibana)

  1. 配置 Node.js 应用使用 Winston 或 Bunyan 等日志库
  2. 设置 Logstash 收集日志
  3. 在 Kibana 中可视化日志数据

3. 实时监控与分析工具

使用 Loki + Grafana

# 使用 docker-compose 部署 Loki
version: "3"

services:
  loki:
    image: grafana/loki:latest
    ports:
      - "3100:3100"
    command: -config.file=/etc/loki/local-config.yaml

  promtail:
    image: grafana/promtail:latest
    volumes:
      - /var/log:/var/log
    command: -config.file=/etc/promtail/config.yml

使用 Filebeat + Elasticsearch

# 安装 Filebeat
sudo apt-get install filebeat

# 配置 Filebeat (/etc/filebeat/filebeat.yml)
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/node-app.log

output.elasticsearch:
  hosts: ["localhost:9200"]

4. 错误监控服务

使用 Sentry

// 在 Node.js 应用中
const Sentry = require('@sentry/node');
Sentry.init({ dsn: 'YOUR_DSN' });

使用 New Relic

// 安装 New Relic
require('newrelic');

5. 自定义监控脚本

#!/bin/bash
# 监控错误日志并发送警报

LOG_FILE="/var/log/node-app.log"
ERROR_PATTERNS=("Error" "Exception" "Unhandled")

tail -Fn0 $LOG_FILE | while read line ; do
  for pattern in "${ERROR_PATTERNS[@]}"; do
    if echo "$line" | grep -q "$pattern"; then
      # 发送警报 (邮件、Slack等)
      echo "$(date) - Error detected: $line" | mail -s "App Error Alert" admin@example.com
      break
    fi
  done
done

选择哪种方案取决于你的具体需求、应用规模和团队资源。对于小型应用,PM2 或基础日志方案可能足够;对于大型分布式系统,ELK 或 Loki+Grafana 可能更合适。