10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

HubSpot 是如何监控 Kafka 的性能的

  • 2015-10-11
  • 本文字数:929 字

    阅读完需:约 3 分钟

Sidekick 是数字营销公司 HubSpot 的一款产品,用于在接收者打开邮件时实时通知发送者。创建和发送通知的基础设施以 Kafka 为基础创建。 Ze’ev Klapow 是 Sidekick 基础设施团队的一名资深软件工程师。近日,他撰文介绍了他们如何在Sidekick 中监控Kafka 的性能。

Sidekick 通知管道的架构大致如下:

Ze’ev 指出,像上图这样就许多 Kafka 消费者连接在一起,需要监控每个消费者的性能,而且需要在消费者出现问题时快速定位。为此,他们开发了如下两个指标。

“增量(Delta)”

该指标用于确定消费者是否能够跟上某个主题的数据生成速度,如下图所示:

在 Kafka 中,每条消息会发送到某个主题的一个分区上,每条消息在写入时会获得一个递增的偏移量数值。消费者在消费消息时会记录它消费的最后一条消息的偏移量。增量即是该偏移量与分区头之前差异。对于每个 Kafka 消费者,他们会记录如下两个增量数据:

  • 增量总和为所有分区的增量之和。增量总和增加说明消费者太慢或数据量太大,可以考虑扩展消费者,或者增加并发。
  • 最大增量为所有分区中的最大增量。最大增量增加说明只有一个工作进程出现问题,或者分区之间没有实现很好的负载均衡。

“延迟(Lag)”

该指标用于监控消息处理延迟。在 Sidekick 中,他们会在所有的消息上都存储一个时间戳。如下图所示,总延迟为事件创建和通知发送之间的时间,可以帮助他们监控整个管道:

另外,如下图所示:

他们还可以进行更细粒度地延迟监控,这有助于在总延迟开始偏离正常轨道时进行调试。

按照 Ze’ev 的说法,上述两个指标提供了系统健康状况的一个完整视图。当消费者出现问题时,他们首先会依据下表进行问题判断:

Δ↑

情况糟糕!

有地方出现问题了。

情况可能并不坏。

增量增加但延迟稳定可能代表流量峰值或类似的问题。

Δ↑ 增量没有增加,但延迟增加。

可能是该消费者的上游存在问题。

一切正常!

复制代码
**LAG↑**

LAG↓

Ze’ev 表示,当出现问题时,此表可以为问题调试指明方向;当没有问题时,此表可以让他们对系统的性能更加自信。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-10-11 19:003481
用户头像

发布了 1008 篇内容, 共 433.1 次阅读, 收获喜欢 346 次。

关注

评论

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

企业帮助中心的搭建步骤

小炮

帮助中心

零基础学编程?从这本豆瓣评分9.2的入门级神作开始

图灵社区

Python 零基础

2022 年值得关注的 9 个最新 Java 趋势

Ethereal

私有云与公有云,哪种云模型最适合企业的需求

Ethereal

数据对接 - 大屏云极简使用手册

shulinwu

可视化 数据可视化 大屏可视化 数据可视化控件 大屏

OceanBase 存储引擎详解

OceanBase 数据库

Map-Reduce 思想在 ABAP 编程中的一个实际应用案例

汪子熙

mapreduce abap CRM系统 企业级应用 3月月更

Meetup预告| AIOps指标相关算法体系分享

云智慧AIOps社区

机器学习 大数据 算法 AIOPS 智能运维

征文丨TiDB 社区专栏第一届征文大赛,快来一次性集齐所有周边吧!

PingCAP

Web 键盘输入法应用开发指南(9)—— 标准与实现

天择

JavaScript 键盘 输入法 3月月更

如何使用 Checkmk 监控 SSL TLS 证书?

Ethereal

两小时,掌握四个数字化工具!

明道云

Linux性能优化—内存实战篇

Linux服务器开发

性能优化 内存管理 Linux服务器开发 Linux内核 内核源码

电科申泰加入龙蜥社区并成为理事单位,共创基础软硬件生态新未来

OpenAnolis小助手

开源 理事单位 申威 软硬件

一站式运维管理工具平台 OCP 到底有多好用,看这篇文章就够了!

OceanBase 数据库

【直播回顾】OpenHarmony知识赋能第四期第二课——GPIO驱动开发

OpenHarmony开发者

OpenHarmony GPIO 驱动开发

抓到Netty一个隐藏很深的内存泄露Bug | 详解Recycler对象池的精妙设计与实现

bin的技术小屋

中间件 池化技术 java netty 内存池

这门面向应用开发者的 TiDB 使用教程,TiDB SQL、Connector API、架构体系…你一定不能错过!

PingCAP

鸿蒙开发必备书籍【收藏】

坚果

鸿蒙 3月月更

资产管理系统开发解决方案

低代码小观

企业管理 资产管理 CRM系统 企业管理软件

国内首届DataOps+MLOps meetup回顾

星策开源社区

人工智能 机器学习 DevOps Meetup MLOps

【三级等保】三级等保服务费用一年大概要多少?一年需要测评一次嘛?

行云管家

网络安全 等保 等级保护 三级等保

2022年济南正规等保测评公司名单(排名不分先后)

行云管家

等保 等保测评 等保2.0 济南

HSC推出「万物生长计划」 赋能虎符交易所HOO新应用场景

区块链前沿News

Hoo 虎符交易所 虎符智能链

ZEGO 自研客户端配置管理系统 —— 云控

ZEGO即构

后台开发 客户端配置 音视频架构

恒源云(Gpushare)_【存储优化】/hy-tmp可以扩/缩容啦

恒源云

云计算 存储 tmp

netty系列之:java中的base64编码器

程序那些事

Java 程序那些事 3月月更

在 Manjaro 上安装 Chrome

信号量

chrome Linux

并发异步编程之争:协程(asyncio)到底需不需要加锁?(线程/协程安全/挂起/主动切换)Python3

刘悦的技术博客

多线程 协程 Python3 协程原理

OceanBase 在线体验环境,现已上线!

OceanBase 数据库

数字化时代,如何做好用户体验与应用性能管理

云智慧AIOps社区

监控宝 监控工具 自动化运维 数字化经济

HubSpot是如何监控Kafka的性能的_语言 & 开发_谢丽_InfoQ精选文章