add per-collector tick timing logs (debug, >5ms threshold)
CI / test (push) Successful in 1m20s
Release rolling / release (push) Successful in 7m48s

This commit is contained in:
Raven Scott
2026-07-21 13:17:51 -04:00
parent 5cff009820
commit 5f582d2e3d
6 changed files with 21 additions and 0 deletions
+6
View File
@@ -442,6 +442,7 @@ export class MetricsCollector extends EventEmitter {
}
_tick() {
const t0 = performance.now()
try {
const ts = Date.now()
const dtSec = this.lastTs ? (ts - this.lastTs) / 1000 : this.intervalMs / 1000
@@ -507,14 +508,19 @@ export class MetricsCollector extends EventEmitter {
} catch (err) {
log.error('Collector tick failed', { error: err.message })
}
const dur = performance.now() - t0
if (dur > 15) log.debug('tick', { collector: 'main', durMs: Math.round(dur * 10) / 10 })
}
_safeCollect(name, fn) {
const t0 = performance.now()
try {
fn()
} catch (err) {
log.warn(`Collector ${name} failed`, { error: err.message })
}
const dur = performance.now() - t0
if (dur > 5) log.debug(`collect:${name}`, { durMs: Math.round(dur * 10) / 10 })
}
_collectCpuFallback(batch, ts, dtSec) {
+3
View File
@@ -244,6 +244,7 @@ export class CgroupsCollector extends EventEmitter {
}
async _tick() {
const t0 = performance.now()
try {
await this._refreshNames()
} catch {
@@ -383,6 +384,8 @@ export class CgroupsCollector extends EventEmitter {
}
if (batch.length) this.emit('samples', batch)
const dur = performance.now() - t0
if (dur > 10) log.debug('tick', { collector: 'cgroups', durMs: Math.round(dur * 10) / 10 })
}
}
+3
View File
@@ -142,6 +142,7 @@ export class FsStatsCollector extends CollectorPlugin {
}
async collect() {
const t0 = performance.now()
const rows = collectFsStatsData()
if (!rows.length) return []
const ts = Date.now()
@@ -157,6 +158,8 @@ export class FsStatsCollector extends CollectorPlugin {
values: { write_kb: row.write_kb, read_kb: row.read_kb },
})
}
const dur = performance.now() - t0
if (dur > 5) log.debug('tick', { collector: 'fs-stats', durMs: Math.round(dur * 10) / 10 })
return batch
}
}
+3
View File
@@ -240,6 +240,7 @@ export class ProcessCollector extends EventEmitter {
}
_tick() {
const t0 = performance.now()
try {
const procs = listProcStats()
if (!procs) return
@@ -381,6 +382,8 @@ export class ProcessCollector extends EventEmitter {
} catch (err) {
log.warn('Process tick failed', { error: err.message })
}
const dur = performance.now() - t0
if (dur > 10) log.debug('tick', { collector: 'processes', durMs: Math.round(dur * 10) / 10 })
}
}
+3
View File
@@ -230,6 +230,7 @@ export class SensorsCollector extends EventEmitter {
}
_tick() {
const t0 = performance.now()
const ts = Date.now()
const samples = sampleSensors()
if (!samples.length) return
@@ -240,6 +241,8 @@ export class SensorsCollector extends EventEmitter {
values: s.values,
}))
this.emit('samples', batch)
const dur = performance.now() - t0
if (dur > 5) log.debug('tick', { collector: 'sensors', durMs: Math.round(dur * 10) / 10 })
}
}
+3
View File
@@ -122,6 +122,7 @@ export class SocketsCollector extends EventEmitter {
}
_tick() {
const t0 = performance.now()
const ts = Date.now()
const v4 = countTcp('/proc/net/tcp')
const v6 = countTcp('/proc/net/tcp6')
@@ -140,6 +141,8 @@ export class SocketsCollector extends EventEmitter {
},
},
])
const dur = performance.now() - t0
if (dur > 5) log.debug('tick', { collector: 'sockets', durMs: Math.round(dur * 10) / 10 })
}
}