• 如何检查Apache Kafka服务运行状态


    客户端应用程序使用Kafka主要分为两种类型,即生产者和消费者。无论哪种都需要kafka服务处于运行状态,本文介绍几种方法检查kafka服务器的运行状态。

    使用Zookeeper 命令

    检查活动的kafka服务的最快方法之一是使用zookeeper的dump命令。dump是管理zookeeper服务器的一个4LW命令。

    现在我们使用nc命令发送dump给zookeeper服务器,默认为2181端口:

    $ echo dump | nc localhost 2181 | grep -i broker | xargs
    /brokers/ids/0
    
    • 1
    • 2

    执行上面命令,可以在zookeeper上看到已注册的临时代理ID,如果没有临时id存在,则说明没有代理节点正在运行。
    需要提醒的是,dump命令需要显示配置才允许执行。需要在 zookeeper.properties 或 zoo.cfg增加白名单命令列表:

    lw.commands.whitelist=dump
    
    • 1

    当然也可以是使用Zookeeper APIs 查看活动代理服务器

    使用Apache kafka AdminClient

    如果生产者和消费者是java应用程序,那么可以使用Apache Kafka AdminClent类检查kafka服务器是否处于运行状态。

    下面首先定义KafkaAdminClient类包装AdminClient实例,这样我们就能够快速进行测试:

    public class KafkaAdminClient {
        private final AdminClient client;
    
        public KafkaAdminClient(String bootstrap) {
            Properties props = new Properties();
            props.put("bootstrap.servers", bootstrap);
            props.put("request.timeout.ms", 3000);
            props.put("connections.max.idle.ms", 5000);
    
            this.client = AdminClient.create(props);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    接下来在KafkaAdminClient类中定义verifyConnection() 方法验证客户端是否能连接上正在运行的kafka服务端:

    public boolean verifyConnection() throws ExecutionException, InterruptedException {
        Collection nodes = this.client.describeCluster()
          .nodes()
          .get();
        return nodes != null && nodes.size() > 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    最后通过连接kafka集群测试代码:

    @Test
    void givenKafkaIsRunning_whenCheckedForConnection_thenConnectionIsVerified() throws Exception {
        boolean alive = kafkaAdminClient.verifyConnection();
        assertThat(alive).isTrue();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    使用kcat 工具

    kcat,又称为 kafkacat,是一款非JVM的Kafka消息生产和消费的命令行工具,适用于 Kafka 0.8 及以上版本。ubuntu 上安装方式:

    sudo apt-get update
    sudo apt-get install kafkacat
    
    • 1
    • 2

    可以通过kafkacat命令查看kafka服务运行状态,使用-L选项显示已经存在主题的元数据:

     kafkacat -b localhost:29092 -t demo-topic -L
    
    Metadata for demo-topic (from broker -1: localhost:29092/bootstrap):
     3 brokers:
      broker 2 at localhost:29092
      broker 3 at localhost:39092
      broker 1 at localhost:19092
     1 topics:
      topic "demo-topic" with 0 partitions: Broker: Leader not available (try again)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    从输出信息可以看到正在运行的kafka代理。

    使用UI工具

    对于开发环境的验证应用我们可以使用UI工具,如Offset Explorer,但这种方法不建议在生产环境使用。下面使用Offset Explorer连接kafka集群,输入zookeeper主机和端口:

    在这里插入图片描述

    我们能在左侧面板上看到正在运行的代理服务,点击节点可以查看更多细节。

    总结

    本文介绍了几种命令行方法:zookeeper命令、kafka的AdminClient、kcat工具以及UI方法查看kafka服务的运行状态。

  • 相关阅读:
    【斗破年番】官方终于回应,萧潇删减不属实,两线索佐证,彩鳞咖位不会降
    OS复习笔记ch7-2
    深入探索Linux零拷贝原理
    【MOL PLANT PATHOL】苹果MdMRLK2 通过抑制防御反应和过敏反应负向调节对V. mali的抗性
    把文件上传到Gitee的详细步骤
    Springboot毕设项目动漫论坛5it8x(java+VUE+Mybatis+Maven+Mysql)
    FullCalendarDemo5 控件的实例讲解—拖拽实现值班排班(一)
    macOS 中 Apple Distribution 与 Apple Development 证书不受信任解决方法
    October 2019 Twice SQL Injection
    AQS源码阅读与强软弱虚4种引用以及ThreadLocal原理与源码
  • 原文地址:https://blog.csdn.net/neweastsun/article/details/127444850