ubuntu

Ubuntu Node.js日志与错误追踪系统集成

小樊
31
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
看了该问题的人还看了