要检察 Kafka 集群中 Broker 的数量,可以使用以下几种方法:
方法 1:通过 Kafka 自带命令检察
运行以下命令可以列出 Kafka 集群中的全部 Broker:
- kafka-broker-api-versions.sh --bootstrap-server <broker_address>
复制代码 输出示例:
- 1, brokerId=0, host=broker0.example.com, port=9092
- 2, brokerId=1, host=broker1.example.com, port=9092
- 3, brokerId=2, host=broker2.example.com, port=9092
复制代码 根据列出的 Broker ID,计算 Broker 的总数量。
方法 2:通过 Zookeeper 检察(假如使用 Zookeeper)
假如 Kafka 使用 Zookeeper,可以直接查询 Zookeeper 获取 Broker 列表:
- 登录到 Zookeeper CLI:
- zookeeper-shell.sh <zookeeper_address>
复制代码 - 查询 Broker 节点:输出示例:结果表现有 3 个 Broker。
方法 3:通过 Kafka Admin API 检察
使用 Kafka Admin API 列出全部 Broker:
示例代码(Java 或 Python)
Java 示例:
- import org.apache.kafka.clients.admin.AdminClient;
- import org.apache.kafka.clients.admin.AdminClientConfig;
- import java.util.Properties;
- public class KafkaBrokers {
- public static void main(String[] args) {
- Properties props = new Properties();
- props.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, "broker_address:9092");
- try (AdminClient adminClient = AdminClient.create(props)) {
- System.out.println("Brokers: " + adminClient.describeCluster().nodes().get().size());
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
复制代码 Python 示例:
- from kafka.admin import KafkaAdminClient
- admin_client = KafkaAdminClient(bootstrap_servers="broker_address:9092")
- brokers = admin_client.describe_cluster().nodes
- print("Number of Brokers:", len(brokers))
复制代码 方法 4:通过监控工具(如 Kafka Manager 或 Prometheus)
- 假如使用 Kafka Manager、Prometheus 或类似工具,可以直接检察 Broker 数量。
- 例如,在 Prometheus 中,查询指标 kafka_server_kafkaserver_brokerstate 来检察各个 Broker 的状态。
方法 5:通过 Kafka Topic 命令查抄 Broker 信息
运行以下命令可以间接获取 Broker 信息:
- kafka-topics.sh --bootstrap-server <broker_address> --list
复制代码 通过列出的 Topic 形貌可以确认 Broker 数量。
以上方法中,使用 Kafka CLI 或 Zookeeper 是最快捷的方法。假如有其他需求或环境限定,请告知,我可以提供更适配的解决方案。
kafka_server_kafkaserver_brokerstate
kafka_server_kafkaserver_brokerstate 是 Kafka 集群中每个 Broker 状态的指标。通过此指标可以监控 Kafka Broker 的运行状态,通常用于 Prometheus 或其他监控工具中。
指标寄义
- kafka_server_kafkaserver_brokerstate 用于标识 Kafka Broker 的当前状态,其值通常是一个数字。
- 每个 Broker 的状态由数字表现,寄义如下:
值状态名称说明0NotRunningBroker 未运行或已制止。1StartingBroker 正在启动,但尚未完全启动完成。2RecoveringFromUncleanShutdownBroker 正在从非正常关闭状态中恢复。3RunningAsBrokerBroker 正常运行,且已加入集群并提供服务。4PendingControlledShutdownBroker 正在等待受控关闭(大概因集群重平衡或手动制止)。 使用场景
- 检测 Broker 状态:
- 值为 3 表现正常状态。假如某个 Broker 的状态值不是 3,大概需要进行排查。
- 监控集群康健:
- 通过连续监控此指标,可以快速检测集群中是否有 Broker 处于异常状态,例如未运行、正在恢复等。
- 触发告警:
- 设置告警规则,如:
- kafka_server_kafkaserver_brokerstate != 3
时触发告警。
- 统计状态为 3 的 Broker 数量,假如少于预期的 Broker 数量,则触发集群康健告警。
Prometheus 示例查询
- 单个 Broker 状态:
- kafka_server_kafkaserver_brokerstate{instance="broker1:9092"}
复制代码 - 集群中非正常状态的 Broker:
- kafka_server_kafkaserver_brokerstate != 3
复制代码 - 正常运行的 Broker 数量:
- count(kafka_server_kafkaserver_brokerstate == 3)
复制代码 问题排查
- 状态值为 0(NotRunning):
- 确认 Broker 进程是否已启动。
- 查抄 Kafka 日志文件(server.log)是否存在异常。
- 查抄服务器的资源(CPU、内存、磁盘)是否不敷。
- 状态值为 2(RecoveringFromUncleanShutdown):
- 说明 Broker 之前大概因为非正常关闭(例如断电或强制杀掉进程)而进入恢复状态。
- 查抄 recovery.dirty.log.start.offset 和相关日志恢复进度。
- 状态值为 4(PendingControlledShutdown):
- 说明 Broker 正在执行受控关闭操纵,大概是因为手动制止 Broker 或触发了重平衡。
- 确认是否是预期的关闭操纵。
假如你在具体使用中遇到问题,可以提供更多上下文,我可以资助分析具体场景!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |