PostgreSQL × Debezium × Kafka CDC(Change Data Capture)监控体系

生产级的全链路 CDC(Change Data Capture)监控体系,涵盖:

  • Debezium 端

  • Kafka 端

  • PostgreSQL 端

  • 下游消费端

  • 运行时参数

  • 容量压力

  • 延迟链路


🧭 CDC 全链路必监控指标

CDC 管道一般分为:

复制代码
PostgreSQL → WAL → Debezium Connector → Kafka → 下游消费者

因此监控分成 5 大类:


1️⃣ 数据库端(PostgreSQL)监控

CDC 的根源在数据库,因此 PG 的监控非常关键。

🔸 必须监控的 PostgreSQL 指标:

指标 意义 原因
WAL 生成速率(bytes/sec) 单位时间产生日志量 WAL 激增会导致 Debezium backlog
WAL 段积压(Replication Slot Lag) Debezium 未用完的 WAL 字节数 最重要指标之一,表示 Debezium 是否追上数据库
PG Replication Slot count CDC slot 是否快满 超过 max_slot 会导致数据库阻塞
WAL 文件堆积 是否无限增长(败坏磁盘) Debezium 延迟会导致 WAL 无法被回收
Checkpoint 延迟 PG 性能波动 Checkpoint 慢会造成 WAL 雪崩式增长
数据库负载(CPU/IO) 性能瓶颈 会影响 WAL 写入速度与 Debezium 延迟
长事务 WAL 日志无法被 truncate 长事务是 CDC 的天敌,会撑爆磁盘

推荐 Prometheus exporter

  • postgres_exporter

  • pg_stat_replication(用于 WAL slot lag)


2️⃣ Debezium Connector 端监控

这是 CDC 的核心环节。

🔸 Debezium 必监控指标:

指标 含义/为何重要
CDC 延迟(DB → Debezium) 你的上一条回答:payload.ts_ms - payload.source.ts_ms
WAL 位点滞后(LSN Lag) Debezium 与数据库进度的真实距离
Debezium Lag in Millis Debezium 暴露的标准 lag 指标
Connector Task 状态 任务是否停止、fail、重启
Error Count / Exception Rate 是否发生解析错误或任务崩溃
Queue size / Buffer usage Debezium 内部队列满了会阻塞 CDC
Heartbeat 成功率 判断 pipeline 是否卡死
重启次数 严重不稳定信号
事务大小(batch size) 大事务会卡 Debezium pipeline 秒级甚至分钟

Debezium 自带指标(JMX):

  • debezium.source.stats.*

  • debezium.task.queueRemainingCapacity

  • debezium.task.lastProcessingDurationMs


3️⃣ Kafka 端监控(CDC 的最后一公里)

Kafka 的性能直接影响整个 CDC 延迟。

🔸 必监控 Kafka 指标

指标 为什么要监控
Topic 写入延迟(broker side) Kafka 负载高会导致 CDC 暂停/堆积
Broker 消息堆积(Lag) 表示 Debezium 正在 block
ISR 同步状态 若 ISR 不健康,会影响 Kafka 写速度
Topic 大小 / 分区数量 是否需要扩容
Consumer Group Lag(下游) 下游消费压力与延迟来源
Broker CPU / I/O / 磁盘使用率 Kafka 慢会导致 CDC 延迟雪崩

推荐 exporter:

  • kafka_exporter / burrow

  • prometheus-kafka-adapter(若使用)


4️⃣ 下游消费者端监控(Sink 端)

Debezium 把消息推到 Kafka 后,下游消费速度是否匹配也非常关键。

下游必须监控:

指标 说明
Consumer Lag 下游是否落后
处理速度 TPS 下游消费能力
消费错误率 / 重试次数 下游逻辑错误不会影响 Debezium,但会产生延迟
Sink 写入延迟(ES / MySQL / Redis ...) 例如写目标库失败导致慢消费
是否出现阻塞批次(slow batch) 大表大事务会导致反压

5️⃣ 全链路延迟监控(最重要的部分)

你可以通过 Debezium 事件中的三个时间字段构建:

1. DB → Debezium 延迟

复制代码
cdc_delay_ms = payload.ts_ms - payload.source.ts_ms

表示 Debezium 是否追上数据库 WAL。


2. Debezium → Kafka 延迟

复制代码
kafka_delay_ms = kafka_timestamp - payload.ts_ms

Kafka timestamp 即 Kafka 内部写入时间。


3. DB → Kafka 总链路延迟

复制代码
end_to_end_delay_ms = kafka_timestamp - payload.source.ts_ms

用于 SLA 和全链路性能监控。


6️⃣ CDC 健康度监控(稳定性维度)

推荐监控:

指标 意义
Debezium 是否卡死(Heartbeat 失败) 无心跳表示 connector 无响应
Connector Task 是否 Unassigned 配置、权限、网络问题
Schema Registry 错误 schema 注册失败导致 CDC 中断(如 Kafka Connect + Schema 注册)
Restart Loop(重启风暴) 配置错误、低内存、JVM OOM

7️⃣ 数据质量监控(Data Quality)

CDC 的最终目的是保证"数据一致",所以你还可以加:

项目 意义
是否发生乱序事件(out of order) 大事务可能导致乱序
是否丢事件(most critical) 若下游数量与源库不一致需报警
Schema 演变失败监控 表结构改变时需要特别关注

多数公司都会在 CDC 管道外加一个 一致性校验服务 来比对源库 vs 目标库。


8️⃣ 资源监控(Host / JVM / Container)

包括:

  • CPU

  • 内存

  • GC 时间

  • JVM Heap 使用率

  • 线程数

  • 网络带宽

  • I/O 延迟

连接器本质上是一个 JVM 进程,非常依赖:

✔ GC 性能

✔ 线程池

✔ 内存大小

容易因为 GC 过长导致任务卡死或延迟猛涨。


🧱 最终总结:CDC 监控的 5 大关键能力

类别 核心目标
数据库端监控 保证 WAL 能持续生成并被回收
Debezium 端监控 保证 connector 不落后、不卡死
Kafka 端监控 保证消息能被及时写入 Kafka
下游消费监控 保证数据不堆积、不丢失
全链路延迟监控 识别延迟是来源于 DB、Debezium、Kafka 或下游

相关推荐
左灯右行的爱情12 小时前
Kafka专辑 : 生产者写入路径
分布式·kafka·linq
幺零九零零12 小时前
Windows + Docker + k6 + InfluxDB + Grafana
windows·docker·grafana
筑梦之路12 小时前
Prometheus启用认证——筑梦之路
prometheus
左灯右行的爱情14 小时前
Kafka专辑: 日志存储模型
分布式·kafka·linq
LB211214 小时前
Kafka笔记
分布式·kafka·linq
yenggd15 小时前
openEuler24.3源码包安装zabbix6.2
服务器·网络·zabbix
l1t16 小时前
postgresql 18版bytea 类型转换的改进
数据库·postgresql
岳麓丹枫00116 小时前
PostgreSQL 中 create database 中的注意事项
数据库·postgresql
梦想画家16 小时前
告别关键词!PostgreSQL+pgvector 玩转语义和图像检索
数据库·postgresql
、BeYourself17 小时前
✅ 宝塔 PostgreSQL 安装UUID指南
数据库·postgresql·springai