You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Cloudflare Workers中实现Sentry性能监控功能?

Cloudflare Workers接入Sentry性能监控解决方案

可以在Cloudflare Workers环境中正常接入Sentry性能监控,两类常见问题的解决方法如下:

1. Toucan-js性能功能启用方法

Toucan-js从v3版本开始已原生支持性能监控能力,该功能默认关闭无需切换至官方SDK,初始化时新增两项配置即可:

  • 新增enableTracing: true显式开启追踪能力
  • 新增tracesSampleRate配置,取值范围0~1,测试阶段可设置为1.0全量上报,生产环境根据采样需求调整数值
    配置完成后即可正常调用startTransaction、startChild方法,用法与Sentry官方SDK完全兼容。

2. 官方SDK调用startTransaction返回undefined的根因

该问题90%以上为初始化配置缺失导致,排查方向如下:

  • 必须在初始化阶段显式配置tracesSampleRate大于0,无该配置时Sentry默认完全关闭性能追踪能力,startTransaction会直接返回undefined
  • Cloudflare Workers属于无服务器运行环境,使用官方SDK时需要额外自定义适配Worker的transport配置,不能直接使用浏览器/Node.js端的默认传输组件,否则事务无法正常上报也会触发返回空值的问题。

最简可行实现示例

// 基于Toucan-js的性能监控实现(更适配Cloudflare Workers运行环境)
import { Toucan } from 'toucan-js';

export default {
  async fetch(request, env, ctx) {
    // 初始化Sentry实例
    const sentry = new Toucan({
      dsn: env.SENTRY_DSN,
      context: request,
      enableTracing: true,
      tracesSampleRate: 1.0, // 该配置项必须大于0才能启用性能追踪
    });

    // 启动根事务
    const transaction = sentry.startTransaction({
      name: 'worker-request',
      op: 'http.server',
    });

    // 启动子跨度追踪特定操作耗时
    const dbQuerySpan = transaction.startChild({
      op: 'db.query',
      description: 'fetch user information',
    });
    // 模拟业务逻辑执行
    await new Promise(resolve => setTimeout(resolve, 120));
    // 子跨度结束
    dbQuerySpan.finish();

    // 根事务结束
    transaction.finish();
    return new Response('Success', { status: 200 });
  }
}

内容的提问来源于stack exchange,提问作者David Min

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 10:54:04