OK, got it.
So I would need to accumulate the time value over the calls as well as
number of times it is called...and then calculate average(accumulated time/
number of times called) and then set calculated value into gauge as above.

On Tue, Jan 12, 2021 at 4:12 PM Chesnay Schepler <ches...@apache.org> wrote:

> A gauge just returns a value, and Flink exposes it as is. As such you need
> to calculate the average over time yourself, taking 2 time measurements
> (before and after the processing of each).
>
> On 1/12/2021 11:31 AM, Manish G wrote:
>
> startTime is set at start of function:
>
> long startTime = System.currentTimeMillis();
>
>
> On Tue, Jan 12, 2021 at 3:59 PM Manish G <manish.c.ghildi...@gmail.com>
> wrote:
>
>> My code is:
>>
>> public class SimpleGauge<T> implements Gauge<T> {
>>
>>     private T mValue;
>>
>>     @Override
>>     public T getValue() {
>>         return mValue;
>>     }
>>
>>     public void setValue(T value){
>>         mValue = value;
>>     }
>> }
>>
>> And in flatmap function:
>>
>> float endTime = (System.currentTimeMillis() - startTime) / 1000F;
>> this.simplegauge.setValue(endTime);
>>
>>
>> So does it mean when flink calls my getValue function to accumulate the 
>> value, and not to take it as snapshot?
>>
>>
>> On Tue, Jan 12, 2021 at 3:53 PM Chesnay Schepler <ches...@apache.org>
>> wrote:
>>
>>> Sure, that might work. Be aware though that time measurements are,
>>> compared to the logic within a function, usually rather expensive and
>>> may impact performance.
>>>
>>> On 1/12/2021 10:57 AM, Manish G wrote:
>>> > Hi All,
>>> >
>>> > I have implemented a flatmap function and I want to collect metrics
>>> > for average time for this function which I plan to monitor via
>>> prometheus.
>>> >
>>> > What would be good approach for it? I have added a gauge to the
>>> > method(extending Gauge interface from flink API). Would it work for my
>>> > needs?
>>> >
>>> >
>>>
>>>
>

Reply via email to