写点什么

Plaid.com 的监控系统如何实现与 9600 多家金融机构的集成

  • 2018-08-03
  • 本文字数:1862 字

    阅读完需:约 6 分钟

金融技术企业 Plaid.com 已实现与 9600 多家金融机构的集成,从这些机构获取并处理数据供企业后期使用。由于集成的异构本质以及所集成机构的数量,并且同一度量在不同的集成可能会有不同的解释,需要报警的度量也不同,所以实现监控集成是一个挑战。为解决在可扩展性和低延迟要求上的挑战,Plaid 使用AWS Kinesis、Prometheus、Alertmanager 和 Grafana 重构了企业的监控系统

Plaid 前期实现的监控系统严重依赖于 Elasticsearch (ES)的日志系统。其中由 Nagios 查询 ES 集群,并将所有的报警发送给 PagerDuty。该系统不仅缺乏用户定制能力,而且由于 ES 的存储周期会因为日志规模的增加而降低,系统无法随不断增加的流量而扩展。鉴于旧系统缺乏对度量的历史查看视图、需手工配置报警,以及对日志更改具有脆弱的依赖性,因此团队重新考虑了监控的方法。他们从分析企业的需求着手,根据特定的用例确定需要监控哪些度量,以及如何监控这些度量。功能需求中包括基于客户的影响和实现仪表显示的代价,确定度量的优先级别,实现技术则聚焦于可扩展性、低延迟查询、支持高基数,以及开发人员使用系统的易用性。

团队选定 Prometheus 作为时序数据库、 Kinesis 作为事件流处理器、Alertmanager 实现报警功能,并用 Grafana 实现可视化。其中,选定后三者主要考虑到这些系统的灵活性,并且 Prometheus 和 Grafana 相互间工作良好。团队重新设计了监控流水线,使得实现导出标准度量的服务可直接使用标准的流水线,其它服务则发送事件到 Kinesis 并由事件消费者拉取事件生成度量。两类服务最终都在 Prometheus 生成度量,这可使流水线的其余部分保持不变。在通常情况下,一个事件可在 5 秒内生成度量。

作为 Prometheus 项目的组成部分, Alertmanager 中存在一些基于文件的配置。新集成(进而导致新度量)的加速是否会成为系统维护的一个潜在挑战?InfoQ 就此问题的细节联系了 Plaid 的软件工程师 Joy Zheng

我们可以根据警报类别而不是单个警报设置规则,因此 Alertmanager 的手工配置文件并非一个大问题。例如,我们可以通过设定规则,让系统通知 Pagerduty 处理所有高优先级的警报,而由 Slack 处理优先级较低的警报。另一方面,考虑到系统面对如此数量的集成,Prometheus 配置对我们来说无疑是一个挑战。我们初步实现的监控依赖于手工配置文件,而后续项目正在构建从 JS 代码生成配置文件的工具,不再需要根据照每个集成规则做复制粘贴。

目前看来,团队在实现易用性的目标上取得了很好的进展。团队的 45 位工程师中,有 31 人对监控配置做出了贡献。标准的流水线并不需要任何仪表显示(instrumentation),由代码库间共享的软件库自动导出度量。Zhang 详细介绍了他们是如何实现标准化度量间的转化:

共享库有助于强化通用度量命名,因为此时命名是由软件库控制的,而所有调用服务需要做的是为自身指定一个标签。对某些标签使用 ProtoBuf 枚举值,这进一步有助于我们实现标准化。但我们尚未针对自定义的每项服务度量给出一种强大的命名约定,因为当前很难在 Prometheus 中发现未命名的度量。目前,我们采用的可发现性解决方案主要是使用一些针对各个服务的最重要 Prometheus 度量构建 Grafana 仪表板。

Plaid 以联邦配置方式运行 Prometheus,对度量值做有限度的留存。但在 Zhang 看来,这对于历史数据而言不是一个挑战,“我们最初使用 Prometheus,即聚焦于即刻报警功能,因此只保存数个月的历史,这并非一个大问题。我们看到,更多用例需要使用对度量的历史分析。因此,我们将于近期上线一个后续项目,实现将 Prometheus 度量导出到我们的长期数据仓库(在 AWS Redshift 上)”。

