Skip to content

Commit 2e47fc7

Browse files
sjanuaryhhellyer
authored andcommitted
HTTPS data in graphs (#118)
* New https data now in graphs * Update submodule
1 parent ff3260f commit 2e47fc7

File tree

4 files changed

+67
-5
lines changed

4 files changed

+67
-5
lines changed

lib/appmetrics-dash.js

+56
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ var latestGCEvent;
2626
var latestLoopEvent;
2727
var aggregateHttpEvent;
2828
var aggregateHttpOutboundEvent;
29+
var aggregateHttpsEvent;
30+
var aggregateHttpsOutboundEvent;
2931
var aggregateProbeEvents = [];
3032
// Used for top 5 response times
3133
var 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 = [];

package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
{
22
"name": "appmetrics-dash",
3-
"version": "3.3.3",
3+
"version": "3.3.4",
44
"description": "Embedded monitoring dashboard for Node.js applications.",
55
"main": "index.js",
66
"dependencies": {
7-
"appmetrics": "^3.0.1",
7+
"appmetrics": "^3.1.0",
88
"debug": "^2.6.0",
99
"express": "^4.14.1",
1010
"express-basic-auth": "^1.0.1",

public/index.html

+8-2
Original file line numberDiff line numberDiff line change
@@ -168,10 +168,10 @@ <h4 class="modal-title" font-color=black>Heap Snapshot</h4>
168168
<script type="text/javascript" src="graphmetrics/js/envTable.js"></script>
169169
<script type="text/javascript" src="graphmetrics/js/cpuChart.js"></script>
170170

171-
<script type="text/javascript" src="graphmetrics/js/httpRequestsChart.js"></script>
171+
<script type="text/javascript" src="graphmetrics/js/httpHttpsRequestsChart.js"></script>
172172
<script type="text/javascript" src="graphmetrics/js/httpThroughPutChart.js"></script>
173173
<script type="text/javascript" src="graphmetrics/js/httpTop5.js"></script>
174-
<script type="text/javascript" src="graphmetrics/js/httpOutboundRequestsChart.js"></script>
174+
<script type="text/javascript" src="graphmetrics/js/httpHttpsOutboundRequestsChart.js"></script>
175175

176176
<script type="text/javascript" src="graphmetrics/js/memChart.js"></script>
177177
<script type="text/javascript" src="graphmetrics/js/gcChart.js"></script>
@@ -200,6 +200,12 @@ <h4 class="modal-title" font-color=black>Heap Snapshot</h4>
200200
socket.on('http', function(data) {
201201
updateHttpData(data);
202202
});
203+
socket.on('https-outbound', function(data) {
204+
updateHttpsOBData(data);
205+
});
206+
socket.on('https', function(data) {
207+
updateHttpsData(data);
208+
});
203209
setHttpTop5Options({host: hostname, filteredPath: dashboardRoot});
204210
socket.on('http-urls', function(data) {
205211
updateURLData(data);

0 commit comments

Comments
 (0)