如何在prometheus 中查询 TiCDC 同步任务状态

【 TiDB 使用环境】生产环境

【 TiDB 版本】5.0.4

【遇到的问题:问题现象及影响】
原始需求:主动暂停ticdc 同步任务changefeed时,发出告警。

问题:
查看grafana中有一个dashboard 显示“changefeed status”,但是没数据,查询mertics也没数据。

看一下 Prometheus 里面有没有数据,prometheus 默认平台端口是 9090。

感谢回复:

  1. promehtues 中没有指标 ticdc_owner_status
    curl curl -i http://127.0.0.1:8300/metrics |grep ticdc_owner_status

  2. 有其他办法定制cdc告警规则查看changefeed 状态么

你好,

  1. 当前集群是存在 changefeed 的是吧?
  2. 不要直接 grep ,有的时候这种方法 grep 不到,但是 curl | less | /ticdc_owner_status 能找到
  3. changefeedStatusGauge 正常来说,owner 定期 Tick 的时候就会更新 changefeed 信息,按照逻辑来说,要么其他监控也有问题,问题在监控侧,要么就是 changefeed 或者 capture owner 有问题,问题在功能同步侧。
  4. 对了,一个时刻 ticdc cluster 只能有一个 owner,可能这个监控在其他 capture 上,去 owner capture 查这个监控,这也可能是没查到的原因
  1. 查看当前集群changefeed 的同步状态。原始需求:changefeed 如果状态不为 normal就报警
  2. less 没有指标ticdc_owner_status
    image
    3、4 这两个没太看懂 :see_no_evil:
  1. 只有是 owner 的 capture 才会打该指标,随机找一个 capture 可能不是 capture owner。 所以这么看不一定有价值,至于 owner 的定义可以看下 → 专栏 - TiCDC系列分享-02-剖析同步模型与基本架构 | TiDB 社区

  2. 我觉得这块不太可能出问题,如果出了问题说明 同步功能 大概率出了问题。

  1. 查看grafana中有一个dashboard 显示“changefeed status”,但是没数据,查询mertics也没数据。
    这个如果其他指标都存在,就这个指标没有。应该不是 Prometheus 没有从 capture 端口 pull 到,大概率是 capture 间 owner 选举出现了问题,导致的没有指标产生,日志有什么异常吗?
  • 当前两节点cdc。发起curl请求后,均没有ticdc_owner_status 指标
curl 172.16.0.1:8300/metrics
curl 172.16.0.2:8300/metrics
  • 查看cdc日志 有如下报错,
[2022/12/08 00:31:29.256 +08:00] [ERROR] [owner.go:1354] ["watch owner campaign key failed, restart the watcher"] [error="etcdserver: mvcc: required revision has been compac
ted"]
[2022/12/08 00:31:29.288 +08:00] [WARN] [owner.go:1726] ["watch capture returned"] [error="[CDC:ErrOwnerEtcdWatch]etcdserver: mvcc: required revision has been compacted"] [errorVerbose="[CDC:ErrOwnerEtcdWatch]etcdserver: mvcc: required revision has been compacted\ngithub.com/pingcap/errors.AddStack\n\tgithub.com/pingcap/errors@v0.11.5-0.20201126102027-b0a155152ca3/errors.go:174\ngithub.com/pingcap/errors.(*Error).GenWithStackByCause\n\tgithub.com/pingcap/errors@v0.11.5-0.20201126102027-b0a155152ca3/normalize.go:279\ngithub.com/pingcap/ticdc/pkg/errors.WrapError\n\tgithub.com/pingcap/ticdc@/pkg/errors/helper.go:30\ngithub.com/pingcap/ticdc/cdc.(*Owner).watchCapture\n\tgithub.com/pingcap/ticdc@/cdc/owner.go:1636\ngithub.com/pingcap/ticdc/cdc.(*Owner).startCaptureWatcher.func1\n\tgithub.com/pingcap/ticdc@/cdc/owner.go:1713\nruntime.goexit\n\truntime/asm_amd64.s:1357"]

ErrEventFeedEventError 应该按理说不会干扰 Owenr 选举,监控中显示当前的 Owenr 是哪个 Capture?
方便上传下 TiCDC 面板和 Owner 日志吗(最近一段时间的)?

  • ticdc 面板

  • owner日志(密钥已经私聊发送给您)
    cdc.log.tar.gz (13.5 MB)
  1. 从日志和面板看并没有干扰正常同步功能
  2. 其次从 update metrics 往上追,可能性太多,日志也没有什么太有建议的点🤔
  3. 日志里有一处可能与这个有关,如下。

综上,目前建议,重启下所有 capture 看看是否能恢复,感觉重启下就好了。
另外:

  1. 告警是从几号开始的? 是 12:08 之后吗?
  2. TiCDC 是升级上来的吗?
  1. 没关注什么时间开始的
  2. ticdc是后续tiup直接部署的

大佬,capture 怎么重启?tiup cluster restart cluster_name -R cdc

重启capture有什么影响么?

其实影响不大,重启之后 Capture 和 tikv 之间的连接会重连,会有一定开销(为每个 Region 重新构建 connect stream)。
这个过程中,同步进度会受到一定影响,其他方面还好,找业务低峰期重启吧。

线下环境单节点重启Capture后,没有ticdc_owner_status 指标。

我再想想其他办法。

通过python脚本完成capture监控

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。