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

Sentry JS消息是否受采样率过滤?如何配置消息上报与流量控制?

Sentry消息上报问题解答

问题根源

是的,你设置的全局sampleRate: 0.01会作用于所有Sentry事件,包括captureMessage发送的消息,这就是只有1%的消息被上报的原因。

实现全量发送消息的两种方式

1. 全局设置全量采样率

直接修改初始化代码中的sampleRate配置,将其设为1:

const client = new BrowserClient({
  // 其他配置保持不变
  sampleRate: 1, // 覆盖原有0.01的采样率
  beforeSend(event) {
    console.warn("Event", event);
    lastEvent = event;
    return event;
  }
});

这种方式会让所有事件(错误+消息)都全量上报。

2. 仅针对消息设置全量采样率

如果想保留错误事件的低采样率,只让消息全量发送,可以在调用captureMessage时单独指定采样率:

scope.captureMessage(message, { sampleRate: 1 });

这样全局的sampleRate仍会作用于错误事件,消息则不受限制。

仅在特定错误发生时发送消息(减少流量)

可以通过beforeSend回调或者调用captureMessage时的参数实现精准过滤:

方式一:在beforeSend中直接过滤事件

beforeSend(event) {
  // 仅保留需要上报的消息事件
  if (event.type === 'message') {
    // 示例:仅保留包含"error-pre-"前缀的关联消息
    if (!event.message.includes('error-pre-')) {
      return null; // 返回null会直接丢弃该事件
    }
  }
  // 错误事件正常上报
  return event;
}

方式二:给消息打标签后过滤

调用captureMessage时添加自定义标签:

scope.captureMessage(message, { tags: { isErrorRelated: 'true' } });

然后在beforeSend中根据标签过滤:

beforeSend(event) {
  if (event.type === 'message' && event.tags?.isErrorRelated !== 'true') {
    return null;
  }
  return event;
}

Sentry消息的配额与计费限制

  • 免费版Sentry有固定的月事件配额(通常为10,000条),超出后会限制接收事件,直到下一个计费周期。
  • 付费版采用按量计费模式,费用取决于每月发送的事件总量、数据保留时长、附加功能等维度。
  • 注意:消息事件和错误事件都会计入配额/计费统计,全量发送消息会快速消耗配额,建议结合上述过滤策略减少不必要的上报。

内容的提问来源于stack exchange,提问作者4ntoine

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 19:07:31