UNPKG

@ca-apm/native-metrics

Version:

Monitor Native matrics like GC and Event loop stats

43 lines (36 loc) 1.64 kB
/** * 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(); }); };