@ca-apm/native-metrics
Version:
Monitor Native matrics like GC and Event loop stats
43 lines (36 loc) • 1.64 kB
JavaScript
/**
* Copyright (c) 2015 CA. All rights reserved.
*
* This software and all information contained therein is confidential and proprietary and
* shall not be duplicated, used, disclosed or disseminated in any way except as authorized
* by the applicable license agreement, without the express written permission of CA. All
* authorized reproductions must be marked with this language.
*
* EXCEPT AS SET FORTH IN THE APPLICABLE LICENSE AGREEMENT, TO THE EXTENT
* PERMITTED BY APPLICABLE LAW, CA PROVIDES THIS SOFTWARE WITHOUT WARRANTY
* OF ANY KIND, INCLUDING WITHOUT LIMITATION, ANY IMPLIED WARRANTIES OF
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT WILL CA BE
* LIABLE TO THE END USER OR ANY THIRD PARTY FOR ANY LOSS OR DAMAGE, DIRECT OR
* INDIRECT, FROM THE USE OF THIS SOFTWARE, INCLUDING WITHOUT LIMITATION, LOST
* PROFITS, BUSINESS INTERRUPTION, GOODWILL, OR LOST DATA, EVEN IF CA IS
* EXPRESSLY ADVISED OF SUCH LOSS OR DAMAGE.
*/
var gc = (require('@sematext/gc-stats'))();
var heap = require('ca-apm-probe/lib/heap');
var os = require('os');
var osScope = os.hostname();
var processScope = osScope + ' - Process[' + process.pid + ']';
var gcstats = [];
exports.init = function(agent) {
gc.on('stats', function (stats) {
var len = gcstats.push(stats.after.usedHeapSize);
var total = gcstats.reduce(function(a, b) { return a + b });
var baseline = total / len;
agent.metric(processScope, 'GC Full. V8 heap used', baseline, 'Bytes');
if (len > 10) {
gcstats.shift(); // Sliding window.
}
// collect updated heap metrics after gc
heap.collectHeap();
});
};