由于网络延迟或重排序,流数据可能存在乱序抵达问题,或是在客户端产生延迟的问题。据 Zhang 介绍,Plaid 使用 Kinesis 处理该问题:

使用 Kinesis 使我们可以维持流数据的次序,即便是出现 Kinesis 消费者宕机的情况。我们已经看到,事件消费者会由于网络延迟而产生几分钟的滞后,进而奋起直追,最终会生成 1 到 2 个虚假页面。使用 Kinesis 的另一个优点是能够使用并行读取器,这样我们可具有一个并行的“预生产”监控环境。由于该环境也从同一事件流中读取,因此我们可在该环境中全面测试监控的变化。通常从事件消费者角度看,我们可看到非常好的稳定性。

监控也将在部署流水线中发挥作用。代码在推送到生产环境之前,将首先推送到一个内部的预生产(Staging)环境。在将部署交付后续环境之前,Plaid 当前的工作流通常需要开发人员检查仪表板(包括监控度量)的情况。

查看英文原文: Plaid.com’s Monitoring System for 9600+ Integrations

2018-08-03 10:281576
用户头像

发布了 391 篇内容, 共 154.6 次阅读, 收获喜欢 257 次。

关注

评论

发布
暂无评论
发现更多内容

Android开发两年:扔物线课程怎么样

android 程序员 移动开发

Android开发环境!android开发艺术探索pdf百度网盘

android 程序员 移动开发

Android开发者出路在哪,附大厂真题面经

android 程序员 移动开发

Android已死,享学课堂

android 程序员 移动开发

IM开发干货分享:万字长文,详解IM“消息“列表卡顿优化实践

JackJiang

即时通讯 IM

Android开发全套学习!享学课堂Android架构师课程

android 程序员 移动开发

Android开发必学:扔物线rxJava

android 程序员 移动开发

Android开发人员不得不收集的代码,2021年您应该知道的技术之一

android 程序员 移动开发

Android开发必会技术!动脑学院vip课程百度云

android 程序员 移动开发

Android开发揭秘,扔物线课程怎么样

android 程序员 移动开发

Android开发经典实战!享学课堂架构师vip百度云

android 程序员 移动开发

Android开发从零开始,动脑学院视频百度云

android 程序员 移动开发

《软件开发的201个原则》(中译本)出版了

百度开发者中心

最佳实践 方法论 软件开发 新书推荐

Android开发必须掌握!动脑学院android视频

android 程序员 移动开发

Android开发入门教程!动脑Android

android 程序员 移动开发

Android开发者出路在哪,看完直接跪服

android 程序员 移动开发

Android开发者必须收藏的8个开源库,阿里蚂蚁金服五面

android 程序员 移动开发

Android开发者该学习哪些东西提高竞争力,做了5年Android

android 程序员 移动开发

Android开发社招面试解答之性能优化,阿里官方推荐

android 程序员 移动开发

Android开发两年:动脑学院2019android

android 程序员 移动开发

Android开发必须要会!享学课堂Android架构师vip

android 程序员 移动开发

终于有人把前端鉴权讲明白了

青云技术社区

云计算 云原生 大前端

Android开发知识点!动脑学院android全套

android 程序员 移动开发

Android开发实战,动脑学院android全套

android 程序员 移动开发

Android开发教程入门!动脑学院vip2019百度网盘

android 程序员 移动开发

Android开发核心知识笔记共2100页,统统给你解决

android 程序员 移动开发

新思科技:在智能网联汽车中构建软件安全性及可靠性

InfoQ_434670063458

新思科技 汽车软件安全

Android开发必学,动脑学院课程值得买吗

android 程序员 移动开发

Android开发必学:rxjava扔物线

android 程序员 移动开发

Android开发教程入门!android开发艺术探索pdf百度网盘

android 程序员 移动开发

这9个单例被破坏的事故现场,你遇到过几个?

Tom弹架构

Java 架构 设计模式

Plaid.com的监控系统如何实现与9600多家金融机构的集成_DevOps & 平台工程_Hrishikesh Barua_InfoQ精选文章