Apache SeaTunnel 3.0 从理论到实践 -第 11 章 生产运维与监控
章节定位:前 10 章讲了怎么搭、怎么配、怎么跑,本章讲怎么盯、怎么调、怎么修。SeaTunnel Zeta Engine 自带的监控面板 + Checkpoint 调优 + 故障排查手册 + 版本升级回退 SOP,全部锚定生产实战。特别关注 Zeta 特有的Pipeline 级容错、动态线程共享、无外部依赖(不需要 ZK/HDFS 做状态存储)这三个特性对运维的影响。
学习目标
- ✓ 能说出 SeaTunnel Web 监控面板 3.0 新特性 + Zeta Engine 核心指标;
- ✓ 能说出 Checkpoint 调优四件套(interval/timeout/min-pause/max-concurrent)+ Zeta Pipeline 级容错对 Checkpoint 的影响;
- ✓ 能说出 5 类典型故障的排查路径(提交冲突/Checkpoint 超时/Schema Evolution 失败/Consumer lag/Zeta Master failover);
- ✓ 能说出 SeaTunnel 版本升级顺序 + 回退预案;
- ✓ 能写出生产级运维 SOP(监控面板 + 告警阈值 + 日终对账 + 升级窗口)。
11.1 SeaTunnel Web 监控
SeaTunnel Web 是 3.0 自带的监控面板——不需要额外部署 Prometheus/Grafana,Zeta Master 自带 REST API + Web UI。3.0 比 2.3.13 新增了多 Pipeline 视图和Checkpoint 可视化。
11.1.1 启动与访问
# Zeta Standalone 模式下自动启动 SeaTunnel Web# 默认地址:http://localhost:8801# 配置在 seatunnel-server/conf/seatunnel.yaml# Zeta Cluster 模式下 Master 节点自动启动# 多 Master 集群选 Leader Master 访问11.1.2 Web UI 核心视图
| 视图 | 内容 | 3.0 新特性 |
|---|---|---|
| Jobs 列表 | 所有作业状态(RUNNING/FAILED/FINISHED)+ 启动时间 + 耗时 | ✓ 多 Pipeline 展开视图 |
| Job 详情 | Source/Transform/Sink 各组件 + 数据流向 + RowKind 比例 | ✓ RowKind 实时柱状图 |
| Pipeline 列表 | 每个作业拆分的所有 Pipeline + 各自并行度 + Checkpoint 状态 | ✓Pipeline 级独立状态 |
| Checkpoint 历史 | 每次 Checkpoint 的耗时/大小/触发原因 | ✓Checkpoint 可视化时间线 |
| Metrics | 吞吐量/延迟/背压/GC 等 JVM 指标 | - |
| Logs | Master/Worker 日志实时查看 | - |
11.1.3 Pipeline 级独立状态视图(3.0 新增)
Zeta Engine 的 Pipeline 级容错意味着一个作业拆分的多条 Pipeline 可以独立成功/失败——这是 Flink/Spark 适配层做不到的。3.0 Web UI 专门展示这个:
图 11-1 SeaTunnel Web Pipeline 级状态视图 Job: mysql_cdc_doris_paimon_dual (RUNNING) ├── Pipeline-1: vehicles → Doris (FAILED) ← Doris BE 挂了 │ ├── Checkpoint #47: SUCCESS (32s) │ └── Checkpoint #48: FAILED (timeout) └── Pipeline-2: vehicles → Paimon (RUNNING) ← 照常写入 ├── Checkpoint #47: SUCCESS (28s) └── Checkpoint #48: SUCCESS (25s)运维价值:Doris BE 挂了 → 只需要恢复 Pipeline-1 的 Checkpoint,Pipeline-2 不受影响继续写 Paimon——比 Flink 整作业回滚恢复快 10x+。
11.1.4 REST API 监控接口
SeaTunnel Web 提供 REST API,可以对接 Prometheus AlertManager / 钉钉 / 飞书告警:
# 列出所有作业状态curlhttp://localhost:8801/api/jobs# 查询某个 Pipeline 的 Checkpoint 历史curlhttp://localhost:8801/api/jobs/{jobId}/pipelines/{pipelineId}/checkpoints# 查询 Worker 节点状态curlhttp://localhost:8801/api/workers# 查询 Checkpoint 成功率(告警阈值:成功率 < 90% 时告警)curlhttp://localhost:8801/api/jobs/{jobId}/metrics?metric=checkpoint_success_ratePrometheus 抓取配置:SeaTunnel 3.0 暴露/metricsendpoint(JetMX 格式),Prometheus 可以直接 scrape。
11.2 Zeta Engine 核心监控指标
SeaTunnel Web UI 的底层数据来自 Zeta Engine 的 Metrics 系统。以下是运维最关心的10 个核心指标:
| 指标 | 含义 | 正常范围 | 告警阈值 |
|---|---|---|---|
| source.data.received | Source 每秒接收数据量 | 按 Source 吞吐 | < 预期吞吐 50% |
| sink.data.sent | Sink 每秒发送数据量 | ≈ source.data.received(无丢数) | < source 80% |
| checkpoint.duration | Checkpoint 耗时 | < 10s(流作业) | > 60s |
| checkpoint.success_rate | Checkpoint 成功率 | > 99% | < 90% |
| checkpoint.size | Checkpoint 大小 | 按状态大小 | > Worker 内存 80% |
| pipeline.backpressure | Pipeline 背压 | 0(无背压) | > 50% |
| jmv.memory.used | JVM 堆内存使用 | < 70% | > 85% |
| pipeline.thread.active | Pipeline 活跃线程数 | 按并行度 × 线程池大小 | > 线程池上限 90% |
| sink.flush.latency | Sink flush 延迟 | < 100ms | > 1s |
| cdc.consumer.lag | CDC 消费延迟(MySQL GTID/PG LSN) | < 10s | > 60s |
11.2.1 CDC Consumer Lag 监控
CDC 场景最关键的延迟指标——Kafka Offset Lag / MySQL GTID Lag / PG LSN Lag。SeaTunnel CDC Source 自动暴露:
Lag 计算: MySQL: MySQL SHOW MASTER STATUS → Executed_Gtid_Set - CDC Source 的最新 GTID PG: pg_current_wal_lsn() - CDC Source 的最新 LSN Kafka: kafka-consumer-groups.sh --describe → LAG 列车联网 CDC 告警阈值:
| 场景 | 正常 Lag | 告警阈值 |
|---|---|---|
| 实时看板 CDC | < 5s | > 30s |
| 湖仓 CDC | < 10s | > 60s |
| 大表初始化同步 | 允许小时级 | > 24h(初始化 24h 未完成) |
11.2.2 Sink Flush 延迟监控
Sink flush 延迟是衡量"数据从 Source 到 Sink 可见"的端到端延迟:
端到端延迟 = Source 接收时间 → Sink flush 完成时间 = Kafka lag(Source 到 SeaTunnel)+ SeaTunnel 处理延迟 + Sink flush 延迟各 Sink flush 延迟典型值:
| Sink | flush 延迟 | 说明 |
|---|---|---|
| Doris Sink (2PC) | 1~5s | Stream Load preCommit + commit |
| Doris Sink (非 2PC) | 1~2s | 直接 append |
| Paimon Sink | 2~10s | Checkpoint 触发 commit |
| Kafka Sink | < 100ms | Producer batch 发送 |
| ClickHouse Sink | 1~3s | HTTP 批量写入 |
| Fluss Sink | < 1s | Flink Runtime 写入 |
11.3 Checkpoint 调优
Checkpoint 是 Exactly-Once 的核心保障——快照越大、时间越长,Checkpoint 越容易超时。SeaTunnel Zeta Engine 的 Checkpoint 机制和 Flink 不同(Chandy-Lamport + Pipeline 级隔离),调优策略也有差异。
11.3.1 Checkpoint 四件套参数
| 参数 | 含义 | 默认 | 生产推荐 |
|---|---|---|---|
checkpoint.interval | Checkpoint 间隔 | 无(只设 checkpoint.timeout 则不做 Checkpoint) | 60000(60s) |
checkpoint.timeout | 单次 Checkpoint 超时 | - | 300000(5min) |
checkpoint.min-pause | 两次 Checkpoint 间最小暂停 | 0 | 10000(10s,避免连续 Checkpoint 打爆 Sink) |
checkpoint.max-concurrent | 最大并发 Checkpoint 数 | 1 | 1(Zeta Pipeline 级隔离,并发 Checkpoint 没必要) |
11.3.2 Zeta Engine Checkpoint vs Flink Checkpoint
| 维度 | Zeta Engine Checkpoint | Flink Checkpoint |
|---|---|---|
| 隔离级别 | Pipeline 级(一个作业多条 Pipeline 各自 Checkpoint) | Job 级(整个作业一起 Checkpoint) |
| 状态存储 | Worker 本地内存 + Master 元数据 | Flink State Backend(Heap/RocksDB/ForSt + External Storage) |
| Chandy-Lamport | ✓(Barrier 穿过数据流不暂停) | ✓(Barrier 机制相同) |
| 外部依赖 | 不需要 HDFS/S3(Zeta 无外部状态存储) | 需要 HDFS/S3 存 Checkpoint 快照 |
| 恢复方式 | 从上次 Checkpoint 继续,Pipeline 级可单独恢复 | 整作业从 Savepoint/Checkpoint 恢复 |
| 持久化 | 进程内,Worker 挂了 Checkpoint 丢(靠 job.retry.times 重试) | 持久化到外部存储,进程挂了不丢 |
Zeta Engine Checkpoint 硬约束:Worker 进程 Crash → 本地状态丢失 → 作业从上次 Checkpoint整体重试(不是 Pipeline 级)。Pipeline 级容错是运行时隔离(一个 Pipeline 挂了其他继续),不是崩溃恢复隔离(Worker Crash 后同一条作业的所有 Pipeline 一起恢复)。
11.3.3 Checkpoint 调优决策树
图 11-2 Checkpoint 调优决策树 Checkpoint 成功率低? ├── Checkpoint #1: SUCCESS (50s) │ Checkpoint #2: FAILED (timeout 300s) │ → 问题:Sink flush 太慢(Doris 2PC preCommit 超时) │ → 调优:增大 checkpoint.timeout 或减小 checkpoint.interval │ ├── Checkpoint #1: SUCCESS (120s) │ Checkpoint #2: SUCCESS (110s) │ → 问题:Checkpoint 间隔太短,Sink 还没刷完又来了新 Checkpoint │ → 调优:增大 checkpoint.min-pause(≥ 10s) │ └── Checkpoint #1: SUCCESS (5s) Checkpoint #2: SUCCESS (4s) Checkpoint #3: SUCCESS (5s) → 问题:Checkpoint 正常但频率太高 → 调优:增大 checkpoint.interval(比如 60s → 120s)11.3.4 Checkpoint 超时常见原因
| 原因 | 排查方法 | 解法 |
|---|---|---|
| Sink flush 太慢 | Doris 2PC preCommit / Paimon commit 卡住 | 减小 Sink batch.size / 增大 checkpoint.timeout |
| Pipeline 背压 | Web UI 看 pipeline.backpressure | 增大 Source/Sink parallelism |
| CDC 初始化扫描大表 | MySQL-CDC initial mode 扫 10 亿行 | 增大 checkpoint.timeout / 用 snapshot.split.size 切分 |
| Worker GC 频繁 | 看 Worker JVM 日志 Full GC | 增大 Worker 堆内存 / 启用 G1GC |
| 多表同步 Pipeline 太多 | 10 张表 × 每条 Pipeline Checkpoint | 拆作业(按业务域分组) |
11.3.5 job.retry.times 累积计数器
env { job.retry.times = 5 # 总重试次数(累积,不是每次 Checkpoint 后重置) job.retry.interval = "10s" # 重试间隔 }官方硬约束:job.retry.times是累积计数器——作业每次失败 +1,成功重启后不重置。只有 Zeta Master failover(整个 Master 重启)才会重置。
场景:作业失败 → 自动重试(retry_count=1)→ 又失败(retry_count=2)→ ... → 第 5 次失败 → 作业标记 FAILED 此时手动修复问题 → 重启作业 → retry_count 继续从 5 计数(不重置!)→ 直接 FAILED 正确做法:手动重启后,应该把 job.retry.times 改大或手动清 retry_count11.4 故障排查手册
本节覆盖5 类生产最常见故障,每类给"现象 → 根因 → 解法 → 验证"四步排查路径。
11.4.1 故障一:Checkpoint 持续超时
现象: Web UI 显示 Checkpoint #N FAILED (timeout after 300000ms) 日志:TimeoutException: Checkpoint #N timeout 排查路径: Step 1:Web UI → Metrics → checkpoint.duration(看是否逐渐变大) Step 2:看最近成功的 Checkpoint 耗时(比如 5s → 30s → 120s → 超时) Step 3:查 Sink 侧(Doris/Paimon)日志是否有写入卡顿 Step 4:查 Worker JVM 是否 Full GC 根因 Top 3: 1. Doris 2PC preCommit 卡住(Doris FE/BE 不稳定) 2. Paimon commit 慢(湖仓 Checkpoint 触发大量文件合并) 3. Worker Full GC(堆内存不足) 解法: - Doris:检查 FE/BE 健康度;暂时关闭 2PC(`sink.enable-2pc = false`)看是否超时消失 - Paimon:增大 checkpoint.interval 或调大 Worker 内存;临时禁用 compaction - Worker GC:增大 Worker 堆内存(seatunnel.yaml worker.memory) 验证: 重启作业 → 观察 Web UI Checkpoint History → 连续 3 次 Checkpoint SUCCESS11.4.2 故障二:CDC Consumer Lag 持续增长
现象: Web UI → Metrics → cdc.consumer.lag 持续增长(从 5s → 30s → 60s → ...) MySQL SHOW MASTER STATUS → Executed_Gtid_Set 与 CDC Source GTID 差距越来越大 排查路径: Step 1:Source 侧吞吐是否下降(source.data.received ↓) Step 2:Sink 侧是否有写入瓶颈(sink.flush.latency ↑) Step 3:Worker 内存/CPU 是否打满 根因 Top 3: 1. Sink 写入慢(Doris/Paimon flush 瓶颈)→ 反压到 Source 2. Worker 资源不足(CPU/内存打满) 3. 大表初始化扫描(initial mode 扫 10 亿行) 解法: - Sink 瓶颈:增大 Sink parallelism / 调大 batch.size / 开启 batch.interval 定时 flush - Worker 资源:增大 Worker 内存 + 增大 Worker 数量 - 大表初始化:增大 snapshot.split.size / 用 incremental mode 跳过初始化 验证: 观察 cdc.consumer.lag 是否回落 → 最终 < 告警阈值11.4.3 故障三:Schema Evolution 失败
现象: Web UI → Pipeline FAILED 日志:"Schema change event received but sink does not support DDL" 或 "Type mismatch" 排查路径: Step 1:Source 侧最近是否有 DDL(ALTER TABLE ...) Step 2:Sink 侧 schema_save_mode 是什么(CREATE_SCHEMA_WHEN_NOT_EXIST vs RECREATE_SCHEMA) Step 3:Source 侧 ddl.strategy 是什么(AUTO vs NONE) 根因 Top 3: 1. ddl.strategy = AUTO 但 Sink 不支持自动 DDL(Fluss/JDBC) 2. PG-CDC DROP COLUMN(PG-CDC 仅 ADD COLUMN) 3. Source 加列类型 Sink 不兼容(MySQL INT → Doris BIGINT 需 WITH_TYPE_CONVERSION) 解法(10.3.3 SOP): Step 1:Sink 侧手动 ALTER TABLE 对齐 Source schema Step 2:ddl.strategy 改成 NONE(推荐生产) Step 3:重启作业(NONE 策略跳过 DDL 事件) 验证: Web UI → Pipeline RUNNING + Checkpoint SUCCESS → 新列数据正常写入 Sink11.4.4 故障四:Pipeline 级容错验证(Kill Doris BE)
现象: 双目标分发作业(Doris + Paimon)Kill Doris BE 预期:Doris Pipeline 回滚 + Paimon Pipeline 照常 实际:? 排查路径(4 步骤): Step 1:Kill Doris BE(模拟故障) Step 2:观察 Web UI → Pipeline-1(Doris) FAILED / Pipeline-2(Paimon) RUNNING ✓ Step 3:重启 Doris BE Step 4:Zeta 自动重试 Doris Pipeline(job.retry.times=5)→ 从上次 Checkpoint 继续 ✓ 结论: Pipeline 级容错验证通过!Doris BE 故障不影响 Paimon Pipeline11.4.5 故障五:Zeta Master Failover
现象: Zeta Cluster 模式 Master 进程 Crash 预期:Follower Master 自动切换 Leader + 作业从上次 Checkpoint 恢复 排查路径: Step 1:Kill Leader Master Step 2:观察 Worker 日志 → "Master connection lost" → 连接新 Leader Step 3:新 Leader 从元数据恢复作业状态 → 从上次 Checkpoint 继续 硬约束: - Zeta Autonomous Cluster(去中心化):任意节点都能当 Leader - Follower Master 日志里看到 "Become Leader" - 作业 Checkpoint 状态存在 Master 元数据里,不是 Worker 本地 验证: Kill Master → 30s 内新 Master 接管 → 作业自动恢复 → Checkpoint SUCCESS11.5 版本升级与回退
SeaTunnel 3.0 是从 2.3.13 大版本跨越,升级前必须评估Incompatible Changes(3.0 破坏性变更)。
11.5.1 3.0 破坏性变更清单(升级前必读)
| # | 破坏性变更 | 影响 | 升级动作 |
|---|---|---|---|
| 1 | CDC nullable split | 空值列不再作为 split 列,避免静默丢数据 | 审查所有 CDC 作业的 split 列是否含 NULL |
| 2 | Connector 目录结构变更 | 2.3.5+ 改到connectors/目录 | 重新运行 install-plugin 脚本 |
| 3 | Fluss Sink 2.3.13 缺失 | 2.3.13 无法使用 Fluss Sink | 升级后才可用 |
| 4 | Sink 动态表名${database_name} | 旧版本叫${database} | 批量替换所有 HOCON |
| 5 | Kafka Sink producer.group-id 必填 | EXACTLY_ONCE 语义下必须唯一 | 审查所有 Kafka Sink 的 group-id |
| 6 | job.retry.times累积计数器 | 手动重启后 retry_count 不重置 | 升级后手动重启作业时注意 |
11.5.2 升级 SOP(2.3.13 → 3.0)
Step 1:评估窗口(1 周) - 列出所有正在运行的作业 HOCON - 逐条检查破坏性变更清单 - 确定哪些作业需要改 HOCON Step 2:准备新版本 # 下载 3.0 二进制包 wget https://archive.apache.org/dist/seatunnel/3.0.0/apache-seatunnel-3.0.0-bin.tar.gz tar -xzf apache-seatunnel-3.0.0-bin.tar.gz # 重新安装所有插件(3.0 插件目录结构变了) cd apache-seatunnel-3.0.0-bin ./bin/install-plugin.sh connectors/ # 迁移 seatunnel.yaml(保留 Worker/Master 内存配置) cp /old/seatunnel/conf/seatunnel.yaml ./conf/seatunnel.yaml Step 3:暂停所有作业(升级前) # SeaTunnel Web → Jobs → Stop All # 等所有作业 Checkpoint 完成后停止 Step 4:升级(滚动升级 Zeta Cluster) # 先升级 Follower Master → 再升级 Worker → 最后升级 Leader Master # 每个节点:停进程 → 替换二进制 → 启动 → 等加入集群 Step 5:HOCON 兼容性修正 # 修正 4:${database} → ${database_name} # sed -i 's/\${database}/\${database_name}/g' *.hocon Step 6:灰度启动作业 # 先启动 1 个低优先级作业 → 验证 → 再启动其他 Step 7:全量启动 + 验证 # SeaTunnel Web → Jobs → Start All # 验证所有作业 Checkpoint SUCCESS # 验证 CDC Consumer Lag 正常11.5.3 回退预案
回退触发条件: 升级后任何作业 Checkpoint 持续超时 / Schema Evolution 失败率 > 10% / Zeta Master 频繁 Crash 回退步骤(15 分钟内完成): Step 1:Stop All Jobs Step 2:替换回旧版二进制(2.3.13) Step 3:Zeta Cluster 滚动回退(先 Leader → 再 Worker → 最后 Follower) Step 4:HOCON 兼容性修正回退(${database_name} → ${database}) Step 5:Start All Jobs Step 6:验证所有作业恢复正常 回退风险: - Zeta Engine 无外部状态存储,回退后从上次 Checkpoint 继续 - 回退期间数据不丢(Source 侧有 offset/GTID/LSN)11.5.4 插件兼容性
3.0 的 Connector 插件 API 有变更——2.3.13 的 jar 不能直接在 3.0 用,必须重新运行install-plugin.sh。如果有自定义 Connector,需要用 3.0 的 API 重新编译。
11.6 生产运维 SOP
11.6.1 监控面板配置(Prometheus + Grafana)
# seatunnel.yaml 里开启 Metrics seatunnel: engine: metrics: enabled: true reporter: prometheus prometheus: port: 8802 # Prometheus scrape endpoint# Prometheus scrape 配置scrape_configs:-job_name:'seatunnel-worker'static_configs:-targets:['worker1:8802','worker2:8802','worker3:8802']-job_name:'seatunnel-master'static_configs:-targets:['master1:8801']11.6.2 告警阈值配置
| 告警项 | 条件 | 级别 | 动作 |
|---|---|---|---|
| Checkpoint 超时 | 连续 3 次 FAILED | P1 | 立即介入 |
| Checkpoint 成功率 | < 90% | P2 | 1h 内介入 |
| CDC Consumer Lag | > 60s | P2 | 1h 内介入 |
| Pipeline 背压 | > 80% 持续 5min | P2 | 增大 parallelism |
| Worker GC | Full GC > 10s / 持续 1min | P3 | 增大堆内存 |
| JVM 内存 | > 85% | P3 | 扩容 Worker |
| Zeta Master | Crash | P1 | 30s 内新 Master 接管 |
| Doris FE/BE | Crash | P1 | 恢复后触发 Pipeline 级容错 |
11.6.3 日终对账 SOP
每天凌晨 2:00 执行: Step 1:Doris vs MySQL 对账(车联网车辆档案表) SELECT COUNT(*) FROM vehicle_db.dws_vehicles_real WHERE update_time >= DATE_SUB(NOW(), INTERVAL 24 HOUR) # 对比 MySQL vehicle_db.vehicles 24h 内变更行数 # 差异 > 1% → 告警 Step 2:Paimon vs MySQL 对账 # Flink SQL 查 Paimon 24h 内快照数 # 对比 MySQL CDC 24h GTID 变更数 Step 3:CDC Consumer Lag 日终巡检 # 所有 CDC 作业 lag 应 < 30s # 大表初始化作业 lag 应 < 24h Step 4:Checkpoint 成功率日终统计 # 所有作业 Checkpoint 成功率应 > 99% # 低于 99% → 排查超时原因11.6.4 升级窗口
升级时间:周六凌晨 1:00 ~ 3:00(业务低峰) 准备工作: - 升级方案评审(1 周前) - 破坏性变更逐条验证(1 周前) - 回退预案评审(升级前 1 天) - 灰度作业准备(升级前 1 天) 升级流程: - 1:00 Stop All Jobs - 1:05 滚动升级 Zeta Cluster - 1:20 HOCON 兼容性修正 - 1:25 灰度启动 1 个作业 → 验证 - 1:40 全量启动 + 验证 - 2:00 日终对账 - 2:30 确认正常 → 升级完成 - 2:30 ~ 3:00 观察期 → 无异常则关闭升级窗口工程要点
- Zeta Engine 无外部状态存储:不需要 HDFS/S3 存 Checkpoint;Worker 挂了状态丢,靠 job.retry.times 重试。
- Pipeline 级容错 = 运行时隔离 ≠ 崩溃恢复隔离:运行时一个 Pipeline 挂了其他继续;Worker Crash 后同作业所有 Pipeline 一起恢复。
- job.retry.times 累积计数器:手动重启后 retry_count 不重置;只有 Zeta Master failover 才重置。
- Checkpoint 四件套:interval=60000 + timeout=300000 + min-pause=10000 + max-concurrent=1(Zeta 推荐)。
- Checkpoint 超时 Top 3 原因:Sink flush 太慢 / Pipeline 背压 / Worker Full GC。
- CDC Consumer Lag 告警阈值:实时看板 CDC > 30s / 湖仓 CDC > 60s / 大表初始化 > 24h。
- Sink Flush 延迟典型值:Doris 2PC 1~5s / Doris 非 2PC 1~2s / Paimon 2~10s / Kafka < 100ms。
- 3.0 破坏性变更 Top 3:CDC nullable split / Connector 目录结构变 / Fluss Sink 2.3.13 缺失。
- Sink 动态表名 3.0 改了
${database}→${database_name}:批量替换所有 HOCON。 - Kafka Sink producer.group-id EXACTLY_ONCE 必须唯一:重复会回滚前一个作业事务。
- Zeta Autonomous Cluster 去中心化:任意节点都能当 Leader;Master Crash 30s 内新 Leader 接管。
- SeaTunnel Web 3.0 新增 Pipeline 级状态视图:多 Pipeline 独立成功/失败状态可视化。
- Prometheus + Grafana 监控:seatunnel.yaml 开 metrics.reporter=prometheus → 8802 端口 scrape。
- 回退风险:Zeta 无外部状态存储但 Source 有 offset/GTID/LSN:回退后从上次 Checkpoint 继续,数据不丢。
- 插件兼容性:3.0 API 变更:2.3.13 的 Connector jar 不能直接在 3.0 用,必须重新 install-plugin。
- 升级窗口:周六凌晨 1:00 ~ 3:00:滚动升级 Zeta Cluster + 灰度启动 1 个作业验证。
- Schema Evolution 推荐 NONE + 手动 DDL SOP:比 AUTO 更可控。
- 多表同步 ≤ 10 张表/作业:超过拆作业。
- Doris FE/BE Crash → Pipeline 级容错自动恢复 Doris Pipeline:Paimon Pipeline 不受影响继续写。
- Worker GC 阈值:Full GC > 10s / 持续 1min → 告警:增大 Worker 堆内存或启用 G1GC。
本章小结
- ✓ SeaTunnel Web 监控 3.0 新特性(Pipeline 级状态视图 + Checkpoint 可视化 + RowKind 柱状图)+ REST API;
- ✓ Zeta Engine 10 个核心监控指标(含 CDC Consumer Lag + Sink Flush 延迟)+ Prometheus/Grafana 对接;
- ✓ Checkpoint 调优四件套 + Zeta vs Flink Checkpoint 对比 + 决策树 + 超时 Top 3 原因 + job.retry.times 累积计数器;
- ✓ 5 类故障排查手册(Checkpoint 超时 / CDC Lag / Schema Evolution / Pipeline 级容错验证 / Zeta Master Failover);
- ✓ 3.0 破坏性变更清单 + 升级 SOP(7 步)+ 回退预案(15 分钟)+ 插件兼容性;
- ✓ 生产运维 SOP(监控面板 + 告警阈值 8 项 + 日终对账 4 步 + 升级窗口)。
下章预告:第 12 章端到端综合实战——把 1~11 章所学拼成一台完整的车联网实时湖仓。从需求定义 → 架构设计 → 数据分层 → 九份交付代码 → 验收四线 → 故障演练 → 总结回顾。和前作 Iceberg 第 18 章、Paimon 版综合实战保持一致的结构。
官方参考资料
| 资料 | 地址 | 说明 |
|---|---|---|
| Zeta Engine About | https://seatunnel.apache.org/docs/3.0.0/zeta/ | Zeta Engine 架构 + 无外部依赖 + Autonomous Cluster |
| Incompatible Changes | https://seatunnel.apache.org/docs/3.0.0/incompatible-change/ | CDC nullable split + Connector 目录变更 |
| Engines Overview | https://seatunnel.apache.org/docs/3.0.0/engines/ | Zeta/Flink/Spark 三引擎能力边界 |
| CDC Production Cookbook | https://seatunnel.apache.org/docs/connectors/cdc-production-cookbook/ | CDC 生产实战配方 |
| Checkpoint Mechanism | https://seatunnel.apache.org/docs/3.0.0/zeta/checkpoint/ | Chandy-Lamport + Pipeline 级隔离 |
版本取证说明
- Zeta Engine Checkpoint 无外部依赖:Zeta Engine About 原文 “No external dependencies required for state storage”。
- Pipeline 级容错 ≠ 崩溃恢复隔离:Zeta Engine Checkpoint 页面 “Pipeline-level fault tolerance is for runtime faults, not process crashes”(进程 Crash 后同作业所有 Pipeline 一起恢复)。
- job.retry.times 累积计数器:官方文档 + 生产实测(手动重启后 retry_count 不重置,只有 Master failover 才重置)。
- Sink 动态表名 3.0
${database_name}替换${database}:Incompatible Changes 条目 + 所有 Sink Connector 页面参数说明。 - Zeta Autonomous Cluster 去中心化:Zeta Engine About “Autonomous mode: Any node can become a leader”。
- 3.0 破坏性变更 6 项:Incompatible Changes 页面原文(CDC nullable split / Connector 目录 / Fluss Sink 缺失 / 动态表名 / producer.group-id / job.retry.times)。
- SeaTunnel Web 3.0 新增 Pipeline 级状态视图:SeaTunnel Web 页面 + 生产实测(多 Pipeline 独立成功/失败可视化)。
实操清单
| 序号 | 操作 | 方式 | 要点 |
|---|---|---|---|
| 1 | SeaTunnel Web Pipeline 级状态视图 | Zeta Cluster + 双目标分发作业 + Kill Doris BE | Doris Pipeline 回滚 + Paimon 照常 |
| 2 | Prometheus + Grafana 监控 | seatunnel.yaml 开 metrics + Prometheus scrape + Grafana dashboard | 10 个核心指标可视化 |
| 3 | Checkpoint 调优四件套 | env { checkpoint.interval=60000 timeout=300000 min-pause=10000 max-concurrent=1 } | Zeta 推荐配置 |
| 4 | job.retry.times 累积计数器验证 | 作业失败 → 手动重启 → 看 retry_count | 不重置,只有 Master failover 才重置 |
| 5 | Checkpoint 超时注入(Sink flush 卡住) | Doris FE/BE 模拟故障 + 看 Checkpoint History | 连续 FAILED |
| 6 | CDC Consumer Lag 监控 | MySQL SHOW MASTER STATUS + CDC Source GTID | 差距 > 60s 告警 |
| 7 | Zeta Master Failover 验证 | Kill Leader Master + 看 30s 内新 Master 接管 | 作业自动恢复 |
| 8 | Schema Evolution NONE + 手动 DDL SOP | Source ALTER ADD + Sink 手动 ALTER + NONE 策略 | 作业自动继续 |
| 9 | 2.3.13 → 3.0 升级破坏性变更逐条验证 | 6 项变更 + 每条验证 | 升级前必做 |
| 10 | 滚动升级 Zeta Cluster | Follower Master → Worker → Leader Master | 每个节点替换二进制 |
| 11 | 回退预案演练 | 升级后 Stop All + 替换旧版 + 启动 | 15 分钟内完成 |
| 12 | Pipeline 背压监控 | Web UI → Metrics → pipeline.backpressure | > 80% 持续 5min 告警 |
| 13 | Worker Full GC 监控 | JVM 日志 + seatunnel.yaml worker.memory | > 10s 告警 |
| 14 | 日终对账 SOP 执行 | 凌晨 2:00 + Doris/Paimon vs MySQL | 差异 > 1% 告警 |
| 15 | 升级窗口观察期 | 1:00~3:00 业务低峰 + 灰度验证 | 无异常关闭窗口 |