@@ -26,6 +26,8 @@ var latestGCEvent;
2626var latestLoopEvent ;
2727var aggregateHttpEvent ;
2828var aggregateHttpOutboundEvent ;
29+ var aggregateHttpsEvent ;
30+ var aggregateHttpsOutboundEvent ;
2931var aggregateProbeEvents = [ ] ;
3032// Used for top 5 response times
3133var httpURLData = { } ;
@@ -313,6 +315,34 @@ exports.monitor = function(options) {
313315
314316 } ) ;
315317
318+ monitoring . on ( 'https' , function ( data ) {
319+ if ( ! aggregateHttpsEvent ) {
320+ aggregateHttpsEvent = { } ;
321+ aggregateHttpsEvent . total = 1 ;
322+ aggregateHttpsEvent . average = data . duration ;
323+ aggregateHttpsEvent . longest = data . duration ;
324+ aggregateHttpsEvent . time = data . time ;
325+ aggregateHttpsEvent . url = data . url ;
326+ } else {
327+ aggregateHttpsEvent . total = aggregateHttpsEvent . total + 1 ;
328+ aggregateHttpsEvent . average = ( aggregateHttpsEvent . average * ( aggregateHttpsEvent . total - 1 ) + data . duration ) / aggregateHttpsEvent . total ;
329+ if ( data . duration > aggregateHttpsEvent . longest ) {
330+ aggregateHttpsEvent . longest = data . duration ;
331+ aggregateHttpsEvent . url = data . url ;
332+ }
333+ }
334+
335+ if ( httpURLData . hasOwnProperty ( data . url ) ) {
336+ var urlData = httpURLData [ data . url ] ;
337+ // Recalculate the average
338+ urlData . duration = ( urlData . duration * urlData . hits + data . duration ) / ( urlData . hits + 1 ) ;
339+ urlData . hits = urlData . hits + 1 ;
340+ } else {
341+ httpURLData [ data . url ] = { duration : data . duration , hits : 1 } ;
342+ }
343+
344+ } ) ;
345+
316346 monitoring . on ( 'http-outbound' , function ( data ) {
317347 if ( ! aggregateHttpOutboundEvent ) {
318348 aggregateHttpOutboundEvent = { } ;
@@ -331,6 +361,24 @@ exports.monitor = function(options) {
331361 }
332362 } ) ;
333363
364+ monitoring . on ( 'https-outbound' , function ( data ) {
365+ if ( ! aggregateHttpsOutboundEvent ) {
366+ aggregateHttpsOutboundEvent = { } ;
367+ aggregateHttpsOutboundEvent . total = 1 ;
368+ aggregateHttpsOutboundEvent . average = data . duration ;
369+ aggregateHttpsOutboundEvent . longest = data . duration ;
370+ aggregateHttpsOutboundEvent . time = data . time ;
371+ aggregateHttpsOutboundEvent . url = data . url ;
372+ } else {
373+ aggregateHttpsOutboundEvent . total = aggregateHttpsOutboundEvent . total + 1 ;
374+ aggregateHttpsOutboundEvent . average = ( aggregateHttpsOutboundEvent . average * ( aggregateHttpsOutboundEvent . total - 1 ) + data . duration ) / aggregateHttpsOutboundEvent . total ;
375+ if ( data . duration > aggregateHttpsOutboundEvent . longest ) {
376+ aggregateHttpsOutboundEvent . longest = data . duration ;
377+ aggregateHttpsOutboundEvent . url = data . url ;
378+ }
379+ }
380+ } ) ;
381+
334382 monitoring . on ( 'mongo' , function ( data ) {
335383 addProbeEvent ( 'MongoDB' , data ) ;
336384 } ) ;
@@ -399,6 +447,10 @@ function emitData() {
399447 io . emit ( 'http' , JSON . stringify ( aggregateHttpEvent ) ) ;
400448 aggregateHttpEvent = null ;
401449 }
450+ if ( aggregateHttpsEvent ) {
451+ io . emit ( 'https' , JSON . stringify ( aggregateHttpsEvent ) ) ;
452+ aggregateHttpsEvent = null ;
453+ }
402454 if ( latestGCEvent ) {
403455 io . emit ( 'gc' , JSON . stringify ( latestGCEvent ) ) ;
404456 latestGCEvent = null ;
@@ -407,6 +459,10 @@ function emitData() {
407459 io . emit ( 'http-outbound' , JSON . stringify ( aggregateHttpOutboundEvent ) ) ;
408460 aggregateHttpOutboundEvent = null ;
409461 }
462+ if ( aggregateHttpsOutboundEvent ) {
463+ io . emit ( 'https-outbound' , JSON . stringify ( aggregateHttpsOutboundEvent ) ) ;
464+ aggregateHttpsOutboundEvent = null ;
465+ }
410466 if ( aggregateProbeEvents . length > 0 ) {
411467 io . emit ( 'probe-events' , JSON . stringify ( aggregateProbeEvents ) ) ;
412468 aggregateProbeEvents = [ ] ;
0 commit comments