写点什么

Robinhood 工程团队是如何实现度量的收集和监控的

  • 2017-05-25
  • 本文字数:1977 字

    阅读完需:约 6 分钟

Robinhood 服务器运营团队发表一系列文章,详细阐述了公司所采用的度量采集、监控和报警的架构。根据文章介绍, OpenTSDB Grafana Kafka Riemann 构成了其技术栈的核心。其中 Kafka 作为代理层,实现将度量流数据推送给 Riemann 处理,并推送到 OpenTSDB 存储。

Robinhood 的技术栈主要由 Python 构成,还有部分 Golang。生产服务器的调试和监控,很大程度上依赖于度量。度量汇集数据库 OpenTSDB 是实现度量收集的主要手段,它不仅针对各类软件栈分别提供了多种标准度量收集器(称为 tcollectors ),而且还支持自定义的收集器。自定义收集器可使用 OpenTSDB 的 telnet 或 HTTP 访问接口收集度量,并将收集到的数据推送到 OpenTSDB 中。对于 Robinhood 应用,度量数据首先被发送到 Kafka 代理。

对于各个服务器,可以使用标准的或自定义的 tcolloctor 发送度量数据给 Kafka。对于应用的性能监测,使用了 statsd 库。应用度量发送到在各服务器本地运行的 statsd 进程。statsd 服务器的实现采用了 C 语言编写的 statsite 。在转化 statsd 度量为本地 tcollector 度量时,采用了自定义的适配器。此后,本地 tcollector 度量由 Kafka 发送给 OpenTSDB。tcollector 进程将度量输出在标准输出上,并调用一个 Python 脚本将输出推送给 Kafka。

作为度量采集系统的中枢,OpenTSDB 需为高可用的。InfoQ 咨询了 Robinhood 的运营工程师 Aravind Gottipati,对此他做了深入的解释:

Robinhood 运行多个独立的 OpenTSDB 实例,各个实例所消费的都是来自于 Kafka 的同一度量流。因为这些实例是相同的,我们可以请求任一 OpenTSDB 实例进行负载均衡,由此轻松实现了高可用。我们并不需要运行整个 HBase 集群,而是对每个实例运行一个单节点的本地 HBase 服务器(也是 Master)。

鉴于 Kafka 以中介方式使用,各消费者(Consumer)可以采用不同的数据处理方式。一种方式是将度量转换后,推送到 OpenTSDB。当需要处理不断增加的数据量时,还可以按需将数据分片到多个 OpenTSDB 服务器。以 Kafka 为代理,在需要维护时可以暂停并恢复消费者。连接 Kafka 和 OpenTSDB 间的桥梁,是一个基于控制台并输出到标准输出的消费者。输出使用 netcat 推送到 OpenTSDB 的 telnet 监听器。

Grafana 是一个可视化的度量查看工具,它支持 Graphite、InfluxDB 和 OpenTSDB 后端。还可以在仪表盘中插入 CloudWatch 度量。

Robinhood 监控和报警工作流的关键组成称为 Riemann。Robinhood 还使用了 Sensu 这样的传统报警系统,传统的报警系统依赖于指定时间点(point in time)查看度量,这并不适合于展示历史数据,原因包括难以编写查询,以及系统运行时存在高延迟。一些度量系统可能还不支持历史记录,因为对缺失数据必须支持插值操作。既然部分问题能被 OpenTSDB 较好地解决,那为什么 Robinhood 还要使用 Riemann?对此问题,Gottipati 给出了解释:“OpenTSDB 依赖于 HBase。HBase 适用于对指定范围内全部数据的访问,并不擅长于获取某个具体时间点上的单个度量数据。如果在报警系统中使用 HBase,需要 HBase 支持查看用户所选定某个具体时间点上的度量数据。在查询通常采用的是一种权宜之计,即为了获取单个数据点,依然必须扫描整个键值范围。”

在度量流的处理中,还需要定义一些规则和过滤器。数据流经时,一旦过滤器或规则得到匹配,就会触发报警。Riemann 可以聚合来自多种数据源的度量流,并提交给一种流处理语言进行处理。整个度量收集系统是绑定到 Riemann 的,使用的是推送数据到 Riemann 的 Kafka 消费者。度量的命名转换受 OpenTSDB 的影响,即每个度量具有一个类型,键值对标记由关联到每个事件的主机和角色构成。其中所使用的 netcat 也会推送数据到 Riemann,这时由起始 tcollector 对每个事件标记的角色(例如 Web 服务器、数据库)要被转化为 Riemann 标记。这使得 Riemann 内建的过滤器功能易于使用。Robinhood 内部对 Riemann 原语开发了一个包装 DSL ,简化了开发人员的使用。这一系统对 DevOps 协作发挥了关键作用。那么在 Robinhood 企业中,什么是 DevOps 文化创立的关键里程碑?Gottipati 是如此答复的:

