我已经实现了一个flink flatmap函数,我想为这个函数收集平均时间的指标,我计划通过prometheus监控它。
什么是好的方法?我在方法中添加了一个gauge(从flink API扩展gauge接口(。
public class SimpleGauge<T> implements Gauge<T> {
private T mValue;
@Override
public T getValue() {
return mValue;
}
public void setValue(T value){
mValue = value;
}
}
我从平面图函数调用setValue:
float endTime = (System.currentTimeMillis() - startTime) / 1000F;
this.gauge.setValue(endTime);
它行得通吗?
它是否工作取决于如何创建Gauge
。如果您使用的是普通FlatMapFunction
,那么您可能应该切换到RichFlatMapFunction
,然后初始化并注册您的仪表getRuntimeContext
。
此外,您可能想了解一些度量类型,因为在这种情况下,Histogram
似乎比Gauge更好,因为在大多数情况下,测量平均延迟通常不是最好的主意。