目录标题
Kafka如何查看topic的数据
明白了,你希望在 生产环境中 查看 Kafka 的:
- Topic 的消息内容(Message Content)
- Topic 的元信息(Metadata)
我们分两部分说明,并以不影响线上服务为前提,给出 稳定可靠的方法。
✅ 一、查看 Kafka Topic 的消息内容(生产环境)
✅ 方法1:使用 kafka-console-consumer.sh
(官方工具,推荐)
kafka-console-consumer.sh \
--bootstrap-server <broker>:9092 \
--topic <your_topic> \
--from-beginning \
--max-messages 10
说明:
--from-beginning
从头消费历史消息(如果保留着)--max-messages
避免无限消费- 生产环境建议加上
--timeout-ms
或--max-messages
限制读取
示例:
kafka-console-consumer.sh \
--bootstrap-server kafka-prod1:9092 \
--topic order-events \
--from-beginning \
--max-messages 5
✅ 方法2:使用 kafkacat
/ kcat
工具(非常轻量、实用)
kcat -b <broker>:9092 -t <topic> -C -c 5 -o beginning
说明:
-C
:consumer 模式-c 5
:消费 5 条后退出-o beginning
:从最早 offset 开始消费
示例:
kcat -b kafka-prod1:9092 -t user-login -C -c 5 -o -5
✅ 方法3:程序方式(Python 示例)
from kafka import KafkaConsumer
consumer = KafkaConsumer(
'your_topic',
bootstrap_servers=['kafka-prod1:9092'],
auto_offset_reset='earliest',
enable_auto_commit=False,
consumer_timeout_ms=10000
)
for msg in consumer:
print(f"offset={msg.offset}, value={msg.value.decode()}")
✅ 二、查看 Kafka Topic 的元信息(分区、副本、ISR 等)
✅ 方法1:使用 kafka-topics.sh
kafka-topics.sh \
--bootstrap-server <broker>:9092 \
--describe \
--topic <your_topic>
示例输出:
Topic: order-events PartitionCount: 3 ReplicationFactor: 2
Partition: 0 Leader: 1 Replicas: 1,2 Isr: 1,2
Partition: 1 Leader: 2 Replicas: 2,3 Isr: 2,3
解释:
- PartitionCount:分区数量
- ReplicationFactor:副本因子
- Leader:当前主分区的 broker id
- ISR:in-sync replicas,正在同步的副本
✅ 方法2:查看分区 offset 范围(判断 topic 数据量)
kafka-run-class.sh kafka.tools.GetOffsetShell \
--broker-list <broker>:9092 \
--topic <your_topic> \
--time -1
--time -1
获取最新 offset--time -2
获取最早 offset
也可配合 grep + awk 得到总条数。
✅ 三、查看消费进度(Consumer Lag)
kafka-consumer-groups.sh \
--bootstrap-server <broker>:9092 \
--describe \
--group <consumer_group_id>
会输出每个分区的:
- 当前消费 offset
- log end offset(最新)
- lag(滞后条数)
✅ 四、推荐使用可视化工具(生产环境建议本地只读权限)
常用 Kafka Web 工具(自建或部署只读版):
工具 | 特点 |
---|---|
AKHQ | 支持 Topic 浏览、ConsumerGroup 管理、消息查看 |
Kafdrop | 轻量,消息查看方便 |
Conduktor | 商业 GUI 工具,功能强大,适合多集群 |
Kafka Tool | 桌面 GUI |
示意图(AKHQ 示例):
- 可以查看每个 topic 消息内容(支持 key/value 解析)
- 还能看到 ISR 状态、消费进度
🛡️ 安全提示(生产环境操作建议)
- 给操作账号只读权限(避免误删除)
- 小批量拉取数据(避免影响性能)
- 注意 topic 的数据保留策略(防止过期)
📌 如果你能提供以下信息,我可以生成具体命令:
- Kafka 版本(如 2.8 / 3.4)
- Broker 地址
- 你想查看的 Topic 名称
- 是否能使用
kcat
/AKHQ
等工具
生产环境专用的一键 Kafka Topic 查看命令和脚本
好的,我们来为你生成生产环境专用的一键 Kafka Topic 查看命令和脚本,包含:
- 消息查看(可选拉多少条)
- Topic 元信息查看
- 分区 offset 查看
- 消费组 lag 查看
- 打包为一键脚本
请你确认以下信息或补充(我已用常见默认值填入,可修改):
项 | 默认值 | 用于命令中 |
---|---|---|
Kafka 版本 | 2.8+ | 支持 Kafka 原生命令 |
Broker 地址 | kafka-prod1:9092 | --bootstrap-server |
Topic 名称 | order-events | 替换为实际 topic |
Consumer Group ID | order-events-group | 查看消费延迟用 |
查看消息条数 | 10 | 控制拉取量 |
工具目录 | /opt/kafka/bin/ | Kafka 安装目录 |
✅ 一键命令集(你也可以保存为 check_kafka_topic.sh
)
#!/bin/bash
KAFKA_BIN="/opt/kafka/bin"
BROKER="`hostname`:9092"
TOPIC="order-events"
GROUP="order-events-group"
MAX_MESSAGES=10
echo "🚩 1. Topic 元信息:"
$KAFKA_BIN/kafka-topics.sh --bootstrap-server $BROKER --describe --topic $TOPIC
echo
echo "🚩 2. Topic 分区 Offset 范围:"
$KAFKA_BIN/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list $BROKER --topic $TOPIC --time -2
$KAFKA_BIN/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list $BROKER --topic $TOPIC --time -1
echo
echo "🚩 3. 消费组消费进度(Lag):"
$KAFKA_BIN/kafka-consumer-groups.sh --bootstrap-server $BROKER --describe --group $GROUP
echo
echo "🚩 4. 拉取消息内容($MAX_MESSAGES 条):"
$KAFKA_BIN/kafka-console-consumer.sh \
--bootstrap-server $BROKER \
--topic $TOPIC \
--from-beginning \
--max-messages $MAX_MESSAGES
✅ 使用方式
- 保存为
check_kafka_topic.sh
- 赋予执行权限:
chmod +x check_kafka_topic.sh
- 执行:
./check_kafka_topic.sh
✅ 脚本执行效果(示例)
🚩 1. Topic 元信息:
Topic: order-events PartitionCount: 3 ReplicationFactor: 2
Partition: 0 Leader: 1 Replicas: 1,2 Isr: 1,2
...
🚩 2. Topic 分区 Offset 范围:
order-events:0:0
order-events:1:0
order-events:0:13000
order-events:1:12995
...
🚩 3. 消费组消费进度(Lag):
TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG
order-events 0 12000 13000 100
...
🚩 4. 拉取消息内容(10 条):
{"orderId": 1001, "status": "paid", ...}
...
🔐 附加建议(生产环境):
- 建议使用专用 Kafka 账号,只读 ACL(避免误删 topic)
- 拉消息尽量加
--max-messages
避免长时间消费影响服务 - 可以加日志输出(
tee
)保存结果供审计
模拟数据
$KAFKA_BIN/kafka-console-producer.sh --bootstrap-server $BROKER --topic $TOPIC
sh-4.4# /opt/kafka/bin/kafka-console-producer.sh --bootstrap-server 10.10.180.234:3150 --topic bpx --producer.config /opt/kafka/kafka.properties
1
>>
sh-4.4# cat > /opt/kafka/kafka.properties
security.protocol=SASL_PLAINTEXT
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username='kafka-ae5da948-bpx-user' password='V1TSEVRgjDhz8ya2mkOlQagn0J6JRN2iwxEy12ZM4nir0lMXFNJtZwE)YsP`vWn|';
sasl.mechanism=SCRAM-SHA-512
sh-4.4# cat /opt/kafka/kafka.properties
security.protocol=SASL_PLAINTEXT
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username='kafka-ae5da948-bpx-user' password='V1TSEVRgjDhz8ya2mkOlQagn0J6JRN2iwxEy12ZM4nir0lMXFNJtZwE)YsP`vWn|';
sasl.mechanism=SCRAM-SHA-512
sh-4.4# /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server 10.10.180.234:3150 --topic bpx --from-beginning --consumer.config /opt/kafka/kafka.properties
1