Ubuntu中Node.js日志如何告警

886
2025/4/9 3:31:54
栏目: 编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

在Ubuntu中配置Node.js日志告警可以通过多种方式实现,以下是一些常见的方法和步骤:

使用PM2进行日志管理和告警

PM2是一个流行的Node.js进程管理器,它不仅可以管理Node.js应用程序的启动、停止和重启,还可以监控应用程序的日志并提供告警功能。

  1. 安装PM2

    sudo apt-get install pm2
    
  2. 启动应用程序

    pm2 start app.js
    
  3. 查看日志: 使用以下命令查看应用程序的日志:

    pm2 logs myapi
    
  4. 设置自动重启: PM2默认会监视应用程序的状态并在发生异常时自动重启。你可以通过以下命令设置重启策略:

    pm2 set pm2hasrestartdelay 1000
    pm2 set pm2restartdelay 1000
    pm2 set pm2maxrestarts 5
    pm2 set pm2memoryrestart 100M
    

使用ELK Stack进行日志收集和分析

ELK Stack(Elasticsearch, Logstash, Kibana)是一个强大的日志收集和分析解决方案。

  1. 安装ELK Stack

    • Elasticsearch

      wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
      sudo apt-get install apt-transport-https
      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-get update && sudo apt-get install elasticsearch
      
    • Logstash

      sudo apt-get install logstash
      
    • Kibana

      sudo apt-get install kibana
      
  2. 配置Logstash: 创建一个名为 logstash.conf 的配置文件,内容如下:

    input {
      file {
        path "/path/to/your/logfile.log"
        start_position "beginning"
      }
    }
    
    filter {
      grok {
        match {
          "message" "%{COMBINEDAPACHELOG}"
        }
      }
      date {
        match [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
      }
    }
    
    output {
      elasticsearch {
        hosts ["localhost:9200"]
      }
      stdout { codec rubydebug }
    }
    

    /path/to/your/logfile.log 替换为你的日志文件路径。

  3. 启动Logstash

    sudo systemctl start logstash@logstash.service
    
  4. 配置Kibana: 编辑 kibana.yml 文件,设置Elasticsearch的URL:

    http.host: "localhost"
    

    启动Kibana:

    sudo systemctl start kibana
    
  5. 使用Kibana进行日志分析和告警: 登录Kibana界面,创建仪表板并设置告警规则。

使用Prometheus和Grafana进行监控和告警

Prometheus和Grafana是强大的监控和可视化工具,可以用于收集和分析Node.js应用程序的指标。

  1. 安装Prometheus和Grafana

    • Prometheus

      sudo apt-get install prometheus
      
    • Grafana

      sudo apt-get install grafana
      
  2. 配置Prometheus: 编辑 prometheus.yml 文件,添加Node.js应用程序的监控配置:

    scrape_configs:
      - job_name: 'nodejs'
        static_configs:
          - targets: ['localhost:9090']
    
  3. 安装Node.js的Prometheus客户端

    npm install prom-client
    
  4. 在Node.js应用程序中集成Prometheus

    const client = require('prom-client');
    const httpRequestDurationMicroseconds = new client.Histogram({
      name: 'http_request_duration_seconds',
      help: 'Duration of HTTP requests in seconds',
      labelnames: ['method', 'route', 'code'],
      buckets: [0.10, 5, 15, 50, 100, 200, 300, 400, 500]
    });
    
    app.use((req, res, next) => {
      const start = Date.now();
      res.on('finish', () => {
        const duration = Date.now() - start;
        httpRequestDurationMicroseconds
          .labels(req.method, req.route, res.statusCode)
          .observe(duration / 1000);
      });
      next();
    });
    
  5. 使用Grafana进行可视化: 将Prometheus数据连接到Grafana并创建自定义仪表板以可视化请求率、延迟和内存使用等指标。

通过以上方法,你可以在Ubuntu中配置Node.js日志的告警功能,确保应用程序的稳定性和高效运行。

辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读: 怎样在Ubuntu中安装Python