add per-collector tick timing logs (debug, >5ms threshold)
This commit is contained in:
@@ -442,6 +442,7 @@ export class MetricsCollector extends EventEmitter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_tick() {
|
_tick() {
|
||||||
|
const t0 = performance.now()
|
||||||
try {
|
try {
|
||||||
const ts = Date.now()
|
const ts = Date.now()
|
||||||
const dtSec = this.lastTs ? (ts - this.lastTs) / 1000 : this.intervalMs / 1000
|
const dtSec = this.lastTs ? (ts - this.lastTs) / 1000 : this.intervalMs / 1000
|
||||||
@@ -507,14 +508,19 @@ export class MetricsCollector extends EventEmitter {
|
|||||||
} catch (err) {
|
} catch (err) {
|
||||||
log.error('Collector tick failed', { error: err.message })
|
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) {
|
_safeCollect(name, fn) {
|
||||||
|
const t0 = performance.now()
|
||||||
try {
|
try {
|
||||||
fn()
|
fn()
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
log.warn(`Collector ${name} failed`, { error: err.message })
|
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) {
|
_collectCpuFallback(batch, ts, dtSec) {
|
||||||
|
|||||||
@@ -244,6 +244,7 @@ export class CgroupsCollector extends EventEmitter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async _tick() {
|
async _tick() {
|
||||||
|
const t0 = performance.now()
|
||||||
try {
|
try {
|
||||||
await this._refreshNames()
|
await this._refreshNames()
|
||||||
} catch {
|
} catch {
|
||||||
@@ -383,6 +384,8 @@ export class CgroupsCollector extends EventEmitter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (batch.length) this.emit('samples', batch)
|
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 })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -142,6 +142,7 @@ export class FsStatsCollector extends CollectorPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async collect() {
|
async collect() {
|
||||||
|
const t0 = performance.now()
|
||||||
const rows = collectFsStatsData()
|
const rows = collectFsStatsData()
|
||||||
if (!rows.length) return []
|
if (!rows.length) return []
|
||||||
const ts = Date.now()
|
const ts = Date.now()
|
||||||
@@ -157,6 +158,8 @@ export class FsStatsCollector extends CollectorPlugin {
|
|||||||
values: { write_kb: row.write_kb, read_kb: row.read_kb },
|
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
|
return batch
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -240,6 +240,7 @@ export class ProcessCollector extends EventEmitter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_tick() {
|
_tick() {
|
||||||
|
const t0 = performance.now()
|
||||||
try {
|
try {
|
||||||
const procs = listProcStats()
|
const procs = listProcStats()
|
||||||
if (!procs) return
|
if (!procs) return
|
||||||
@@ -381,6 +382,8 @@ export class ProcessCollector extends EventEmitter {
|
|||||||
} catch (err) {
|
} catch (err) {
|
||||||
log.warn('Process tick failed', { error: err.message })
|
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 })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -230,6 +230,7 @@ export class SensorsCollector extends EventEmitter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_tick() {
|
_tick() {
|
||||||
|
const t0 = performance.now()
|
||||||
const ts = Date.now()
|
const ts = Date.now()
|
||||||
const samples = sampleSensors()
|
const samples = sampleSensors()
|
||||||
if (!samples.length) return
|
if (!samples.length) return
|
||||||
@@ -240,6 +241,8 @@ export class SensorsCollector extends EventEmitter {
|
|||||||
values: s.values,
|
values: s.values,
|
||||||
}))
|
}))
|
||||||
this.emit('samples', batch)
|
this.emit('samples', batch)
|
||||||
|
const dur = performance.now() - t0
|
||||||
|
if (dur > 5) log.debug('tick', { collector: 'sensors', durMs: Math.round(dur * 10) / 10 })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -122,6 +122,7 @@ export class SocketsCollector extends EventEmitter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_tick() {
|
_tick() {
|
||||||
|
const t0 = performance.now()
|
||||||
const ts = Date.now()
|
const ts = Date.now()
|
||||||
const v4 = countTcp('/proc/net/tcp')
|
const v4 = countTcp('/proc/net/tcp')
|
||||||
const v6 = countTcp('/proc/net/tcp6')
|
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 })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user