贝莱德公司的现场可靠性工程


贝莱德是全球最大的资产管理公司,管理的资产超过 10 万亿美元。
除了作为资产管理公司,贝莱德还是一家科技公司。他们向其他资产管理公司、银行、保险公司等出售各种软件。
他们最大的产品是金融行业最受欢迎的投资管理软件平台Aladdin 阿拉丁。资产管理公司(银行、养老基金、对冲基金等)使用 Aladdin 跟踪损益、管理投资组合风险、进行交易、分析历史数据等。
2013 年,Aladdin 平台被用于管理全球 225 万亿美元金融资产中超过 7% 的资产(自那时以来它还在增长),因此该平台的任何问题都可能对全球金融体系产生重大影响。
贝莱德的站点可靠性工程团队建立了一个强大的遥测平台来监督阿拉丁的健康、性能和可靠性。
Sudipan Mishra 是 BlackRock 的 SRE 团队的一名工程师,他写了一篇关于遥测平台架构的精彩博客文章

摘要如下:

1、遥测平台的架构
Aladdin 的所有各种组件都会生成大量的日志、数据等。
Telemetry 平台负责汇总所有这些报告,显示它们,如果其中一项服务无法运行,则向 BlackRock 的各个 Aladdin 开发人员发送警报。

  • Aladdin 平台中涉及的所有各种应用程序、数据库、基础设施和管道,所有这些报告指标然后由遥测平台的收集器读取。
  • 这些指标从收集器进入目录服务器,这是一个内部开发的服务,用于管理应该对哪些指标进行编目。
  • 某些指标可能过于嘈杂/不必要,因此工程师可以将它们从遥测目录 UI 中删除。
  • 然后将传递的指标从收集器发送到 Kafka,并最终发送到Prometheus。Prometheus 是一个开源系统监控和警报工具包,最初是在 SoundCloud 开发的。 
  • 从 Prometheus,指标转到 InfluxDB、AlertManager 和 Grafana。
  • InfluxDB 是一个开源时间序列数据库,BlackRock 使用它来长期存储所有遥测指标。
  • AlertManager 是 Prometheus 工具包中的一个工具,可根据指标向贝莱德工程师触发警报。
  • Grafana 是另一个 Prometheus 工具,可让工程师生成仪表板和图表以可视化遥测指标。

2、警报策略
Prometheus的AlertManager将根据遥测数据向从事Aladdin工作的各个开发人员发送警报。如果有任何事件对他们的服务产生影响,应该尽快提醒一个团队。

然而,如果SRE团队不注意实施警报的方式,那么就会造成警报疲劳等情况。

SRE团队对他们的警报有4个核心原则

  1. 可操作性 - 每个警报应该清楚地定义什么是坏的或即将坏的。警报还应该提出采取的纠正措施。
  2. 有效 - 假阳性(在没有事件的情况下发出警报)和假阴性(在有问题的情况下没有触发警报)都必须被最小化/消除。否则,它们会导致对警报系统的不信任。
  3. 有影响 - 开发人员不应该因为琐碎的/不重要的事情而收到警报。否则,开发人员会产生警报疲劳,并意外地忽略了重要的警报。
  4. 透明性--当开发者进入新的应用程序时,他们应该知道他们将得到哪些警报。他们也应该知道他们通常会在该应用中看到多少个警报。

贝莱德评估了不同类型的警报系统以满足所有这些原则。

你可以在谷歌的SRE书中读到一些选项。这本书是免费的,如果你对SRE感兴趣,绝对是一本必读的书。

贝莱德的SRE团队决定采用多窗口、多燃烧率的警报策略。这是Google SRE工作簿中Google的警报类型列表中的第6位。

你可以看到有多少误差是可以允许的,并围绕这个问题设置各种限制。当你注意到遥测中的错误时,你就针对允许的错误限制进行 "燃烧"。一旦你超过了允许的限度(如果仍然有错误出现),你就发出警报。

贝莱德发现这个策略的假阳性率低,假阴性率低,检测时间快,复位时间非常短。

为了测试他们的警报策略,他们写了一个脚本,让开发人员从他们的Prometheus实例中提取特定时间和日期范围的指标。他们可以利用这些指标,然后回溯测试他们的警报策略,看看他们会得到多少警报,以及是否会有任何假阴性或假阳性。