Kafka-Broker Spread,Broker Skewed,Broker Leader Skewed指标含义

本文旨在深入探讨Kafka的BrokerSpread指标,通过kafka-eagle的源码分析,结合实例解释其含义。作者试图弥补网上资料的不足,帮助读者更透彻地理解Kafka集群的监控关键点。

Kafka 几个监控指标的含义

网上也有很多文章讲解这些个指标的含义,但总感觉还不够透彻。至少我是一知半解的。我查看了kafka eagle的源码,再举一些栗子来说明。

Broker Spread

引用

kafka-eagle几个指标含义

你提到的 `kafka-broker1`、`kafka-broker2`、`kafka-broker3` 是你为 Kafka 集群中的三台 broker 主机配置的别名(host alias),这些别名是你在本地 `/etc/hosts` 文件中定义的,用于将 IP 地址映射为主机名,方便 Kerberos 认证和 Kafka 配置。 --- ## 🧩 问题:`kafka-broker1` 怎么获取? 你问的 `kafka-broker1` 是你本地定义的主机名(别名),它本身不是“获取”的对象,而是你为 Kafka broker 的 IP 地址 `25.45.48.105` 所起的主机名。它的作用是: - 用于 Kerberos 认证(principal 通常为 `kafka/kafka-broker1@REALM`) - 用于 Kafka 客户端连接 Kafka broker - 用于服务间通信时使用主机名而非 IP --- ## ✅ 如何确保 `kafka-broker1` 可用? ### 1. 确保 `/etc/hosts` 中已配置 在你的客户端机器(运行 Kafka 消费者或生产者的机器)上,确保 `/etc/hosts` 文件中包含如下内容: ```bash 25.45.48.105 kafka-broker1 25.45.48.191 kafka-broker2 25.45.49.19 kafka-broker3 ``` > ✅ **注意:** 如果你是在 Windows 上开发,编辑的是 `C:\Windows\System32\drivers\etc\hosts` 文件。 --- ### 2. 验证 `kafka-broker1` 是否能解析 你可以使用以下命令验证主机名是否解析正确: #### Linux / Mac: ```bash ping kafka-broker1 nslookup kafka-broker1 ``` #### Windows: ```cmd ping kafka-broker1 nslookup kafka-broker1 ``` 如果能成功解析到 `25.45.48.105`,说明配置成功。 --- ## ✅ 如何获取 Kafka broker 的 `kafka-broker1` 的 Kerberos principal? Kafka broker 的 principal 通常形如: ``` kafka/kafka-broker1@HADOOP.COM ``` 你需要从 Kerberos KDC 管理员处获取该 principal 的 keytab 文件,或者使用以下命令在 KDC 上创建: ```bash # 在 KDC 服务器上执行 ktutil add -p sh_sjzt_dwzy@HADOOP.COM -k kafka-broker1.keytab ``` 然后将该 keytab 文件拷贝到 Kafka broker 节点上,并在 Kafka broker 的配置中指定: ```properties sasl.jaas.config=com.sun.security.auth.module.Krb5LoginModule required \ useKeyTab=true \ storeKey=true \ keyTab="/path/to/kafka.keytab" \ principal="kafka/kafka-broker1@HADOOP.COM"; ``` --- ## ✅ Kafka broker 如何配置 `kafka-broker1` 的主机名? 在 Kafka broker 的 `server.properties` 文件中,你需要确保以下配置项使用了主机名而不是 IP: ```properties # Kafka broker 的监听地址 listeners=PLAINTEXT://kafka-broker1:21007 # 对外广播的地址(其他客户端连接时使用) advertised.listeners=PLAINTEXT://kafka-broker1:21007 ``` > ⚠️ 如果你使用 IP 地址而不是主机名,Kerberos 认证将失败。 --- ## ✅ Kafka 客户端如何使用 `kafka-broker1` 在 Kafka 客户端(消费者或生产者)配置中,使用如下方式连接: ```yaml mrs: kafka: bootstrap-servers: kafka-broker1:21007,kafka-broker2:21007,kafka-broker3:21007 security-protocol: SASL_PLAINTEXT sasl-kerberos-service-name: kafka ``` 并在 JAAS 配置中指定你的用户 principal 和 keytab 文件: ```java props.put("sasl.jaas.config", "com.sun.security.auth.module.Krb5LoginModule required " + "useKeyTab=true " + "storeKey=true " + "keyTab=\"/path/to/user.keytab\" " + "principal=\"sh_sjzt_dwzy@HADOOP.COM\";"); ``` --- ## ✅ 示例:完整的 Kafka 消费者 Java 代码(使用主机名) ```java import org.apache.kafka.clients.consumer.*; import org.apache.kafka.common.serialization.StringDeserializer; import java.time.Duration; import java.util.Collections; import java.util.Properties; public class KafkaConsumerExample { public static void main(String[] args) { Properties props = new Properties(); props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "kafka-broker1:21007"); props.put(ConsumerConfig.GROUP_ID_CONFIG, "test-group"); props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName()); props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName()); props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest"); // Kerberos 配置 props.put("security.protocol", "SASL_PLAINTEXT"); props.put("sasl.kerberos.service.name", "kafka"); props.put("sasl.jaas.config", "com.sun.security.auth.module.Krb5LoginModule required " + "useKeyTab=true " + "storeKey=true " + "keyTab=\"/path/to/user.keytab\" " + "principal=\"sh_sjzt_dwzy@HADOOP.COM\";"); Consumer<String, String> consumer = new KafkaConsumer<>(props); consumer.subscribe(Collections.singletonList("xx")); try { while (true) { ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100)); for (ConsumerRecord<String, String> record : records) { System.out.printf("Received: %s (Topic: %s, Partition: %d, Offset: %d)%n", record.value(), record.topic(), record.partition(), record.offset()); } } } finally { consumer.close(); } } } ``` --- ## ✅ 总结 | 目标 | 操作 | |------|------| | 使用 `kafka-broker1` | 在 `/etc/hosts` 中配置 IP 到主机名的映射 | | 验证主机名是否可用 | 使用 `ping`, `nslookup`, `dig` | | 获取 Kafka broker 的 principal | 从 KDC 管理员获取 `kafka/kafka-broker1@REALM` 的 keytab | | Kafka broker 配置 | 使用主机名配置 `listeners` 和 `advertised.listeners` | | Kafka 客户端配置 | 使用主机名连接 Kafka,配置 Kerberos JAAS | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值