如何用 Sentry 监控 SDK 的健康状态

9 阅读1分钟

痛点

SDK 运行在客户的页面上,如果报错了,我们通常是最后一个知道的(等客户投诉)。 而且客户环境千奇百怪,很难复现。

我们需要一套完善的监控系统。

Sentry 集成

我们选择了 Sentry。但直接引入 Sentry SDK 有个问题:体积太大

优化方案:Loader 模式

我们不直接打包 Sentry,而是写了一个极简的 Loader。

// sentry-loader.js
window.Sentry = window.Sentry || {};
window.Sentry.onLoad = function(callback) {
  // ...
};
// 异步加载 Sentry CDN
loadScript('https://browser.sentry-cdn.com/7.0.0/bundle.min.js');

错误过滤

SDK 报错可能会混入宿主页面的报错。我们需要过滤出只属于 SDK 的错误。

Sentry.init({
  beforeSend(event) {
    // 只上报堆栈中包含 autoform-sdk 的错误
    if (event.exception.values[0].stacktrace.frames.some(f => f.filename.includes('autoform-sdk'))) {
      return event;
    }
    return null;
  }
});

总结

通过 Sentry,我们能实时感知 SDK 的运行状态。每次发版后,盯着错误率曲线,心里踏实多了。

👉 官网地址:51bpms.com