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

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

   数栈君   发表于 2023-08-04 10:01  445  0

客户端应用程序使用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

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

lw.commands.whitelist=dump

当然也可以是使用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);
    }
}

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

public boolean verifyConnection() throws ExecutionException, InterruptedException {
    Collection<Node> nodes = this.client.describeCluster()
        .nodes()
        .get();
    return nodes != null && nodes.size() > 0;
}

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

@Test
void givenKafkaIsRunning_whenCheckedForConnection_thenConnectionIsVerified() throws Exception {
    boolean alive = kafkaAdminClient.verifyConnection();
    assertThat(alive).isTrue();
}

使用kcat 工具

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

sudo apt-get update
sudo apt-get install kafkacat

可以通过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)

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

使用UI工具

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

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/2862fbd89b5c7de5b342d178e6898711..jpg
  

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

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

免责申明:

本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!

《数据治理行业实践白皮书》下载地址:https://fs80.cn/4w2atu

《数栈V6.0产品白皮书》下载地址:
https://fs80.cn/cw0iw1

想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:
https://www.dtstack.com/?src=bbs

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:
https://github.com/DTStack


0条评论
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料
钉钉扫码加入技术交流群