我们构建了一些仪表盘样板,可以展示我们所采集的各种系统度量以及应用的度量仪表盘(来自于 statsd 度量)。作为对各用户疑问请求的响应,我们着手使用并共享这些仪表盘,让一些老用户开始使用它们。一段时间后,我们帮助这些用户添加更多的应用特定仪表盘,并继续这一过程。我们的后台 / 应用团队构建和维护了一系列的仪表盘,其中一些甚至不为运营人员所知。他们会培训新加入的工程师,如何去查阅并使用这些仪表盘。

在 Riemann 中查看事件时使用的是 Elasticsearch(ELS)实例,而非默认的 Riemann 仪表盘。大约 50% 来自 Kafka 的事件被推送到 ELS,峰值时可达每秒约 20,000 次事件。

查看英文原文: Metrics Collection and Monitoring at Robinhood Engineering

2017-05-25 19:002710
用户头像

发布了 227 篇内容, 共 84.6 次阅读, 收获喜欢 28 次。

关注

评论

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

通信云服务全球突围,融云助力互联网产业出海「外卷」

融云 RongCloud

互联网 通信 融云

一份GitHub star过万的1121页图解算法让“他”成功杀进字节跳动

程序知音

Java 算法 编程语言 后端技术

平台使用体验和大客户推荐指数稳居第一,得帆信息入选《2022中国低代码全景产业研究报告》

得帆信息

低代码平台

跨越前后端排障鸿沟,精准排障,让IT人员不“撕逼”

嘉为蓝鲸

告警 后端技术 IT 运维

嘉为蓝鲸研发运营一体化解决方案入选金融信创优秀解决方案

嘉为蓝鲸

金融 解决方案 一体化

在Github上标星103K爆火的Spring Security手册及源码笔记,YYDS

程序知音

Java spring security Java进阶 后端技术 java 架构

提高单元测试质量的低代码思路

赫杰辉

Java 后端 低代码 单元测试

2步搞定拼版!AD通用拼版技巧分享!

华秋PCB

工具 PCB 原理图 PCB设计 拼版

喜报|得帆信息成为中国信通院“卓信大数据计划”成员单位

得帆信息

低代码 中国信通院

编码的未来是根本不需要编码

引迈信息

前端 低代码 JNPF

使用卷积神经网络实现图片去摩尔纹

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号 3 月 PK 榜

Python:直观地查看某个物品使用一段时间之后每天的平摊价格

强劲九

Python 面试 matplotlib 算法题

多工厂、多基地数字化生产管理有难题?得帆云iPaaS可以帮你

得帆信息

集成

Nautilus Chain 首个生态基础设施 Poseiswap,公布空投规则

西柚子

强大的PDF文档处理:Acrobat Pro DC 2023 中文版

真大的脸盆

Mac PDF Mac 软件 pdf编辑器 PDF文档处理

玩转 ChatGPT+极狐GitLab|自动化的MR 变更评审来了

极狐GitLab

DevOps Code Review 极狐GitLab 代码合并 ChatGPT

CVPR 2023 大模型研讨会召开在即,国际技术竞赛正式开赛

飞桨PaddlePaddle

MobTech MobPush|厂商通道支持

MobTech袤博科技

OceanBase大事记(2023年3月)

OceanBase 数据库

数据库 oceanbase

拒绝“爆雷”!GaussDB(for MySQL)新上线了这个功能

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 3 月 PK 榜

一文带你搞懂如何优化慢SQL

京东科技开发者

数据库 sql 优化 企业号 3 月 PK 榜

AI系统简介和分类

陈磊@Criss

在 Rainbond 上使用 Curve 云原生存储

北京好雨科技有限公司

云原生 kubernete 分布式存储 rainbond

云服务过载控制的前世今生

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 3 月 PK 榜

MobTech MobPush|用户行为分析

MobTech袤博科技

低代码平台助力AIGC:让人工智能技术更加普及和高效

加入高科技仿生人

人工智能 低代码 AIGC 人工智能技术

行业分析| anyRTC智慧视频监控的应用

anyRTC开发者

人工智能 音视频 智慧城市 智慧交通 视频监控

借AI之势,打破创意与想象的边界

阿里云CloudImagine

阿里云 AIGC

如何构建用户体验优化体系?

嘉为蓝鲸

IT运维 用户体验设计 用户体验分析

MobTech SMSSDK|短信验证服务

MobTech袤博科技

Robinhood工程团队是如何实现度量的收集和监控的_DevOps & 平台工程_Hrishikesh Barua_InfoQ精选文章