Kafka如何查看topic的数据

Kafka如何查看topic的数据

明白了,你希望在 生产环境中 查看 Kafka 的:

  1. Topic 的消息内容(Message Content)
  2. 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 查看命令和脚本,包含:

  1. 消息查看(可选拉多少条)
  2. Topic 元信息查看
  3. 分区 offset 查看
  4. 消费组 lag 查看
  5. 打包为一键脚本

请你确认以下信息或补充(我已用常见默认值填入,可修改):

默认值用于命令中
Kafka 版本2.8+支持 Kafka 原生命令
Broker 地址kafka-prod1:9092--bootstrap-server
Topic 名称order-events替换为实际 topic
Consumer Group IDorder-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

✅ 使用方式

  1. 保存为 check_kafka_topic.sh
  2. 赋予执行权限:
chmod +x check_kafka_topic.sh
  1. 执行:
./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

在这里插入图片描述

### 关于 'cache-loader' 模块未找到的解决方案 当遇到 `Syntax Error: Error: Cannot find module 'cache-loader'` 错误时,通常是因为某些依赖项未能正确安装或存在版本兼容性问题。以下是针对该问题的具体分析和解决方法: #### 1. 删除现有依赖并重新安装 由于部分依赖可能未完全下载或配置失败,建议清理当前环境中的依赖文件,并重新执行安装操作。 - **删除旧依赖** 进入项目根目录,运行以下命令以移除现有的 `node_modules` 文件夹以及锁定文件: ```bash rm -rf node_modules package-lock.json ``` - **重新安装依赖** 使用以下命令重新拉取所有必要的模块: ```bash npm install ``` 此过程会依据 `package.json` 配置自动解析所需依赖关系[^3]。 #### 2. 处理高版本 Node.js 和 NPM 的兼容性问题 如果使用的 Node.js 或 NPM 版本较高,则可能会触发上游依赖冲突的情况。此时可以通过指定参数来忽略此类警告并强制完成安装流程。 - 执行带选项的安装指令: ```bash npm install --legacy-peer-deps ``` 上述命令能够有效规避因新策略引入而导致的部分历史遗留库无法匹配的问题[^4]。 #### 3. 明确目标加载器及其关联插件的状态 确认是否遗漏了其他间接影响到构建链路的关键组件(例如 `sass-loader`, `style-loader`)。对于特定场景下的样式表预处理工具缺失情况也需要同步关注[^1]。 通过上述措施基本可以消除由缓存机制引发的相关异常状况;当然,在实际开发过程中还应定期更新全局管理软件至最新稳定版次从而减少不必要的麻烦发生几率。 ```javascript // 示例代码片段展示如何验证已修复后的服务端渲染功能是否恢复正常工作状态。 const express = require('express'); const path = require('path'); let app = express(); app.use(express.static(path.join(__dirname, './dist'))); app.listen(8080,function(){ console.log("Server is running on port 8080..."); }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值