跳转到主要内容
当新错误事件发生时,Flashduty 采用三步聚合策略将错误聚合为 Issue,有效减少需要处理的错误数量。

聚合流程

1

指纹匹配

获取错误事件的指纹,并与现有 Issue 的指纹比较
2

自动合并

如果新事件与现有某个 Issue 共享相同指纹,则自动归入该 Issue
3

相似度分析

如果指纹未匹配,则利用机器学习模型分析错误相似度,将事件归入相似度最高的 Issue,或在相似度过低时创建新的 Issue

默认指纹

Flashduty 默认启用异常聚合,无需额外配置即可开始工作。Browser SDK 会自动收集错误数据并进行聚合。
在 HTML 文件中引入 Flashduty Browser SDK:
<script src="https://cdn.flashcat.com/rum-browser-sdk.js"></script>

指纹计算规则

当错误事件没有携带指纹时,Flashduty 基于以下错误属性自动计算指纹:
属性说明
service错误发生的服务
env错误发生的环境
error.type错误的类型分类
error.message错误的描述文本
为提高聚合准确性,Flashduty 会去除堆栈帧中的变量属性,如版本号、ID、日期等动态参数。

自定义指纹

若默认聚合无法满足需求,您可以通过提供自定义指纹(fingerprint)完全控制错误的聚合行为。
自定义指纹的优先级高于默认指纹。
在手动报告错误时,通过 addError 添加自定义指纹:
window.FLASHCAT_RUM.addError(new Error("My error message"), {
  source: "custom",
  fingerprint: "my-custom-grouping-fingerprint",
});
  • 自定义 fingerprint 必须为字符串类型
  • 相同服务中具有相同 fingerprint 的错误将被归入同一 Issue
  • 不同服务的错误即使 fingerprint 相同也会被归入不同 Issue
  • beforeSend 回调还可用于过滤无关错误(如第三方脚本错误)

Web 特定注意事项

上传 sourcemap 文件以解码压缩后的堆栈跟踪,确保聚合后的错误堆栈可映射到原始源代码。
flashcat-cli sourcemaps upload \
  --service my-service \
  --release-version 1.0.0 \
  --minified-path-prefix /assets \
  --api-key your-api-key \
  ./dist
默认情况下,Flashduty 会过滤来自浏览器扩展或第三方脚本的错误(如 network 来源),以减少噪声。可通过 beforeSend 进一步自定义过滤规则:
beforeSend: (event) => {
  if (
    event.error.source === "network" &&
    event.error.message.includes("ThirdPartyScript")
  ) {
    return false; // 丢弃该错误
  }
  return true;
};

查看聚合结果

在 Flashduty 平台,导航至「异常追踪」,查看聚合后的 Issue 列表。 每个 Issue 包含:
内容说明
错误消息和堆栈跟踪若上传了 sourcemap,会显示原始源代码位置
用户会话时间线触发错误的操作路径
元数据浏览器类型、版本号等

下一步

Issue 状态

了解 Issue 状态流转机制