你知道Sentry 开源版与商业 SaaS 版的区别吗?,


本文转载自微信公众号「黑客下午茶」,作者为少。转载本文请联系黑客下午茶公众号。

您会在官方的文档中找到大量对 sentry 和 getsentry 的引用。两者都是 Django 应用程序, 但 sentry 是开源的, getsentry 是闭源的。里面有什么?

  • https://github.com/getsentry/sentry

主要要强调的是,官方所有的产品功能 — Issues、 Performance、 Dashboards 等等 — 都在 sentry (开源组件)中实现并可用。 sentry 不是将关键功能隐藏在付费墙后面的 “开放核心” 公司。Sentry 尽可能地开源。

  • https://docs.sentry.io/product/issues/
  • https://docs.sentry.io/product/performance/
  • https://docs.sentry.io/product/dashboards/
  • https://docs.sentry.io/product/
  • https://open.sentry.io/licensing/

那么 getsentry 中有什么?它为官方的 SaaS, sentry.io 实现了计费和帐户管理功能。 getsentry 是官方部署到生产环境的 Django 应用程序。它导入 sentry Django 应用程序, 添加一些路由和模型,并重新导出它。

此外,sentry 有许多 hooks,使用 Django signals 实现,getsentry 订阅这些 signal。例如,在 sentry 中有一个名为 event_received 的 Django signal,它在保存事件时被触发。如果您运行自托管,则不会订阅此 hook。但是在 getsentry 中,我们有一个计费计数器,它会在该 signal 触发时运行。

getsentry 使用的 sentry 中还有一些可交换可插拔的后端, 例如 sentry.nodestore、sentry.quotas 和一个自制的功能标记系统。与 hooks 一样,这些模块化后端在技术上可用于自托管实例,但它们在很大程度上没有文档记录。例如,功能标记系统有一个硬编码的功能表 (SENTRY_FEATURES), 自托管安装可以使用它来控制功能可用性。 getentry 注册了一个不同的功能 flag 处理程序,它根据官方的计费方案和抢先体验计划翻转 flag。

  • https://develop.sentry.dev/self-hosted/
  • https://github.com/getsentry/sentry/blob/master/src/sentry/features/__init__.py
  • https://develop.sentry.dev/feature-flags/
  • https://sentry.io/pricing/

Sentry 工程师注意事项

如果您不是 Sentry 的员工,您将无法在 getentry 代码库上进行开发,并且您可以忽略本文档中的以下注释和其他提及。

  • 您通常可以将 sentry CLI 替换为 getsentry CLI,它们的行为将相同。在其他情况下,官方试图指出行为上的差异。
  • getsentry 的设置在 getsentry/conf/settings/defaults.py 中配置。在与环境名称匹配的文件中可以找到其他特定于环境的覆盖。例如,本地开发的默认设置可以在 getsentry/conf/settings/dev.py 中找到。您还可以使用getsentry/conf/settings/devlocal.py 进行个人配置覆盖。 devlocal.py 文件被 git 忽略,不会意外地出现在你的提交中。

相关内容