文档中心

探索 DWeb 框架的无限可能,构建下一代高性能 Web 应用

性能监控 (monitoring)

DWeb 框架提供了完整的性能监控功能,包括请求监控、性能指标收集和错误追踪。

快速开始

基本使用

Code
import { Monitor } from "@dreamer/dweb";

// 创建监控器
const monitor = new Monitor({
  enableRequestMonitoring: true,
  enablePerformanceMonitoring: true,
  enableErrorMonitoring: true,
});

// 在请求处理中使用
server.setHandler(async (req, res) => {
  const startTime = Date.now();
  
  try {
    // 处理请求
    res.text("OK");
    
    // 记录请求指标
    monitor.recordRequest({
      method: req.method,
      path: req.url,
      statusCode: res.status,
      duration: Date.now() - startTime,
      userAgent: req.headers.get("user-agent"),
      ip: req.headers.get("x-forwarded-for") || "unknown",
    });
  } catch (error) {
    // 记录错误
    monitor.recordError({
      message: error.message,
      stack: error.stack,
      path: req.url,
      method: req.method,
      statusCode: 500,
      userAgent: req.headers.get("user-agent"),
      ip: req.headers.get("x-forwarded-for") || "unknown",
    });
    
    res.status = 500;
    res.text("Internal Server Error");
  }
});

监控选项

请求监控

记录每个请求的详细信息:

Code
interface RequestMetrics {
  method: string;        // HTTP 方法
  path: string;          // 请求路径
  statusCode: number;  // 状态码
  duration: number;      // 响应时间(毫秒)
  timestamp: number;     // 时间戳
  userAgent?: string;   // 用户代理
  ip?: string;          // IP 地址
}

性能监控

收集系统性能指标:

Code
interface PerformanceMetrics {
  cpuUsage?: number;              // CPU 使用率
  memoryUsage?: {                 // 内存使用情况
    rss: number;                  // 常驻集大小
    heapTotal: number;            // 堆总大小
    heapUsed: number;             // 堆已使用
    external: number;             // 外部内存
  };
  uptime: number;                 // 运行时间(毫秒)
  requestCount: number;           // 请求总数
  errorCount: number;             // 错误总数
}

错误监控

追踪应用错误:

Code
interface ErrorMetrics {
  message: string;       // 错误消息
  stack?: string;        // 堆栈跟踪
  path: string;          // 请求路径
  method: string;        // HTTP 方法
  statusCode: number;    // 状态码
  timestamp: number;     // 时间戳
  userAgent?: string;   // 用户代理
  ip?: string;          // IP 地址
}

配置选项

Code
interface MonitoringOptions {
  // 是否启用请求监控(默认 true)
  enableRequestMonitoring?: boolean;
  
  // 是否启用性能监控(默认 true)
  enablePerformanceMonitoring?: boolean;
  
  // 是否启用错误监控(默认 true)
  enableErrorMonitoring?: boolean;
  
  // 性能监控间隔(毫秒,默认 60000)
  performanceInterval?: number;
  
  // 请求指标回调
  onRequest?: (metrics: RequestMetrics) => void;
  
  // 性能指标回调
  onPerformance?: (metrics: PerformanceMetrics) => void;
  
  // 错误指标回调
  onError?: (metrics: ErrorMetrics) => void;
}

使用示例

自定义回调

Code
const monitor = new Monitor({
  onRequest: (metrics) => {
    // 发送到外部监控服务
    console.log("请求指标:", metrics);
  },
  
  onPerformance: (metrics) => {
    // 记录性能指标
    console.log("性能指标:", metrics);
  },
  
  onError: (metrics) => {
    // 发送错误到错误追踪服务
    console.error("错误指标:", metrics);
  },
});

集成第三方服务

Code
import { Monitor } from "@dreamer/dweb";

const monitor = new Monitor({
  onRequest: async (metrics) => {
    // 发送到 Prometheus
    await fetch("http://prometheus:9091/metrics", {
      method: "POST",
      body: JSON.stringify(metrics),
    });
  },
  
  onError: async (metrics) => {
    // 发送到 Sentry
    await fetch("https://sentry.io/api/errors", {
      method: "POST",
      body: JSON.stringify(metrics),
    });
  },
});

获取性能指标

Code
// 获取当前性能指标
const metrics = monitor.getPerformanceMetrics();
console.log("CPU 使用率:", metrics.cpuUsage);
console.log("内存使用:", metrics.memoryUsage);
console.log("运行时间:", metrics.uptime);
console.log("请求总数:", metrics.requestCount);
console.log("错误总数:", metrics.errorCount);

最佳实践

  • 生产环境监控:启用所有监控功能,配置外部监控服务集成,设置合理的性能监控间隔
  • 开发环境监控:可以禁用部分监控以减少开销,使用控制台输出进行调试
  • 错误追踪:记录完整的错误信息,包含请求上下文(路径、方法、IP 等),发送到专业的错误追踪服务
  • 性能优化:监控响应时间,识别慢请求;监控内存使用,防止内存泄漏;监控 CPU 使用率,优化资源消耗

相关文档