Can you elaborate the second approach more?
Currently I am exposing the difference itself. OR do you mean the
cumulative difference?ie I maintain a member variable, say timeSoFar, and
update it with time consumed by each method call and then expose it.
Something like this:

timeSoFar += timeConsumedByCurrentInvocation
this.simpleGaug.setValue( timeSoFar );

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

> That approach will generally not work for jobs that run for a long time,
> because it will be nigh impossible for anomalies to affect the average. You
> want to look into exponential moving averages.
> Alternatively, just expose the diff as an absolute value and calculate the
> average in prometheus.
>
> On 1/12/2021 11:50 AM, Manish G wrote:
>
> 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