抓 Bug 神器的工作原理——聊聊 Sentry 的架构

Sentry 是什么?这是一个服务中心,用于错误报告,使用几乎一致 API 设计统一了不同语言生产环境代码异常报告的问题。

抓 Bug 神器的工作原理——聊聊 Sentry 的架构

图片来自 Sentry.io2020年2月,领导让我负责公司内部的测试和使用 Sentry,彼时 Sentry 文档还不完善,我也只是初步接触基础服务的建设,Sentry 对我来说是个黑盒子。

2016年,Sentry 开发者回答说,目前还没有任何关于它的问题 Sentry 结构公开信息的最佳方式是阅读源代码:)这个工程量真的很大,我个人在使用它 Docker-compose 搭建 Sentry 借用一系列日志输出观察整个数据流,只能根据服务间的依赖猜测一般架构。

2020年下半年,Sentry 结合其他文档,开始陆续补充文档,本项目的架构图终于公开,Sentry 数据流出水面。

架构概述

下图是基于的 Sentry 官方文档重绘后,我用紫色图形区分了所有与存储相关的组件,其他的 Sentry 蓝色表示服务组件(顶部应用除外)。

抓 Bug 神器的工作原理——聊聊 Sentry 的架构

SentryArchitecture这样画下来后,服务基本上是分层完成的:

1.Loadbalancer(负载均衡器)负责路由转发(此服务由用户构建),错误报告转发到/api/d+/store ,其他项目、成员和错误管理功能由其他项目、成员和错误管理 Sentry Web 负责。这一层承担数据入口和显示功能2.Relay 负责新闻中继转发,首先收集数据 Kafka;Snuba 负责接收 SentryWeb 数据聚合和搜索的请求;Sentry Worker 主要负责数据存储的队列服务。3.Kafka 作为消息队列,ClickHouse 负责接近实时数据分析,Redis(主要)和 Memcached 负责存储和统计项目配置和错误的基本信息。Postgres 承担基础数据持久化(主要是项目、用户权限管理等)。)Symbolicator 主要用于错误信息的格式化。4.最底下的 Zookeeper 是 Kafka 如果我们设置多个节点信息同步, ClickHouse 节点也可用于保存主从同步信息或制作分布式表。

Relay ——处理错误信息的中转站

抓 Bug 神器的工作原理——聊聊 Sentry 的架构

RelayRelay 收到原始数据后,主要做这些事情。

1.验证其格式的有效性。2.查询内存或从 Redis 拉取缓存获取项目配置信息,验证请求是否合法(项目是否存在或触发限流,不触发限流 API 积累金额,写入 Redis)3.发起异步请求给定时任务(SentryWorker,postprocess-event)下一步处理

Kafka 和 Celery ——应用程序解耦和异步保存数据

Relay 数据转发到 Kafka 的 ingest-events Topic(Ingest 即摄入),消费者消费后将消息放入 postprocess-event 这个 Celery 定期任务服务排队处理。队列所做的如下

1.Symbolicate-event,在 iOS 上有个叫 symbolicate-crash 这里的工具是将机器的崩溃日志转换为可读的崩溃代码定位日志 Symbolicator 还承担类似的功能,通过它处理的消息,我们可以在页面上看到代码出了什么问题。2.process-event,字面意思是处理消息 Sentry 上启用的插件(Plugins or Integration)这一步将应用于消息体,例如,集成一个 Slack bot(机器人),将在此步骤中发出报警。3.save-event,简化后,将消息保存到数据库中,同时再次发送 Kafka,但这次换到 event Topic,Snuba 在这个搜索组件中,会有一个消费者批量将这部分数据写入 ClickHouse。你可能会好奇为什么不直接存起来,算了算,还要多做这一步。这是因为 ClickHouse 虽然大数据处理能力很强,但频繁写入的能力是真正的菜鸡(假设是主从,那就更灾难性了,把从库和 Zookeeper 一起拉下水),所以需要 Snuba 限制写入频率。

Sentry Web

抓 Bug 神器的工作原理——聊聊 Sentry 的架构

SentryDashboard -来自 Sentry 官网

抓 Bug 神器的工作原理——聊聊 Sentry 的架构

实时查询Sentry Web 这里主要处理配置等持久数据,负责创建项目、权限控制、限流分配等。查询错误的搜索信息,Dashboard 聚合等功能是 Snuba 承担,作为翻译,将用户查询条件转化为 SQL 语句发给 ClickHouse。

题外话-为什么? Sentry 适合商用

