溫馨提示×

Ubuntu Node.js日志與錯誤追蹤系統集成

小樊
38
2025-05-15 08:58:56
欄目: 編程語言

在Ubuntu系統中集成Node.js日志與錯誤追蹤系統,可以幫助你更好地監控和管理你的應用程序。以下是一個基本的步驟指南,介紹如何集成常見的日志和錯誤追蹤系統:

1. 日志系統集成

使用 winston 進行日志管理

winston 是一個流行的Node.js日志庫,可以輕松地集成到你的應用程序中。

  1. 安裝 winston

    npm install winston
    
  2. 配置 winston 創建一個日志配置文件,例如 logger.js

    const { createLogger, format, transports } = require('winston');
    
    const logger = createLogger({
      level: 'info',
      format: format.combine(
        format.timestamp(),
        format.json()
      ),
      transports: [
        new transports.File({ filename: 'error.log', level: 'error' }),
        new transports.File({ filename: 'combined.log' })
      ]
    });
    
    if (process.env.NODE_ENV !== 'production') {
      logger.add(new transports.Console({
        format: format.simple()
      }));
    }
    
    module.exports = logger;
    
  3. 在應用程序中使用 winston

    const logger = require('./logger');
    
    logger.info('Hello, world!');
    logger.error('Something went wrong!');
    

2. 錯誤追蹤系統集成

使用 Sentry 進行錯誤追蹤

Sentry 是一個強大的錯誤追蹤平臺,可以幫助你實時監控和修復應用程序中的錯誤。

  1. 安裝 @sentry/node

    npm install @sentry/node
    
  2. 配置 Sentry 在你的應用程序入口文件(例如 app.js)中添加以下代碼:

    const Sentry = require('@sentry/node');
    const express = require('express');
    const app = express();
    
    Sentry.init({
      dsn: 'YOUR_SENTRY_DSN',
      environment: 'production'
    });
    
    app.use((err, req, res, next) => {
      Sentry.captureException(err);
      res.status(500).send('Something broke!');
    });
    
    app.get('/', (req, res) => {
      throw new Error('Test error');
    });
    
    app.listen(3000, () => {
      console.log('Server is running on port 3000');
    });
    
  3. 部署應用程序 確保在部署應用程序時,環境變量 SENTRY_DSN 已經設置。

3. 監控和報警

使用 PrometheusGrafana 進行監控和報警

Prometheus 是一個開源的監控系統,而 Grafana 是一個可視化工具,可以幫助你更好地理解你的應用程序的性能和健康狀況。

  1. 安裝 prom-client

    npm install prom-client
    
  2. 配置 Prometheus 客戶端 在你的應用程序中添加以下代碼:

    const client = require('prom-client');
    const register = client.register;
    
    const httpRequestDurationMicroseconds = new client.Histogram({
      name: 'http_request_duration_ms',
      help: 'Duration of HTTP requests in ms',
      labelNames: ['method', 'route', 'code'],
      buckets: [0.10, 5, 15, 50, 100, 200, 300, 400, 500]
    });
    
    app.use((req, res, next) => {
      res.locals.startEpoch = Date.now();
      res.on('finish', () => {
        const responseDuration = Date.now() - res.locals.startEpoch;
        httpRequestDurationMicroseconds
          .labels(req.method, req.route.path, res.statusCode)
          .observe(responseDuration);
      });
      next();
    });
    
    app.get('/metrics', async (req, res) => {
      res.set('Content-Type', register.contentType);
      res.end(await register.metrics());
    });
    
  3. 設置 PrometheusGrafana

    • 安裝并配置 Prometheus 服務器。
    • 安裝并配置 Grafana,并添加 Prometheus 作為數據源。
    • 創建儀表盤來監控你的應用程序的性能指標。

通過以上步驟,你可以在Ubuntu系統中集成Node.js日志與錯誤追蹤系統,從而更好地監控和管理你的應用程序。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女