You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-zh@flink.apache.org by 17610775726 <17...@163.com> on 2023/06/08 08:46:34 UTC

回复:flink作业延迟时效指标

Hi


你提到的所有的监控都是可以通过 metric 来监控报警的,至于你提到的 LatencyMarker 因为它不参与算子内部的计算逻辑的时间,所以这个 metric 并不是准确的,但是如果任务有反压的情况下 LatencyMarker 也会被阻塞,所以大体上还是可以反应出任务的延迟情况,如果想要准确的计算出端到端的延迟,可以在 消费 kafka 的时候获取一个 start time 时间戳 在 sink 的时候获取一个 end time 时间戳,然后自定义一个 metric 把这个结果上报 基于这个 metric 做端到端的延迟监控。


Best
JasonLee


---- 回复的原邮件 ----
| 发件人 | casel.chen<ca...@126.com> |
| 发送日期 | 2023年06月8日 16:39 |
| 收件人 | user-zh@flink.apache.org<us...@flink.apache.org> |
| 主题 | flink作业延迟时效指标 |
我想知道当前flink作业延迟了多久现在能通过什么指标可以获取到吗?想通过设置作业延迟告警来反馈作业健康状况,是否产生背压,是否需要增加资源等。
以mysql表实时同步到doris表为例:mysql binlog -> kafka -> flink -> doris
延迟指标包括:
1. 业务延迟:业务延迟=当前系统时间 - 当前系统处理的最后一条数据的事件时间(Event time)
例如:kafka消息写入doris的时间 - kafka消息数据本身产生时间(例如更新mysql记录的时间)
2. 数据滞留延迟:数据滞留时间=数据进入实时计算的时间 - 数据事件时间(Event time)
例如:flink消费到kafka消息时间 - 消费到的kafka消息数据本身产生时间(例如更新mysql记录的时间)


当前我们是用kafka消费组积压告警来替代的,但这个数据不准,一是因为flink checkpoint才会更新offset,二是因为生产流量在不同时段是不同的,在流量低的时候告警不及时。
查了官网有一个LatencyMarker可以开启使用,请问这个开启后要怎么观察延迟呢?这个metric需要上报到prometheus才可以读到吗?


我们遇到另一个问题是使用flink sql提交作业生成的metric名称很长,因为operatorId是根据sql内容来生成的,所以动不动就把prometheus给打爆了,这个有什么办法解决么?

Re:回复:flink作业延迟时效指标

Posted by "casel.chen" <ca...@126.com>.








我的是flink sql作业,要如何实现你说的方案呢?我看到阿里云实时计算平台VVR是支持展示作业时延指标的,想知道它是如何实现的








在 2023-06-08 16:46:34,"17610775726" <17...@163.com> 写道:
>Hi
>
>
>你提到的所有的监控都是可以通过 metric 来监控报警的,至于你提到的 LatencyMarker 因为它不参与算子内部的计算逻辑的时间,所以这个 metric 并不是准确的,但是如果任务有反压的情况下 LatencyMarker 也会被阻塞,所以大体上还是可以反应出任务的延迟情况,如果想要准确的计算出端到端的延迟,可以在 消费 kafka 的时候获取一个 start time 时间戳 在 sink 的时候获取一个 end time 时间戳,然后自定义一个 metric 把这个结果上报 基于这个 metric 做端到端的延迟监控。
>
>
>Best
>JasonLee
>
>
>---- 回复的原邮件 ----
>| 发件人 | casel.chen<ca...@126.com> |
>| 发送日期 | 2023年06月8日 16:39 |
>| 收件人 | user-zh@flink.apache.org<us...@flink.apache.org> |
>| 主题 | flink作业延迟时效指标 |
>我想知道当前flink作业延迟了多久现在能通过什么指标可以获取到吗?想通过设置作业延迟告警来反馈作业健康状况,是否产生背压,是否需要增加资源等。
>以mysql表实时同步到doris表为例:mysql binlog -> kafka -> flink -> doris
>延迟指标包括:
>1. 业务延迟:业务延迟=当前系统时间 - 当前系统处理的最后一条数据的事件时间(Event time)
>例如:kafka消息写入doris的时间 - kafka消息数据本身产生时间(例如更新mysql记录的时间)
>2. 数据滞留延迟:数据滞留时间=数据进入实时计算的时间 - 数据事件时间(Event time)
>例如:flink消费到kafka消息时间 - 消费到的kafka消息数据本身产生时间(例如更新mysql记录的时间)
>
>
>当前我们是用kafka消费组积压告警来替代的,但这个数据不准,一是因为flink checkpoint才会更新offset,二是因为生产流量在不同时段是不同的,在流量低的时候告警不及时。
>查了官网有一个LatencyMarker可以开启使用,请问这个开启后要怎么观察延迟呢?这个metric需要上报到prometheus才可以读到吗?
>
>
>我们遇到另一个问题是使用flink sql提交作业生成的metric名称很长,因为operatorId是根据sql内容来生成的,所以动不动就把prometheus给打爆了,这个有什么办法解决么?