Cache cpuidle names (was re-reading name sysfs every tick × cores) Cache CPU sysfs dir list + register cpufreq/throttle once Map for per-core prev lookups (was O(n²) .find) Dedupe meminfo/vmstat once per tick Cache iface speed/duplex/mtu/qlen (30s) Cache inotify limits (30s) Gate registerChart for IRQs, cpuidle, peardock mapped charts Remove leftover profile() stderr timers Cache os.cpus().length in docker collector Grow fd-cache buffer past 64KB for /proc/interrupts etc.
48 lines
1.5 KiB
JavaScript
48 lines
1.5 KiB
JavaScript
import test from 'brittle'
|
|
import { MORE_STATIC_CHARTS } from '../shared/metrics-more.js'
|
|
import { CHART_BY_ID, getAllChartDefs } from '../shared/metrics.js'
|
|
import { parseSoftirqs, parseConntrack, parseSnmp6 } from '../server/services/collectors/host-more.js'
|
|
import { MetricsCollector } from '../server/services/collector.js'
|
|
|
|
test('more static charts merged', (t) => {
|
|
t.ok(MORE_STATIC_CHARTS.length > 15)
|
|
for (const id of [
|
|
'mem.directmaps',
|
|
'system.softirqs',
|
|
'net.conntrack',
|
|
'ipv6.packets',
|
|
'peardata.cpu',
|
|
'system.power',
|
|
]) {
|
|
t.ok(CHART_BY_ID.has(id), id)
|
|
}
|
|
t.ok(getAllChartDefs().length > 80)
|
|
})
|
|
|
|
test('host-more parsers', (t) => {
|
|
const soft = parseSoftirqs()
|
|
t.ok(typeof soft === 'object')
|
|
const ct = parseConntrack()
|
|
t.ok(typeof ct.entries === 'number')
|
|
t.ok(typeof parseSnmp6() === 'object')
|
|
})
|
|
|
|
test('collector second tick includes deep/more charts on Linux', async (t) => {
|
|
if (process.platform !== 'linux') {
|
|
t.pass('linux-only')
|
|
return
|
|
}
|
|
const c = new MetricsCollector({ intervalMs: 40 })
|
|
/** @type {Set<string>} */
|
|
const charts = new Set()
|
|
c.on('samples', (batch) => {
|
|
for (const s of batch) charts.add(s.chart)
|
|
})
|
|
c.start()
|
|
await new Promise((r) => setTimeout(r, 120))
|
|
c.stop()
|
|
t.ok(charts.has('system.cpu'))
|
|
// softirqs / conntrack may be empty arrays of zeros but charts should emit
|
|
t.ok(charts.has('system.softirqs') || charts.has('net.conntrack') || charts.has('mem.directmaps'))
|
|
})
|