如何构建高效的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访问即可。

https://github.com/yahoo/kafka-manager

也可以使用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 月)列表:

关于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,还有: