写点什么

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:281610
用户头像

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

关注

评论

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

让 Serverless 更普惠,阿里云函数计算 FC 宣布全面降价,最大幅度达 37.5%

阿里巴巴云原生

阿里云 Serverless 云原生 函数计算

MyBatis 延迟加载代码详解

千锋IT教育

Spring Bean的生命周期(详细解读)

千锋IT教育

适合小白Web前端入门JS基础知识梳理汇总

千锋IT教育

如何做好成熟完整的企业团队知识管理?

Baklib

团队管理 知识管理

如何通过 NFTScan 浏览器捕获 NFT 投资机会

NFT Research

区块链 NFT 数据基础设施

埃森哲发布《2022中国企业数字化转型指数》,如何通过自动化工具打造技术底座

飞算JavaAI开发助手

mysql经典面试题

@下一站

MySQL 编程 dba 11月月更

Wallys/DR7915/MT7915/MT7975/industrial mini pcie card 2T2R

Cindy-wallys

MT7915 MT7975 / 2.4G&5G

PHP反序列化漏洞解析

网络安全学海

网络安全 安全 信息安全 渗透测试 漏洞挖掘

Apisix网关快速入门实践

IT巅峰技术

信息论与编码:信道编码的基本概念

timerring

11月月更 信息论

日志异常检测准确率低?一文掌握日志指标序列分类

云智慧AIOps社区

深度学习 日志分析 时间序列 指标预测 日志异常

Wallys/ industrial mini pcie card/2x 2 5G /High power Radio card

Cindy-wallys

QCA9882 2x 2 5G high power

Linux之用户管理、权限管理、程序安装卸载

C++后台开发

Linux 后端开发 linux开发 Linux服务器开发 C++开发

FAQ是什么?该如何编辑FAQ?

Baklib

调用链路上千条,如何观测 Nacos 的运行状态

阿里巴巴云原生

阿里云 微服务 云原生 naocs

谁能破解客户数字化困局?

ToB行业头条

【案例】数字化浪潮中,云科通明湖如何助力能源行业弯道超车?

通明湖

负载均衡

为什么你的敏捷总是不成功?

敏捷开发

开源共建 | Dinky 扩展批流统一数据集成框架 ChunJun 的实践分享

袋鼠云数栈

Baklib知识分享 | 搭建企业在线帮助中心的最佳攻略

Baklib

《大厂面试》之JVM篇21问与答

钟奕礼

Java java程序员 java面试 java编程

深度解读|NebulaGraph x 阿里云计算巢,云上构建超大规模图数据库

阿里云弹性计算

图数据库 计算巢

银行APP用户体验外滩峰会圆满落幕!易观分析赋能用户体验体系,助力体验提升

易观分析

App 银行 易观

十分钟带你全面解析Promise、generator、async类同步编程!

好程序员IT教育

JavaScript Promise

2022年10月视频用户洞察:卡塔尔世界杯揭幕,全民体育盛宴开启

易观分析

视频 世界杯

让 Serverless 更普惠,阿里云函数计算 FC 宣布全面降价,最大幅度达 37.5%

Serverless Devs

阿里云 Serverless

5分钟实现「视频检索」:基于内容理解,无需任何标签

Zilliz

人工智能 Towhee 视频检索

国标解读|从关键信息基础设施安全国标看软件供应链安全

墨菲安全

SBOM 软件供应链安全

【计算讲谈社】第十二讲|数据中心那些事儿

大咖说

数据中心 碳中和

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