温馨提示×

如何配置Debian上的JS日志分析工具

小樊
47
2025-10-09 22:10:45
栏目: 编程语言

一、前置准备:安装必要工具 在Debian上配置JS日志分析工具前,需先安装基础工具和依赖:

  • Node.js与npm:用于运行JS应用及日志库(如Winston)。通过curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -添加NodeSource仓库,再执行sudo apt install -y nodejs安装。
  • 日志库:推荐使用Winston(功能全面)或Pino(高性能)。以Winston为例,通过npm install winston安装,配置文件示例:
    const winston = require('winston');
    const logger = winston.createLogger({
      level: 'info',
      format: winston.format.json(), // 结构化日志(便于后续分析)
      transports: [
        new winston.transports.File({ filename: '/var/log/my-js-app/error.log', level: 'error' }),
        new winston.transports.File({ filename: '/var/log/my-js-app/combined.log' })
      ]
    });
    module.exports = logger;
    ```。  
    
    

二、收集与存储日志

  • 进程管理工具:使用PM2管理JS应用进程,自动重启并记录日志。安装PM2:sudo npm install -g pm2;启动应用并指定日志路径:pm2 start app.js --name my-js-app --out /var/log/my-js-app/out.log --err /var/log/my-js-app/err.log;保存进程列表以实现开机自启:pm2 save
  • 日志轮转:通过logrotate防止日志文件过大。创建配置文件/etc/logrotate.d/my-js-app,内容如下:
    /var/log/my-js-app/*.log {
      daily
      missingok
      rotate 7
      compress
      notifempty
      create 0640 root adm
    }
    ```(每日轮转、保留7天、压缩旧日志)。  
    
    

三、使用ELK Stack进行高级分析与可视化 ELK(Elasticsearch+Logstash+Kibana)是Debian上常用的JS日志分析解决方案,步骤如下:

  • 安装ELK组件
    • Elasticsearch:添加Elastic官方仓库(wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list),执行sudo apt install elasticsearch,启动服务:sudo systemctl start elasticsearch并设置开机自启。
    • Kibana:通过sudo apt install kibana安装,启动服务:sudo systemctl start kibana,默认通过http://your-server-ip:5601访问。
    • Logstash:通过sudo apt install logstash安装,创建配置文件/etc/logstash/conf.d/js-logs.conf,内容如下:
      input {
        file {
          path => "/var/log/my-js-app/*.log" # 日志文件路径
          start_position => "beginning"     # 从文件开头读取(首次运行)
        }
      }
      filter {
        grok { # 解析日志格式(根据实际日志调整)
          match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:loglevel} %{GREEDYDATA:message}" }
        }
        date { # 转换时间戳格式
          match => [ "timestamp", "ISO8601" ]
        }
      }
      output {
        elasticsearch { # 发送数据到Elasticsearch
          hosts => ["localhost:9200"]
          index => "js-logs-%{+YYYY.MM.dd}" # 按日期分索引
        }
      }
      ```;重启Logstash:`sudo systemctl restart logstash`。  
      
  • 配置Kibana
    1. 访问http://your-server-ip:5601,进入“Management”→“Stack Management”→“Index Patterns”,点击“Create index pattern”,输入js-logs-*(匹配Logstash输出的索引),选择时间字段(如timestamp),完成创建。
    2. 进入“Discover”界面,选择刚创建的索引模式,即可搜索(如loglevel: "error")、过滤(如timestamp >= "now-1d/d")和可视化日志数据(如通过“Visualize”创建错误数量趋势图)。

四、基础命令行分析(可选) 若无需复杂可视化,可使用以下命令行工具快速分析日志:

  • grep:搜索特定关键字(如错误日志):grep "ERROR" /var/log/my-js-app/combined.log
  • awk:提取并统计字段(如统计错误数量):awk '/ERROR/ {count++} END {print "Error count:", count}' /var/log/my-js-app/combined.log
  • sed:替换或清理日志内容(如将“error”替换为“warning”):sed 's/error/warning/g' /var/log/my-js-app/combined.log

0