SLO 消耗率监控
🌐 SLO burn rate monitoring
const { createHistogram } = require('node:perf_hooks');
// Track latency with EWMA (half-life 100 samples) and a 200ms SLO threshold
const latency = createHistogram({
halfLife: 100,
threshold: 200_000_000, // 200ms in nanoseconds
});
// Record request latencies...
// Smoothed error rate: probability of exceeding the threshold
console.log(`Error rate: ${(latency.ewmaErrorRate * 100).toFixed(2)}%`);
// Burn rate against a 99.9% SLO
// >1 means the error budget is depleting faster than allowed
const rate = latency.burnRate(0.999);
console.log(`Burn rate: ${rate.toFixed(2)}x`);
// EWMA mean and stddev track the smoothed latency
console.log(`EWMA latency: ${latency.ewmaMean.toFixed(0)}ns`);
console.log(`EWMA stddev: ${latency.ewmaStddev.toFixed(0)}ns`);