以往的开源项目大多可以看作是单个组件,升级修复的工作量对于普通工程师来说是可以接受的。但是 Sentry 这一错误报告服务背后由十几二十个微服务组成。服务升级可能涉及多个微服务和存储服务,无法立即依赖爆炸和测试。

对于小公司,如果不使用, Docker,搭建一个 Sentry 服务需要很多服务器。如果你想做出决定,你需要乘以集群 N,如果要做 TLS,你得花很多钱买证书。本来想节省代码查错的时间成本,但最后可能在部署和运维上花了更多的钱。

单租户隔离(Single Tenant Isolation)、持续集成测试,TLS 加密、容灾都交给了 Sentry 来做吧,给它钱自然成了最划算的计划,不得不说,真羡慕这种站着赚钱的项目:)。

参考资料

1.[Question] Sentry Architecture #3419(https://github.com/getsentry/sentry/issues/3419#issuecomment-224006919)2. Path of an Event through Relay (https://getsentry.github.io/relay/relayserver/index.html#path-of-an-event-through-relay)3. Sentry: Event Ingestion Pipeline(https://getsentry.github.io/event-ingestion-graph/)4. Introducing Snuba: Sentrys New Search Infrastructure (https://blog.sentry.io/2019/05/16/introducing-snuba-sentrys-new-search-infrastructure)5. The Architecture Of Sentry (https://develop.sentry.dev/architecture/)

(0)
上一篇 2023年1月31日 下午5:47
下一篇 2023年1月31日 下午5:52

相关推荐

  • Slack被黑客窃走程序代码

    协同平台Slack昨天(5)公告被黑客攻击,窃取了一些存储在公司内外的程序代码。但强调用户数据不受影响。 Slack去年12月29日获报GitHub账户有可疑活动。初步调查显示,原…

    2023年1月9日
    249
  • 亚马逊已在多种职能中使用ChatGPT 包括编写代码等

    据报道,内部Slack消息显示,亚马逊在许多不同的工作功能中使用了人工智能聊天机器人ChatGPT,包括回答面试问题、编写软件代码和创建培训文档。一名员工在Slack上说,亚马逊A…

    Slack 2023年1月30日
    182
  • Slack聊天软件品牌VI手册

    Slack 是聊天群组 + 大规模工具集成 + 文件整合 + 统一搜索。Slack 电子邮件、短信、GoogleDrives、Twitter、Trello等 65 各种碎片化的企业…

    2022年12月28日
    263
  • SaaS 增长神话,Slack 的进阶 ( 续 )

    文 | Dejan Gajsek 编译 | 杨铭煜 对于 SaaS 企业的创业者来说,增长是一个永不过时的话题。在众多 SaaS 企业的增长案例中,Slack 的增长神话尤为夺目。…

    2022年12月28日
    196
  • GitLab 13.7,增加MR审阅者,部署失败时自动回滚等功能

    12月22日距离平安夜还有两天,距离新年还有一周多点,又到Gitlab发版的日子了。这次发布的版本是Gitlab 13.7,虽然和日常的功能略少点,但是也包括了45项功能和改进,详…

    2022年12月29日
    172
  • Slack为何如此受欢迎?更快速、更可靠、更安全

    全文共2066字,预计学习时长7分钟 图源:unsplash 产品的部署什么最重要?如何平衡好速度和可靠性是关键。这也是为什么Slack如此受欢迎的原因所在,它是历史上增长最快的S…

    2022年12月28日
    254
  • Slack就是操作系统

    互联网女王注意到了消息应用程序正在成为通信中心,Benedict Evans设计师认为新闻应用程序可能成为移动平台Ben Brown提出了更大胆的观点,Slack、微信、Kik、W…

    2022年12月20日
    234
  • Twitter 可能会通过引入商业 DM 来挑战 Slack

    Twitter 宣布已收购商业新闻服务Quill,这一举动可能会使它与之相处 Slack 竞争。 筹集约1600万美元后,Quill 今年早些时候退出测试版,作为 Windows、…

    2022年12月15日
    198
  • 求职者涌向Slack以快速找工作

    《华尔街日报》6月1日报道,各大公司都在帮助下Slack加快办公室沟通效率。现在,员工们正在用这个信息传递工具快速寻找工作。Slack在远程办公兴起的背景下,应用激增,使团队和整个…

    Slack 2022年12月21日
    281
  • 277亿美元!Salesforce现金加股票收购Slack

    (原标题:277亿美元!Salesforce现金和股票收购Slack) Salesforce该公司周二宣布以超过270亿美元的价格收购聊天软件Slack。 Salesforce声明…

    2022年12月19日
    201

wx