温馨提示×

如何监控Debian服务器JS日志

小樊
51
2025-10-26 20:25:47
栏目: 云计算

1. 基础命令行工具:实时查看与过滤
在Debian服务器上,可通过命令行快速监控JS日志(适用于临时排查或简单场景):

  • tail -f:实时追踪日志文件更新,例如tail -f /var/log/syslog(系统日志)或tail -f /path/to/your/app.log(应用自定义日志),按Ctrl+C停止。
  • grep:筛选特定关键词(如“error”“warning”),例如tail -f app.log | grep 'error',仅显示包含该关键词的日志条目。
  • less/more:分页查看日志文件,适合查看历史日志,例如less /path/to/your/app.log,按空格翻页、q退出。

2. 进程管理器:集成日志管理与监控
使用PM2(Node.js常用进程管理器)可简化日志收集、轮转及实时查看:

  • 安装与启动:全局安装PM2后,启动应用并命名(便于后续管理),例如pm2 start app.js --name my-js-app
  • 查看日志:通过pm2 logs命令实时查看所有应用的日志;若需查看特定应用,使用pm2 logs my-js-app;还可限制行数(如pm2 logs my-js-app --lines 100)或跟随日志(pm2 logs my-js-app -f)。
  • 日志轮转:PM2内置日志轮转功能,可通过pm2 set pm2:log_rotate true开启,默认保留7天日志,避免日志文件过大。

3. 日志库:结构化与精细化日志管理
在JS代码中集成日志库(如Winston、Bunyan),可实现日志分级、格式化及多传输(文件、控制台、数据库等):

  • Winston示例:安装npm install winston,配置JSON格式日志及分级存储(错误日志单独保存),例如:
    const winston = require('winston');
    const logger = winston.createLogger({
      level: 'info',
      format: winston.format.json(),
      transports: [
        new winston.transports.Console(),
        new winston.transports.File({ filename: 'error.log', level: 'error' }),
        new winston.transports.File({ filename: 'combined.log' })
      ]
    });
    logger.info('Application started');
    logger.error('Database connection failed');
    
  • Bunyan示例:安装npm install bunyan,生成结构化JSON日志,便于后续分析,例如:
    const bunyan = require('bunyan');
    const logger = bunyan.createLogger({ name: 'my-js-app' });
    logger.info('Request received', { method: 'GET', url: '/api' });
    
    这些日志库可提升日志的可读性与可分析性,适合生产环境。

4. 集中式日志管理:ELK Stack(Elasticsearch+Logstash+Kibana)
对于大规模或分布式JS应用,可使用ELK Stack实现日志的集中收集、存储、搜索及可视化:

  • 安装ELK:在Debian上依次安装Elasticsearch(sudo apt install elasticsearch)、Logstash(sudo apt install logstash)、Kibana(sudo apt install kibana),并启动服务(systemctl start elasticsearch等)。
  • 配置Logstash:创建/etc/logstash/conf.d/nodejs.conf文件,定义日志输入(如Node.js应用的app.log文件)、过滤(可选)及输出(Elasticsearch),例如:
    input {
      file {
        path => "/path/to/your/nodejs/app.log"
        start_position => "beginning"
      }
    }
    output {
      elasticsearch {
        hosts => ["localhost:9200"]
        index => "nodejs-logs-%{+YYYY.MM.dd}"
      }
    }
    
  • 查看日志:启动Logstash后,访问Kibana(http://your-debian-ip:5601),创建索引模式(如nodejs-logs-*),通过Discover界面实时查看、搜索及分析日志。

5. 系统日志集成:rsyslog/syslog-ng
将JS应用日志发送到系统日志服务(rsyslog/syslog-ng),统一管理所有系统与服务日志:

  • 配置应用日志:修改JS应用代码,将日志输出到syslog(如Winston配置transports: [new winston.transports.Syslog({ host: 'localhost', port: 514 })]),或通过命令行重定向(如node app.js >> /var/log/syslog 2>&1)。
  • 查看系统日志:使用journalctl(systemd工具)查看JS应用日志(若应用以systemd服务运行),例如journalctl -u my-js-app -f(实时查看)或journalctl -u my-js-app --since "1 hour ago"(查看过去1小时日志)。

0