如何构建高效的Kafka broker healthcheck?
How to build efficient Kafka broker healthcheck?
在我的应用程序中,我将对我的 Kafka 集群执行某种健康检查。
目前我做了一个 TopicMetadataRequest
来检测死经纪人:
Future {
// this will fail if Kafka is unavailable
consumer.send(new TopicMetadataRequest(Seq("health-check-topic"), 1))
}
不幸的是,这个调用产生了巨大的网络流量,因为集群topology/settings。
有没有更好的方法来检查kafka broker?我需要的是一些简单的东西,比如 true/false
指标。
我强烈建议您使用 Yahoo Kafka Manager,它提供了与 Kafka 设置相关的所有信息。 (例如,一个时间间隔内的字节 sent/consumed)。此工具也可用于管理您的 Kafka 集群。
它还公开了 Restful API,如果需要,您可以在自己的应用程序中使用这些 API。按照以下link访问即可。
也可以使用ZookeeperAPI获取broker列表如下:
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;
如果您想构建自己的健康检查,这是涵盖健康检查的 KIPs 当前(2020 年 1 月)列表:
- KIP-143: Controller Health Metrics
- KIP-188: Add new metrics to support health checks
- KIP-237: More Controller Health Metrics
关于Harvinder Singh's :
Kafka Manager is great but it's evolving slowly. There's of course Confluent Control Center - a part of Confluent Platform, but you'll need a license for it. Confluent is a company founded by the team that built Apache Kafka. I've heard about akHQ (ex KafkaHQ) (HackerNews story). Here's a list of management consoles maintained on Apache Kafka Confluence page(检查那里的 URL):
- Kafka Manager - 用于管理 Apache Kafka 的工具。
- kafkat - Kafka 代理的简化命令行管理。
- Kafka Web 控制台 - 显示有关您的 Kafka 集群的信息,包括哪些节点已启动以及它们为哪些主题托管数据。
- Kafka Offset Monitor - 显示所有消费者的状态以及他们落后于流头部的程度。
- Capillary - 显示基于 Kafka 的 Apache Storm 拓扑的状态和增量。支持 Kafka >= 0.8。它还提供了一个 API 用于获取此信息以进行监视。
- Doctor Kafka - 集群自动修复和负载均衡服务。
- Cruise Control - 完全自动化 Kafka 集群的动态工作负载重新平衡和自我修复。
- Burrow - 无需指定阈值即可提供消费者滞后检查服务的监控伴侣。
- Chaperone - 监控数据流完整性和延迟的审计系统。
如果不需要GUI,还有:
在我的应用程序中,我将对我的 Kafka 集群执行某种健康检查。
目前我做了一个 TopicMetadataRequest
来检测死经纪人:
Future {
// this will fail if Kafka is unavailable
consumer.send(new TopicMetadataRequest(Seq("health-check-topic"), 1))
}
不幸的是,这个调用产生了巨大的网络流量,因为集群topology/settings。
有没有更好的方法来检查kafka broker?我需要的是一些简单的东西,比如 true/false
指标。
我强烈建议您使用 Yahoo Kafka Manager,它提供了与 Kafka 设置相关的所有信息。 (例如,一个时间间隔内的字节 sent/consumed)。此工具也可用于管理您的 Kafka 集群。
它还公开了 Restful API,如果需要,您可以在自己的应用程序中使用这些 API。按照以下link访问即可。
也可以使用ZookeeperAPI获取broker列表如下:
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;
如果您想构建自己的健康检查,这是涵盖健康检查的 KIPs 当前(2020 年 1 月)列表:
- KIP-143: Controller Health Metrics
- KIP-188: Add new metrics to support health checks
- KIP-237: More Controller Health Metrics
关于Harvinder Singh's
Kafka Manager is great but it's evolving slowly. There's of course Confluent Control Center - a part of Confluent Platform, but you'll need a license for it. Confluent is a company founded by the team that built Apache Kafka. I've heard about akHQ (ex KafkaHQ) (HackerNews story). Here's a list of management consoles maintained on Apache Kafka Confluence page(检查那里的 URL):
- Kafka Manager - 用于管理 Apache Kafka 的工具。
- kafkat - Kafka 代理的简化命令行管理。
- Kafka Web 控制台 - 显示有关您的 Kafka 集群的信息,包括哪些节点已启动以及它们为哪些主题托管数据。
- Kafka Offset Monitor - 显示所有消费者的状态以及他们落后于流头部的程度。
- Capillary - 显示基于 Kafka 的 Apache Storm 拓扑的状态和增量。支持 Kafka >= 0.8。它还提供了一个 API 用于获取此信息以进行监视。
- Doctor Kafka - 集群自动修复和负载均衡服务。
- Cruise Control - 完全自动化 Kafka 集群的动态工作负载重新平衡和自我修复。
- Burrow - 无需指定阈值即可提供消费者滞后检查服务的监控伴侣。
- Chaperone - 监控数据流完整性和延迟的审计系统。
如果不需要GUI,还有: