什么是延时监控?
延时监控,简单理解监控算子到算子的延迟时间。记录算子间或者源流入到算子时间,监控系统健康以及调节。
流式计算中处理延迟是一个非常重要的监控metric
flink中通过开启配置 metrics.latency.interval 来开启latency后就可以在metric中看到askManagerJobMetricGroup/operator_id/operator_subtask_index/latency指标了
如果每一条数据都打上时间监控 输出时间- 输入时间,会大量的消耗性能
来看一下flink自带的延迟监控是怎么做的
其实也可以想到原理很简单,就是在source周期性的插入一条特殊的数据LatencyMarker
LatencyMarker初始化的时候会带上它产生时的时间
每次当task接收到的数据是LatencyMarker的时候他就用 当前时间 - LatencyMarker时间 = lateTime 并发送到指标收集系统
接着继续把这个LatencyMarker往下游emit
来看一下源码是如何实现的
因为是从source加入LatencyMarker先看StreamSource.java
在StreamSource的run 方法中
初始化了一个LatencyMarksEmitter