Kafka 消息消费工具(从特定时间戳开始消费)

Kafka消息消费工具使用说明文档

脚本概述

由于Kafka无法直接根据时间戳过滤查询,因此,开发了一个shell脚本,先根据时间戳查询出各个分区中对应的偏移量是多少,然后根据每个分区的偏移量进行消费,实现过滤查询,同时支持消息内容的模糊检索,比如我的这个脚本名称是kafka_consumer.sh,我现在要查询TOPIC名称为:TOPIC_TEST的1764175200000这个时间后的数据并只将这部分数据中包含 ‘已上报’ 字符串的内容输出,只需要执行 ./kafka_consumer.sh TOPIC_TEST timestamp=1764175200000 search_str='已上报' 即可。

基本功能

  • ✅ 消费指定Topic的消息
  • ✅ 从特定时间戳开始消费
  • ✅ 消息内容模糊搜索
  • ✅ 多分区并行消费
  • ✅ 彩色输出和友好提示

环境要求

系统要求

  • Linux/Unix 系统
  • Bash 4.0+

Kafka要求

  • Kafka 2.12+ 版本

  • 需要以下脚本文件:

    • kafka-console-consumer.sh
    • kafka-get-offsets.sh(用于时间戳功能)

配置说明

脚本配置变量

bash

BOOTSTRAP_SERVER="192.168.1.1:9092"        # Kafka集群地址
KAFKA_BIN_PATH="/data/kafka/kafka_2.12-3.8.0/bin"  # Kafka二进制文件路径

使用方法

1. 基础用法 - 从头消费整个Topic

bash

./kafka_consumer.sh TOPIC_TEST

2. 从指定时间戳开始消费

bash

# 从特定时间戳(毫秒)开始消费
./kafka_consumer.sh TOPIC_TEST timestamp=1763615660670

3. 搜索包含特定字符串的消息

bash

# 消费并过滤包含指定字符串的消息
./kafka_consumer.sh TOPIC_TEST search_str='已上报'

4. 组合使用 - 从时间戳开始并搜索

bash

# 从指定时间戳开始,并搜索特定字符串
./kafka_consumer.sh TOPIC_TEST timestamp=1763615660670 search_str='已上报'

参数详解

必需参数

  • topic_name:要消费的Kafka Topic名称

可选参数

  • timestamp:时间戳(毫秒),从该时间点开始消费
  • search_str:要模糊搜索的字符串,支持grep语法

输出格式

脚本会显示每条消息的详细信息:

text

分区 0 - 开始消费 (偏移量: 12345)
================================================
Timestamp: 1691234567890, Partition: 0, Offset: 12345, Message: {JSON数据}

使用示例

示例1:调试特定时间段的消息

bash

# 查看从今天上午10点开始的所有消息
./kafka_consumer.sh TOPIC_TEST timestamp=1691235600000

示例2:查找特定设备的消息

bash

# 查找包含特定设备ID的所有历史消息
./kafka_consumer.sh TOPIC_TEST search_str='869406068012219'

示例3:故障排查

bash

# 从故障发生时间点开始,查找相关错误信息
./kafka_consumer.sh TOPIC_TEST timestamp=1763615660670 search_str='ERROR'

注意事项

1. 权限要求

  • 需要有执行脚本的权限
  • 需要能够访问Kafka集群
  • 需要有读取Topic的权限

2. 时间戳说明

  • 时间戳必须是毫秒格式
  • 可以使用在线工具或以下命令获取时间戳:
    bash
# 当前时间戳(毫秒)
date +%s%3N

# 指定时间的时间戳
date -d "2023-01-01 10:00:00" +%s%3N

3. 搜索功能

  • 使用grep进行模糊匹配
  • 支持正则表达式
  • 搜索字符串需要用单引号包裹,避免特殊字符被解析

4. 停止消费

  • Ctrl+C 停止所有消费进程
  • 脚本会自动清理后台进程
posted @ 2025-11-27 19:44  Giraffe&  阅读(4)  评论(0)    收藏  举报