如何构建高效的 Kafka broker 健康检查?
Posted
技术标签:
【中文标题】如何构建高效的 Kafka broker 健康检查?【英文标题】:How to build efficient Kafka broker healthcheck? 【发布时间】:2015-10-06 23:50:33 【问题描述】:在我的应用程序中,我将对我的 Kafka 集群执行某种健康检查。
目前我创建了一个TopicMetadataRequest
来检测死经纪人:
Future
// this will fail if Kafka is unavailable
consumer.send(new TopicMetadataRequest(Seq("health-check-topic"), 1))
不幸的是,由于集群拓扑/设置,此调用会产生巨大的网络流量。
有没有更好的方法来检查 kafka 经纪人?我需要的是像true/false
指示器这样简单的东西。
【问题讨论】:
只是一个想法,但这个问题是否可以更好地放在服务器故障上? 从回答转向评论 - github.com/andreas-schroeder/kafka-health-check 【参考方案1】:我强烈建议您使用 Yahoo Kafka Manager,它提供了与 Kafka 设置相关的所有信息。 (例如,在一段时间内发送/消耗的字节数)。此工具还可用于管理您的 Kafka 集群。
它还公开了 Restful API,如果需要,您可以在自己的应用程序中使用这些 API。请点击以下链接访问它。
https://github.com/yahoo/kafka-manager
【讨论】:
谢谢。这个库的一个问题是你不能在我的项目中将它用作 lib 依赖项。它必须单独部署。但这是一个不错的库:)【参考方案2】:您也可以使用 Zookeeper API 获取代理列表,如下所示:
ZooKeeper zk = new ZooKeeper(KafkaContextLookupUtil.getZookeeperConnect().getZkConnect(), 10000, null);
List<String> ids = zk.getChildren("/brokers/ids", false);
List<Map> brokerList = new ArrayList<>();
ObjectMapper objectMapper = new ObjectMapper();
for (String id : ids)
Map map = objectMapper.readValue(zk.getData("/brokers/ids/" + id, false, null), Map.class);
brokerList.add(map);
return brokerList;
【讨论】:
这只是获取一个代理列表。实际上并不检查客户端是否可以与代理进行通信。 如果一些经纪商倒闭,名单会改变吗?【参考方案3】:如果您想构建自己的健康检查,这是当前(2020 年 1 月)KIPs 的列表,涵盖健康检查:
KIP-143: Controller Health Metrics KIP-188: Add new metrics to support health checks KIP-237: More Controller Health Metrics关于Harvinder Singh的currently accepted answer:
Kafka Manager 很棒,但它是 evolving slowly。当然有Confluent Control Center - Confluent Platform 的一部分,但你需要它的许可证。 Confluent 是一家由构建 Apache Kafka 的团队创立的公司。我听说过akHQ (ex KafkaHQ) (HackerNews story)。以下是在Apache Kafka Confluence page 上维护的管理控制台列表(查看那里的 URL):
Kafka Manager - 用于管理 Apache Kafka 的工具。 kafkat - Kafka 代理的简化命令行管理。 Kafka Web 控制台 - 显示有关 Kafka 集群的信息,包括哪些节点已启动以及它们为哪些主题托管数据。 Kafka 偏移量监视器 - 显示所有消费者的状态以及他们落后于流头部的距离。 Capillary - 显示基于 Kafka 的 Apache Storm 拓扑的状态和增量。支持 Kafka >= 0.8。它还提供了一个 API,用于获取此信息以进行监控。 Doctor Kafka - 用于集群自动修复和工作负载平衡的服务。 Cruise Control - 完全自动化 Kafka 集群的动态工作负载再平衡和自我修复。 Burrow - 监控伴侣,将消费者延迟检查作为服务提供,无需指定阈值。 Chaperone - 监控数据流完整性和延迟的审计系统。如果不需要GUI,还有:
https://github.com/andreas-schroeder/kafka-health-check 及其分支https://github.com/ustream/kafka-health-check【讨论】:
以上是关于如何构建高效的 Kafka broker 健康检查?的主要内容,如果未能解决你的问题,请参考以下文章