如何检查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
执行上面命令,可以在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主机和端口:
我们能在左侧面板上看到正在运行的代理服务,点击节点可以查看更多细节。
总结
本文介绍了几种命令行方法:zookeeper命令、kafka的AdminClient、kcat工具以及UI方法查看kafka服务的运行状态。
相关文章
- 直接在代码里面对list集合进行分页
- .NET Framework 4.5新特性详解
- 大数据的简要介绍
- 大数据的由来
- 高斯混合模型的自然梯度变量推理
- timing-wheel 仿Kafka实现的时间轮算法
- 使用Navicat软件连接自建数据库(Linux系统)
- 那一天,我被Redis主从架构支配的恐惧
- Redis 深入了解键的过期时间
- C#使用委托调用实现用户端等待闪屏
- 基于流计算 Oceanus 和 Elasticsearch Service 构建百亿级实时监控系统
- GRAND | 转录调控网络预测数据库
- JFreeChart API中文文档
- 临床相关突变查询数据库
- TIGER | 人类胰岛基因变化查询数据库
- 视频边缘计算网关EasyNVR在视频整体监控解决方案中的应用分析
- Apache Arrow - 大数据在数据湖后的下一个风向标
- 常见的电商数据指标体系
- AKShare-艺人数据-艺人流量价值
- MySQL中多表联合查询与子查询的这些区别,你可能不知道!