Sentry性能监控Skill sentry-performance-monitoring

使用Sentry进行应用程序性能监控的技能,涵盖事务、跨度和分布式追踪,用于追踪应用性能、分析瓶颈、优化用户体验和确保应用稳定性。关键词:性能监控、分布式追踪、事务、跨度、Sentry、应用性能优化、性能分析、SEO。

DevOps 0 次安装 0 次浏览 更新于 3/25/2026

名称: sentry性能监控 描述: 用于设置Sentry的性能监控、分布式追踪或性能分析。 允许工具:

  • 读取
  • 写入
  • 编辑
  • Bash
  • Grep
  • Glob

Sentry - 性能监控

使用事务、跨度和分布式追踪来追踪应用程序性能。

启用性能监控

import * as Sentry from "@sentry/browser";

Sentry.init({
  dsn: "...",
  tracesSampleRate: 0.2, // 20%的事务采样率
  integrations: [
    Sentry.browserTracingIntegration(),
  ],
});

事务

自动事务

// 浏览器:页面加载和导航
Sentry.init({
  integrations: [
    Sentry.browserTracingIntegration({
      tracePropagationTargets: ["localhost", /^https:\/\/api\.example\.com/],
    }),
  ],
});

手动事务

const transaction = Sentry.startTransaction({
  op: "task",
  name: "处理订单",
});

try {
  // 你的代码在这里
  processOrder(order);
  transaction.setStatus("ok");
} catch (error) {
  transaction.setStatus("internal_error");
  throw error;
} finally {
  transaction.finish();
}

跨度

创建子跨度

const transaction = Sentry.startTransaction({ name: "结账" });

const validationSpan = transaction.startChild({
  op: "validation",
  description: "验证购物车商品",
});
await validateCart(cart);
validationSpan.finish();

const paymentSpan = transaction.startChild({
  op: "payment",
  description: "处理支付",
});
await processPayment(payment);
paymentSpan.finish();

transaction.finish();

跨度数据

const span = transaction.startChild({
  op: "db.query",
  description: "SELECT * FROM users WHERE id = ?",
  data: {
    "db.system": "postgresql",
    "db.name": "production",
  },
});

分布式追踪

传播追踪上下文

// 前端
Sentry.init({
  integrations: [
    Sentry.browserTracingIntegration({
      tracePropagationTargets: [
        "localhost",
        /^https:\/\/api\.yoursite\.com/,
      ],
    }),
  ],
});

// 这自动添加 sentry-trace 和 baggage 头部

后端延续

// Express.js
import * as Sentry from "@sentry/node";

app.use(Sentry.Handlers.requestHandler());
app.use(Sentry.Handlers.tracingHandler());

// 事务从传入头部自动延续

采样

静态采样

Sentry.init({
  tracesSampleRate: 0.1, // 10%的事务采样率
});

动态采样

Sentry.init({
  tracesSampler: (samplingContext) => {
    // 总是采样错误
    if (samplingContext.parentSampled !== undefined) {
      return samplingContext.parentSampled;
    }

    // 高优先级端点
    if (samplingContext.name.includes("/checkout")) {
      return 1.0;
    }

    // 不采样健康检查
    if (samplingContext.name.includes("/health")) {
      return 0;
    }

    // 默认采样率
    return 0.1;
  },
});

Web Vitals

// 自动通过 browserTracingIntegration 捕获
// LCP, FID, CLS, FCP, TTFB

Sentry.init({
  integrations: [
    Sentry.browserTracingIntegration({
      enableLongTask: true, // 追踪长任务
    }),
  ],
});

自定义指标

// 捕获自定义指标
Sentry.metrics.increment("按钮点击", 1, {
  tags: { button: "结账" },
});

Sentry.metrics.distribution("购物车价值", cart.total, {
  unit: "美元",
  tags: { currency: "USD" },
});

Sentry.metrics.gauge("活跃用户", activeCount);

Sentry.metrics.set("唯一访客", visitorId);

性能分析

// Node.js
import * as Sentry from "@sentry/node";
import { nodeProfilingIntegration } from "@sentry/profiling-node";

Sentry.init({
  dsn: "...",
  integrations: [nodeProfilingIntegration()],
  tracesSampleRate: 1.0,
  profilesSampleRate: 1.0,
});

最佳实践

  1. 从低采样率开始,根据需要增加
  2. 使用动态采样处理重要事务
  3. 传播追踪上下文到所有服务
  4. 添加有意义的跨度描述
  5. 追踪业务关键用户流程
  6. 使用自定义指标监控业务KPI
  7. 为性能关键代码启用性能分析