lib/metrics/platforms/generic/index.js (25 lines of code) (raw):
/*
* Copyright Elasticsearch B.V. and other contributors where applicable.
* Licensed under the BSD 2-Clause License; you may not use this file except in
* compliance with the BSD 2-Clause License.
*/
'use strict';
const os = require('os');
const Stats = require('./stats');
module.exports = function createSystemMetrics(registry) {
// Base system metrics
registry.getOrCreateGauge(
'system.cpu.total.norm.pct',
require('./system-cpu'),
);
registry.getOrCreateGauge('system.memory.total', () => os.totalmem());
registry.getOrCreateGauge('system.memory.actual.free', () => os.freemem());
// Process metrics
const stats = new Stats();
registry.registerCollector(stats);
const metrics = [
'system.process.cpu.total.norm.pct',
'system.process.cpu.system.norm.pct',
'system.process.cpu.user.norm.pct',
];
for (const metric of metrics) {
registry.getOrCreateGauge(metric, () => stats.toJSON()[metric]);
}
registry.getOrCreateGauge(
'system.process.memory.rss.bytes',
() => process.memoryUsage().rss,
);
};