@@ -20,47 +20,44 @@ module.exports = (meter, {prefix, labels, eventLoopMonitoringPrecision}) => {
2020
2121 histogram . enable ( )
2222
23- const lag = meter . createValueObserver ( prefix + NODEJS_EVENTLOOP_LAG , {
23+ const lag = meter . createObservableGauge ( prefix + NODEJS_EVENTLOOP_LAG , {
2424 description : 'Lag of event loop in seconds.'
2525 } ) . bind ( labels )
2626
27- const lagMin = meter . createValueObserver ( prefix + NODEJS_EVENTLOOP_LAG_MIN , {
27+ const lagMin = meter . createObservableGauge ( prefix + NODEJS_EVENTLOOP_LAG_MIN , {
2828 description : 'The minimum recorded event loop delay.'
2929 } ) . bind ( labels )
3030
31- const lagMax = meter . createValueObserver ( prefix + NODEJS_EVENTLOOP_LAG_MAX , {
31+ const lagMax = meter . createObservableGauge ( prefix + NODEJS_EVENTLOOP_LAG_MAX , {
3232 description : 'The maximum recorded event loop delay.'
3333 } ) . bind ( labels )
3434
35- const lagMean = meter . createValueObserver ( prefix + NODEJS_EVENTLOOP_LAG_MEAN , {
35+ const lagMean = meter . createObservableGauge ( prefix + NODEJS_EVENTLOOP_LAG_MEAN , {
3636 description : 'The mean of the recorded event loop delays.'
3737 } ) . bind ( labels )
3838
39- const lagStddev = meter . createValueObserver ( prefix + NODEJS_EVENTLOOP_LAG_STDDEV , {
39+ const lagStddev = meter . createObservableGauge ( prefix + NODEJS_EVENTLOOP_LAG_STDDEV , {
4040 description : 'The standard deviation of the recorded event loop delays.'
4141 } ) . bind ( labels )
4242
43- const lagP50 = meter . createValueObserver ( prefix + NODEJS_EVENTLOOP_LAG_P50 , {
43+ const lagP50 = meter . createObservableGauge ( prefix + NODEJS_EVENTLOOP_LAG_P50 , {
4444 description : 'The 50th percentile of the recorded event loop delays.'
4545 } ) . bind ( labels )
4646
47- const lagP90 = meter . createValueObserver ( prefix + NODEJS_EVENTLOOP_LAG_P90 , {
47+ const lagP90 = meter . createObservableGauge ( prefix + NODEJS_EVENTLOOP_LAG_P90 , {
4848 description : 'The 90th percentile of the recorded event loop delays.'
4949 } ) . bind ( labels )
5050
51- const lagP99 = meter . createValueObserver ( prefix + NODEJS_EVENTLOOP_LAG_P99 , {
51+ const lagP99 = meter . createObservableGauge ( prefix + NODEJS_EVENTLOOP_LAG_P99 , {
5252 description : 'The 99th percentile of the recorded event loop delays.'
53- } ) . bind ( labels )
53+ } , async ( ) => {
54+ const startTime = process . hrtime ( )
55+ await new Promise ( ( resolve ) => setImmediate ( ( ) => resolve ( ) ) )
5456
55- function reportEventloopLag ( start ) {
56- const delta = process . hrtime ( start )
57+ const delta = process . hrtime ( startTime )
5758 const nanosec = ( delta [ 0 ] * 1e9 ) + delta [ 1 ]
5859 const seconds = nanosec / 1e9
5960 lag . update ( seconds )
60- }
61-
62- meter . createBatchObserver ( ( observerBatchResult ) => {
63- setImmediate ( reportEventloopLag , process . hrtime ( ) )
6461
6562 lagMin . update ( histogram . min / 1e9 )
6663 lagMax . update ( histogram . max / 1e9 )
@@ -69,8 +66,9 @@ module.exports = (meter, {prefix, labels, eventLoopMonitoringPrecision}) => {
6966 lagP50 . update ( histogram . percentile ( 50 ) / 1e9 )
7067 lagP90 . update ( histogram . percentile ( 90 ) / 1e9 )
7168 lagP99 . update ( histogram . percentile ( 99 ) / 1e9 )
72- } )
69+ } ) . bind ( labels )
7370
71+ lag . update ( 0 )
7472}
7573
7674module . exports . metricNames = [
0 commit comments