写点什么

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

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

关注

评论

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

MobLink for Flutter

MobTech袤博科技

flutter ios android

Python中的super函数,你熟吗

华为云开发者联盟

Python 开发 企业号九月金秋榜

Istio Ambient Mesh 介绍

Se7en

前端二面面试题(附答案)

helloworld1024fd

JavaScript 前端

大学三年狂拿国内外十几个3D挑战赛大奖?!国内CG新星崛起

Renderbus瑞云渲染农场

CG 云渲染 3D动画 渲染农场 Renderbus瑞云渲染

私有化的即时通讯工具能为企业带来哪些帮助?

BeeWorks

SpringBoot 源码 | applicationContext.refresh() 方法解析

六月的雨在InfoQ

springboot 源码阅读 Refresh 9月月更 SpringBoot启动流程

你必须知道的Java泛型

自然

Java core 9月月更

7.07亿TPC-C背后的技术突破,OceanBase研究成果入选VLDB

OceanBase 数据库

led显示屏有污垢时该怎么清洗?

Dylan

LED显示屏 led显示屏厂家

网络安全周是什么意思?为什么要开展网络安全周?

行云管家

网络安全 网络安全周

阿里云EMAS移动测试|快速掌握移动端兼容性测试技巧

移动研发平台EMAS

阿里云 应用开发 兼容性测试 移动测试

虚实交互,重磅开启|共建多元、互联的元宇宙产业生态圈,赋能上海打造产业高地

Geek_2d6073

毫末智行董事长张凯:渐进式路线将在智能驾驶竞赛中赢得终局

科技大数据

WorkPlus移动应用管理平台 | 政企数字化的超级“连接器”

BeeWorks

【云原生】Kubernetes操作精讲

陈橘又青

9月月更

高频面试题:谈谈你对 Spring Boot 自动装配机制的理解

Java快了!

Spring Boot

重磅!阿里首推内部“SpringCloudAlibaba项目文档”这细节讲解,封神!

收到请回复

Java 云计算 开源 架构 编程语言

新零售数智化转型,需要怎样的数据底座?

OceanBase 数据库

[MyBatisPlus]DQL编程控制②(查询投影、查询条件)

十八岁讨厌编程

Java 后端开发 9月月更

带您了解昇腾模型压缩工具

华为云开发者联盟

人工智能 后端 企业号九月金秋榜

[Spring boot] Spring boot 整合RabbitMQ实现通过RabbitMQ进行项目的连接

Java快了!

Spring Boot

新一代开源时序数据库TDengine有哪些优势?

TDengine

数据库 tdengine 开源 企业号九月金秋榜

Databend 特性系列(1)|Databend 数据生命周期

Databend

大数据 大数据 开源 数据生命周期

开源云管平台有哪些?有哪些优势?

行云管家

云计算 云平台 云管平台 云管理

开奖啦!看看8月月更获奖名单有没有你?

InfoQ写作社区官方

热门活动 8月月更

[SpringBoot系列]基础过渡与夯实(基础配置)

十八岁讨厌编程

Java 后端开发 9月月更

[MyBatisPlus]DQL编程控制①(条件查询)

十八岁讨厌编程

Java 后端开发 9月月更

一文看懂:什么是CRM系统?有什么用?哪些公司在用?

优秀

CRM系统

MobLink Android 快速集成文档

MobTech袤博科技

sdk Android;

了解布隆过滤器

自然

Java core 9月月更

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