消费堆积是什么
当 Consumer Group 的消费进度落后于 Topic 的写入进度时,就会出现消费堆积。只看落后的 offset 数量,难以判断业务数据究竟晚了多久:相同的 offset 差值,在不同写入速率下可能对应不同的时间延迟。 对于使用 Kafka classic group protocol 的 Consumer Group,AutoMQ BYOC 数据面(5.5.0 及以上)提供 offset 距离和估算时间延迟两个指标。消费堆积指标与维度
两个指标都以group、topic、partition 标识一条时间序列,表示某个 Consumer Group 在某个 Topic Partition 上的消费进度。
-1 后,对 offset 距离求和;时间延迟取各 Partition 的最大值,不相加。
计算原理与局限
AutoMQ 周期性读取 Consumer Group 的已提交 offset 和 Partition 的 LEO,在同一轮采集中计算 offset 距离。时间延迟则利用写入和读取过程中采样的(offset, timestamp),通过内存中的稀疏参考点估算已提交 offset 的 timestamp。
Topic 使用 LogAppendTime 时,时间延迟约为当前时间与该估算 timestamp 的差。使用 CreateTime 时,指标反映消息时间戳的跨度,不等于消息距当前时间的年龄。
这些指标用于观察趋势和定位堆积,不能当作精确的待消费消息数或端到端消费延迟。Compaction、事务和 offset 空洞会影响 offset 距离与实际消息数的对应关系;采样和插值会影响时间估算。
Offset 指标为 -1 表示本轮无法获取 LEO;时间指标为 -1 还可能是缺少可用的 timestamp 参考点。-1 不能视为零堆积。没有时间序列时,还应检查该 Group 是否提交过 offset,以及指标采集是否正常。
用于大盘和告警
你可以将这两个指标接入 Grafana 等监控系统,按 Group、Topic 或 Partition 配置大盘,并根据业务可接受的堆积程度设置告警阈值。配置 Group 级视图时,offset 距离按 Partition 求和,时间延迟取最慢 Partition;同时关注-1,避免未知值被汇总结果掩盖。
例如:
- 大盘: 查看
order-processorGroup 消费ordersTopic 的情况时,分别展示各 Partition offset 距离之和、最大估算时间延迟,以及时间延迟为-1的 Partition 数量。汇总值升高后,可以下钻到具体 Partition。 - 告警: 如果
orders使用LogAppendTime,且业务希望在估算时间延迟超过 5 分钟时收到预警,可以在最慢 Partition 的时间延迟持续 5 分钟高于300000毫秒时触发告警。再为持续出现的-1单独设置告警,避免无法估算时误以为延迟正常。