elastic-apm-node
Version:
The official Elastic APM agent for Node.js
45 lines (37 loc) • 1.05 kB
JavaScript
const os = require('os')
const semver = require('semver')
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
// NOTE: Process CPU metrics are not supported on 6.0.x
if (semver.satisfies(process.versions.node, '>=6.1')) {
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 (let metric of metrics) {
registry.getOrCreateGauge(metric, () => stats.toJSON()[metric])
}
}
registry.getOrCreateGauge(
'system.process.memory.rss.bytes',
() => process.memoryUsage().rss
)
}